:root{--blush: #f6e7e1;--blush-deep: #e8b4a0;--terracotta: #c97b63;--terracotta-deep: #b5654d;--sage: #8fa68a;--sage-deep: #6f8a69;--cream: #fdf8f4;--ink: #4a3b35;--ink-soft: #7a675f;--gold: #d9a566;--white: #ffffff;--shadow: 0 18px 40px -18px rgba(120, 80, 60, .45);--radius: 22px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;-webkit-tap-highlight-color:transparent}body{font-family:Quicksand,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:linear-gradient(160deg,#fdf8f4,#f9ece6 45%,#f1ddd3);background-attachment:fixed;min-height:100vh;min-height:100dvh;overflow-x:hidden}#app{position:relative;width:100%;max-width:520px;margin:0 auto;min-height:100vh;min-height:100dvh}.screen{display:none;min-height:100vh;min-height:100dvh;padding:28px 24px calc(34px + env(safe-area-inset-bottom));animation:fadeUp .55s ease both}.screen.active{display:flex;flex-direction:column}.screen-inner{width:100%;margin:auto 0;display:flex;flex-direction:column;gap:18px}.screen-inner.center{text-align:center;align-items:center}.center{text-align:center}.eyebrow{text-transform:uppercase;letter-spacing:.28em;font-size:.72rem;font-weight:600;color:var(--terracotta);opacity:.85}.display{font-family:Playfair Display,serif;font-weight:600;font-size:clamp(3rem,18vw,4.4rem);line-height:1;color:var(--terracotta-deep);letter-spacing:-.01em}.title{font-family:Playfair Display,serif;font-weight:600;font-size:clamp(1.8rem,8vw,2.5rem);line-height:1.12;color:var(--ink)}.title .accent{color:var(--terracotta);font-style:italic}.lede{font-size:1.12rem;color:var(--ink-soft);line-height:1.55;font-weight:500}.body{font-size:1.04rem;line-height:1.6;color:var(--ink-soft);font-weight:500;max-width:38ch}.center .body{margin-inline:auto}.body.small{font-size:.92rem;opacity:.9}.hint{font-size:.82rem;color:var(--ink-soft);opacity:.7;font-weight:500}.btn{font-family:inherit;font-weight:700;font-size:1.06rem;border:none;border-radius:100px;padding:17px 30px;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease,background .2s ease;width:100%;max-width:360px}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(135deg,var(--terracotta) 0%,var(--terracotta-deep) 100%);color:#fff;box-shadow:var(--shadow)}.btn-ghost{background:#ffffffb3;color:var(--terracotta-deep);border:1.5px solid rgba(201,123,99,.35)}.btn-arrow{display:inline-block;transition:transform .2s ease}.btn:hover .btn-arrow{transform:translate(4px)}.stack{display:flex;flex-direction:column;gap:12px;width:100%;align-items:center}.big-emoji{font-size:4.6rem;line-height:1}.float-hearts{display:flex;gap:10px;font-size:1.6rem;margin-bottom:4px}.float-hearts span{animation:bob 3s ease-in-out infinite}.float-hearts span:nth-child(2){animation-delay:.3s}.float-hearts span:nth-child(3){animation-delay:.6s}.float-hearts span:nth-child(4){animation-delay:.9s}.float-hearts span:nth-child(5){animation-delay:1.2s}.pop{animation:pop .6s cubic-bezier(.18,.89,.32,1.28) both}.float{animation:bob 3.5s ease-in-out infinite}.quiz-top{display:flex;align-items:center;gap:12px;padding-bottom:8px}.back-btn{background:#ffffffb3;border:none;width:40px;height:40px;border-radius:50%;font-size:1.2rem;color:var(--terracotta-deep);cursor:pointer;flex-shrink:0;transition:transform .15s ease,opacity .2s ease}.back-btn:active{transform:scale(.9)}.back-btn:disabled{opacity:0;pointer-events:none}.dev-back-button{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:20;border:0;border-radius:999px;padding:10px 14px;background:#24352a;color:#fff;font:700 .82rem/1 Quicksand,sans-serif;box-shadow:0 8px 18px #24352a4d;cursor:pointer}.dev-back-button:disabled{opacity:.4;cursor:default}.dev-back-button:not(:disabled):active{transform:scale(.96)}.progress{flex:1;height:8px;background:#c97b632e;border-radius:100px;overflow:hidden}.progress-bar{height:100%;width:12%;background:linear-gradient(90deg,var(--sage),var(--terracotta));border-radius:100px;transition:width .45s cubic-bezier(.22,1,.36,1)}.progress-count{font-size:.8rem;font-weight:700;color:var(--terracotta);flex-shrink:0;min-width:30px;text-align:right}.quiz-step{animation:fadeUp .4s ease both}.q-head{margin-bottom:6px}.q-step{font-size:.78rem;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--terracotta);opacity:.8}.q-title{font-family:Playfair Display,serif;font-size:clamp(1.55rem,7vw,2rem);font-weight:600;line-height:1.15;color:var(--ink);margin-top:6px}.q-sub{font-size:.95rem;color:var(--ink-soft);font-weight:500;margin-top:8px}.options{display:flex;flex-direction:column;gap:12px;margin-top:22px}.option{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:#ffffffc7;border:2px solid transparent;border-radius:var(--radius);padding:16px 18px;cursor:pointer;font-family:inherit;font-size:1.04rem;font-weight:600;color:var(--ink);transition:transform .15s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease;box-shadow:0 6px 18px -12px #78503c66}.option:active{transform:scale(.98)}.option.selected{border-color:var(--terracotta);background:#fff;box-shadow:0 12px 26px -14px #c97b6399}.option-emoji{font-size:1.8rem;flex-shrink:0}.option-text{display:flex;flex-direction:column;gap:2px}.option-text small{font-weight:500;color:var(--ink-soft);font-size:.82rem}.option .check{margin-left:auto;width:24px;height:24px;border-radius:50%;border:2px solid rgba(201,123,99,.4);flex-shrink:0;display:grid;place-items:center;color:#fff;font-size:.8rem;transition:background .2s ease,border-color .2s ease}.option.selected .check{background:var(--terracotta);border-color:var(--terracotta)}.options.is-spinning .option{pointer-events:none;cursor:default}.options.is-spinning .option.selected{transform:scale(1.03);box-shadow:0 14px 30px -12px #c97b63b3}.spin-hint{animation:pulseSoft 1s ease-in-out infinite}@keyframes pulseSoft{0%,to{opacity:.7}50%{opacity:1}}textarea.free-input{width:100%;margin-top:20px;border:2px solid rgba(201,123,99,.25);border-radius:var(--radius);padding:16px;font-family:inherit;font-size:1rem;color:var(--ink);background:#fffc;resize:none;min-height:120px;line-height:1.5}textarea.free-input:focus{outline:none;border-color:var(--terracotta);background:#fff}.q-next-wrap{margin-top:24px;display:flex;justify-content:center}.btn:disabled{opacity:.45;cursor:default;box-shadow:none}.btn:disabled:active{transform:none}.cal{display:flex;flex-direction:column;gap:16px;margin-top:20px}.cal-month{background:#fff9;border:1px solid rgba(201,123,99,.14);border-radius:var(--radius);padding:14px 12px 12px;box-shadow:0 8px 22px -16px #78503c80}.cal-month.is-month-locked{opacity:.5}.cal-mhead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.cal-mname{font-family:Playfair Display,serif;font-weight:600;font-size:1.15rem;color:var(--ink);text-transform:capitalize}.cal-lock{font-size:.68rem;font-weight:700;color:var(--terracotta-deep);background:#c97b631f;padding:3px 10px;border-radius:100px;white-space:nowrap}.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.cal-weekdays{margin-bottom:6px}.cal-weekdays span{text-align:center;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);opacity:.7}.cal-day{aspect-ratio:1 / 1;display:grid;place-items:center;font-family:inherit;font-size:.9rem;font-weight:600;border:none;background:transparent;color:var(--ink);border-radius:12px;padding:0}.cal-day.is-empty{visibility:hidden}.cal-day.is-plain{color:var(--ink-soft);opacity:.4}.cal-day.is-locked{opacity:.35}.cal-day.is-open{cursor:pointer;background:#8fa68a2e;color:var(--sage-deep);transition:transform .12s ease,background .2s ease,color .2s ease}.cal-day.is-open:active{transform:scale(.9)}.cal-day.is-selected{background:var(--terracotta);color:#fff;box-shadow:0 8px 18px -8px #c97b63b3}.cal-hint{font-size:.86rem;color:var(--ink-soft);font-weight:500;text-align:center;margin-bottom:2px}.cal-hint strong{color:var(--terracotta-deep);font-weight:700}.cal-legend{font-size:.78rem;color:var(--ink-soft);opacity:.85;font-weight:500;text-align:center;margin-top:2px}.q-hint-multi{text-align:center;font-size:.82rem;color:var(--ink-soft);opacity:.8;margin-top:14px;font-weight:500}.summary-card{background:#ffffffd9;border-radius:var(--radius);padding:8px 6px;box-shadow:var(--shadow);margin:8px 0 4px}.summary-row{display:flex;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(201,123,99,.12);text-align:left}.summary-row:last-child{border-bottom:none}.summary-icon{font-size:1.4rem;flex-shrink:0}.summary-label{font-size:.74rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700;color:var(--terracotta);margin-bottom:2px}.summary-value{font-weight:600;color:var(--ink);line-height:1.4}.timeline{display:flex;align-items:flex-start;justify-content:center;gap:6px;max-width:300px;margin:0 auto 10px}.tl-node{display:flex;flex-direction:column;align-items:center;gap:7px;width:96px}.tl-dot{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:1.3rem;background:#ffffffb3;border:2px solid rgba(201,123,99,.28);box-shadow:0 6px 16px -10px #78503c80;opacity:.6;filter:saturate(.6);transition:transform .3s ease,opacity .3s ease,border-color .3s ease}.tl-label{font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);opacity:.65}.tl-line{flex:1;max-width:64px;height:3px;margin-top:22px;border-radius:3px;background:#c97b6333}.tl-line.is-filled{background:linear-gradient(90deg,var(--sage),var(--terracotta))}.tl-node.is-active .tl-dot{opacity:1;filter:none;border-color:var(--terracotta);background:#fff;box-shadow:0 10px 22px -10px #c97b6399;transform:scale(1.06)}.tl-node.is-active .tl-label{color:var(--terracotta);opacity:1}.tl-node.is-done .tl-dot{opacity:1;filter:none;border-color:var(--sage-deep)}.tl-node.is-done .tl-label{opacity:.85}.moment-head{text-align:center}.moment-head .body{margin-inline:auto;margin-top:14px}.chat{position:relative;background:#ffffff80;border:1px solid rgba(201,123,99,.14);border-radius:var(--radius);padding:16px 14px 14px;overflow:hidden;box-shadow:inset 0 1px #fff9,0 14px 34px -22px #78503c8c}.chat-watermark{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.wm-date{font-family:Playfair Display,serif;font-size:clamp(2.4rem,15vw,3.6rem);font-weight:600;letter-spacing:.05em;color:var(--terracotta);opacity:.08;transform:rotate(-6deg);white-space:nowrap}.chat-thread{position:relative;display:flex;flex-direction:column;gap:10px;min-height:196px}.chat-day{align-self:center;font-size:.68rem;font-weight:700;color:var(--ink-soft);background:#ffffffd9;padding:4px 12px;border-radius:100px;box-shadow:0 3px 8px -5px #78503c66;margin-bottom:2px}.bubble{max-width:82%;padding:9px 13px 7px;border-radius:16px;font-size:.98rem;line-height:1.42;box-shadow:0 6px 16px -12px #78503c80}.bubble.pending{opacity:0;transform:translateY(8px) scale(.96)}.bubble.show{animation:bubblePop .42s cubic-bezier(.18,.89,.32,1.28) forwards}.bubble.in{align-self:flex-start;background:#fff;color:var(--ink);border-bottom-left-radius:5px}.bubble.out{align-self:flex-end;background:linear-gradient(135deg,#dcefd3,#cbe6bf);color:#35492f;border-bottom-right-radius:5px}.bubble-name{display:block;font-size:.72rem;font-weight:700;color:var(--terracotta);margin-bottom:2px}.bubble-text{margin:0}.bubble-meta{display:block;text-align:right;font-size:.62rem;opacity:.5;margin-top:3px}.bubble .ticks{margin-left:3px;color:#53a3d6;opacity:.85}.typing-bubble{padding:12px 14px}.typing{display:inline-flex;gap:4px;align-items:center}.typing i{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.4;animation:typingDot 1s infinite ease-in-out}.typing-bubble.in{color:var(--ink-soft)}.typing-bubble.out{color:#4a6b40}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}.news-card{background:#ffffffe6;border:1px solid rgba(201,123,99,.16);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);text-align:left}.reveal-card{opacity:0;transform:translateY(14px) scale(.98)}.reveal-card.show{animation:cardReveal .6s cubic-bezier(.18,.89,.32,1.28) forwards}.news-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}.news-logo{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex-shrink:0;font-family:Playfair Display,serif;font-weight:700;font-size:1.05rem;color:#fff;background:linear-gradient(135deg,#2f8fd6,#1f6fb0);box-shadow:0 8px 18px -10px #1f6fb0b3}.news-org{font-weight:700;color:var(--ink);font-size:.98rem;line-height:1.2}.news-sub{font-size:.8rem;color:var(--ink-soft)}.news-title{font-family:Playfair Display,serif;font-size:1.5rem;font-weight:600;color:var(--ink);margin:2px 0 6px}.news-body{font-size:.95rem;line-height:1.55;color:var(--ink-soft)}.news-chip{display:inline-block;margin-top:12px;font-size:.74rem;font-weight:700;color:#1f6fb0;background:#2f8fd61a;padding:6px 14px;border-radius:100px}.travel{position:fixed;inset:0;z-index:60;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;background:linear-gradient(160deg,#fdf8f4,#f9ece6 45%,#f1ddd3);animation:travelIn .25s ease both}.travel-scene{position:relative;width:100%;height:120px}.travel-road{position:absolute;left:0;right:0;top:50%;height:4px;border-radius:4px;background:#c97b6333;overflow:hidden}.travel-road:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,var(--terracotta) 0 18px,transparent 18px 42px);opacity:.45}.travel-car{position:absolute;top:50%;left:0;display:flex;align-items:flex-end;gap:2px;animation:carDrive 2.45s linear .3s both}.travel-vehicle{animation:carBob .32s ease-in-out infinite}.travel-emoji{display:inline-block;font-size:3.4rem;line-height:1;transform:scaleX(-1)}.travel-puff{font-size:1.7rem;line-height:1;opacity:.7;animation:puff .5s ease-in-out infinite}.travel-puff-2{font-size:1.2rem;opacity:.4;animation-delay:.18s}.travel-text{font-family:Playfair Display,serif;font-size:1.4rem;color:var(--terracotta-deep);text-align:center;padding:0 24px;animation:fadeUp .5s ease .3s both}#confetti-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:50}.confetti{position:absolute;top:-14px;width:10px;height:14px;border-radius:2px;will-change:transform,opacity;animation:fall linear forwards}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes fall{to{transform:translateY(105vh) rotate(540deg);opacity:.9}}@keyframes bubblePop{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes typingDot{0%,60%,to{transform:translateY(0);opacity:.35}30%{transform:translateY(-4px);opacity:.8}}@keyframes cardReveal{to{opacity:1;transform:translateY(0) scale(1)}}@keyframes travelIn{0%{opacity:0}to{opacity:1}}@keyframes carDrive{0%{transform:translate(-32vw,-100%);animation-timing-function:cubic-bezier(.15,.6,.3,1)}42%{transform:translate(34vw,-100%);animation-timing-function:ease-out}60%{transform:translate(38vw,-100%);animation-timing-function:cubic-bezier(.7,0,.85,0)}to{transform:translate(128vw,-100%)}}@keyframes carBob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes puff{0%,to{transform:translate(0) scale(1);opacity:.65}50%{transform:translate(-7px) scale(1.15);opacity:.3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
