:root{--color-traffic-green:#4caf50;--color-traffic-green-inner:#4caf50f2;--color-traffic-green-outer:#4caf5099;--color-traffic-green-shadow:#4caf504d;--color-traffic-yellow:#ffc107;--color-traffic-yellow-inner:#ffc107f2;--color-traffic-yellow-outer:#ffc10799;--color-traffic-yellow-shadow:#ffc1074d;--color-traffic-red:#e85d5d;--color-traffic-red-inner:#e85d5df2;--color-traffic-red-outer:#e85d5d99;--color-traffic-red-shadow:#e85d5d4d;--color-budget-needs:#5b8c5a;--color-budget-wants:#e8a838;--color-budget-debt:#e85d5d;--color-budget-savings:#4a90c4;--color-cal-payday:#4caf50;--color-cal-bill:#e85d5d;--color-cal-today-bg:#4caf501f;--color-cal-today-border:#4caf5066;--color-money-in:#43a047;--color-money-out:#c62828}:root,:root[data-theme=lagoon-light]{--color-primary:#1a5653;--color-on-primary:#f5e6d0;--color-bg:#f5e6d0;--color-accent:#7ecbc4;--color-danger:#e85d5d;--color-success:#e8b84b;--color-text:#2c3e3d;--color-surface:#ffffffb3;--color-surface-hover:#ffffffe6;--color-card:#fdfaf5;--color-card-border:#e0ceb0;--color-link:#1a5653;--color-border:#e8d8c0;--color-header:#1a5653;--color-header-text:#f5e6d0}:root[data-theme=midnight-dark]{--color-primary:#d4a843;--color-on-primary:#1b2e1b;--color-bg:#121a12;--color-accent:#d4a843;--color-danger:#c94545;--color-success:#4a7a4a;--color-text:#f0e8d8;--color-surface:#ffffff0d;--color-surface-hover:#ffffff1a;--color-card:#1e2a1e;--color-card-border:#ffffff1f;--color-link:#d4a843;--color-border:#ffffff1a;--color-header:#1b2e1b;--color-header-text:#d4a843;--color-money-in:#66bb6a;--color-money-out:#ff7043}:root[data-theme=savanna-light]{--color-primary:#c4593a;--color-on-primary:#fff5e8;--color-bg:#fff5e8;--color-accent:#7ba07b;--color-danger:#8b2e1e;--color-success:#e8a832;--color-text:#3a2e28;--color-surface:#fffc;--color-surface-hover:#fff;--color-card:#fdfaf5;--color-card-border:#eaddc8;--color-link:#c4593a;--color-border:#f0e4d0;--color-header:#c4593a;--color-header-text:#fff5e8}:root[data-theme=savanna-dark]{--color-primary:#8b3a24;--color-on-primary:#fff5e8;--color-bg:#1c1410;--color-accent:#5a8a5a;--color-danger:#c94545;--color-success:#c47e28;--color-text:#f5ead8;--color-surface:#ffffff0d;--color-surface-hover:#ffffff1a;--color-card:#2a1e18;--color-card-border:#ffffff1f;--color-link:#d4896a;--color-border:#ffffff1a;--color-header:#5c2e1c;--color-header-text:#f5ead8;--color-money-in:#66bb6a;--color-money-out:#ff7043}*{box-sizing:border-box;margin:0;padding:0;font-family:inherit}:focus-visible,button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.skip-link{z-index:99999;background:var(--color-text);color:var(--color-bg);border-radius:0 0 8px 8px;padding:12px 24px;font-size:.95rem;font-weight:700;text-decoration:none;transition:top .2s;position:absolute;top:-100px;left:16px}.skip-link:focus{top:0}html{scroll-behavior:smooth;font-size:112.5%}body{background-color:var(--color-bg);width:100%;height:100%;color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:Quicksand,system-ui,sans-serif;font-size:1.05rem;line-height:1.7;transition:background-color .3s,color .3s}h1,h2,h3,h4{letter-spacing:-.025em;font-family:Quicksand,system-ui,sans-serif;line-height:1.2}#root{width:100%;height:100%}.chat-overlay{z-index:9999;-webkit-backdrop-filter:blur(4px);overscroll-behavior:contain;background:#00000059;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.chat-container{background:var(--color-card);border:1px solid var(--color-card-border);flex-direction:column;width:100%;max-width:500px;height:100dvh;display:flex;overflow:hidden}@media (width>=600px){.chat-overlay{align-items:center;padding:24px}.chat-container{border-radius:16px;height:auto;max-height:min(800px,90dvh);box-shadow:0 12px 40px #0003}}.hero-circle-btn:active>div:first-child{transform:scale(.95)!important;box-shadow:0 2px 8px #0000004d,inset 0 2px 8px #00000040!important}.mascot-anim-idle{animation:3s ease-in-out infinite mascot-idle-breathe}@keyframes mascot-idle-breathe{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-3px)scale(1.02)}}.mascot-anim-waving{animation:1.2s ease-in-out infinite mascot-waving-rock}@keyframes mascot-waving-rock{0%,to{transform:rotate(0)scale(1)}25%{transform:rotate(3deg)scale(1.03)}75%{transform:rotate(-3deg)scale(1.03)}}.mascot-anim-listening{animation:2s ease-in-out infinite mascot-listening-tilt}@keyframes mascot-listening-tilt{0%,to{transform:rotate(0)}50%{transform:rotate(5deg)translate(2px)}}.mascot-anim-thinking{animation:2.5s ease-in-out infinite mascot-thinking-sway}@keyframes mascot-thinking-sway{0%,to{transform:rotate(0)translateY(0)}25%{transform:rotate(2deg)translateY(-2px)}75%{transform:rotate(-2deg)translateY(-2px)}}.mascot-anim-celebrating{animation:.6s ease-in-out infinite mascot-celebrating-bounce}@keyframes mascot-celebrating-bounce{0%,to{transform:translateY(0)scale(1)}40%{transform:translateY(-10px)scale(1.08)}60%{transform:translateY(-5px)scale(1.04)}}.mascot-anim-sleeping{animation:4s ease-in-out infinite mascot-sleeping-bob}@keyframes mascot-sleeping-bob{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(2px)scale(.98)}}.mascot-zzz-overlay{pointer-events:none;flex-direction:column;align-items:flex-end;display:flex;position:absolute;top:0;right:-4px}.mascot-zzz-overlay span{color:var(--color-primary,#d4a843);font-weight:700;line-height:1}.mascot-zzz-overlay span:first-child{font-size:.5em;animation:2.5s ease-in-out infinite mascot-zzz-float}.mascot-zzz-overlay span:nth-child(2){font-size:.65em;animation:2.5s ease-in-out .4s infinite mascot-zzz-float}.mascot-zzz-overlay span:nth-child(3){font-size:.8em;animation:2.5s ease-in-out .8s infinite mascot-zzz-float}@keyframes mascot-zzz-float{0%,to{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-6px)}}.mascot-anim-concerned{animation:.15s ease-in-out infinite mascot-concerned-tremble}@keyframes mascot-concerned-tremble{0%,to{transform:translate(0)}25%{transform:translate(-1.5px)rotate(-.5deg)}75%{transform:translate(1.5px)rotate(.5deg)}}.mascot-anim-proud{animation:3s ease-in-out infinite mascot-proud-puff}@keyframes mascot-proud-puff{0%,to{transform:scale(1)translateY(0)}30%{transform:scale(1.06)translateY(-3px)}60%{transform:scale(1.03)translateY(-1px)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.2)}}@keyframes fabSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes flash-update{0%{box-shadow:0 0 0 3px var(--color-traffic-green-shadow), 0 12px 40px #00000026;background-color:var(--color-cal-today-bg)}to{background-color:var(--color-surface);box-shadow:0 12px 40px #00000026}}.card-flash-update{animation:7s ease-out forwards flash-update}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-slide-up{animation:.6s cubic-bezier(.16,1,.3,1) forwards fadeSlideUp}.footer{text-align:center;color:var(--color-text);border-top:1px solid var(--color-border);opacity:.6;margin-top:32px;padding:48px 16px;font-family:Quicksand,sans-serif;font-size:.85rem}.mobile-only{display:none}.desktop-only{display:block}.responsive-grid-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=768px){.mobile-only{display:block}.desktop-only{display:none}.responsive-grid-2{grid-template-columns:1fr}}@media (width<=640px){.insight-card-header{padding:14px 16px 12px!important}.insight-card-content{padding:16px!important}.insight-card-action{padding:0 16px 16px!important}}.calendar-grid{background-color:var(--color-border);border:1px solid var(--color-border);border-radius:8px;grid-template-columns:repeat(7,1fr);gap:2px;display:grid;overflow:hidden}.agenda-list{flex-direction:column;gap:16px;display:flex}.agenda-day{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:16px}.agenda-day-header{border-bottom:1px solid var(--color-border);color:var(--color-text);margin-bottom:8px;padding-bottom:8px;font-weight:700}.profile-container{background-color:var(--color-border);min-height:calc(100vh - 50px);display:flex}.profile-sidebar{border-right:1px solid var(--color-border);background-color:var(--color-bg);flex-shrink:0;width:220px;height:calc(100vh - 50px);padding:24px 0;position:sticky;top:50px;overflow-y:auto}.profile-nav-button{cursor:pointer;text-align:left;border:none;align-items:center;gap:10px;width:100%;padding:10px 20px;font-family:inherit;font-size:.88rem;display:flex}.profile-main{flex:1;max-width:100%;padding:40px 48px;overflow-y:auto}@media (width<=768px){.profile-container{flex-direction:column}.profile-sidebar{border-right:none;border-bottom:1px solid var(--color-border);white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;flex-direction:row;align-items:center;width:100%;height:auto;padding:8px 16px;display:flex;position:relative;top:0;overflow-x:auto}.profile-sidebar::-webkit-scrollbar{display:none}.profile-nav-button{border-bottom:2px solid #0000;border-radius:16px;width:auto;padding:8px 12px;border-left:none!important}.profile-nav-label{font-size:.8rem}.profile-main{padding:24px 16px}}.glass-overlay{-webkit-backdrop-filter:blur(4px);z-index:9999;background-color:#00000059;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.glass-container{background-color:var(--color-card);-webkit-backdrop-filter:blur(82px);border:1px solid var(--color-card-border);border-radius:16px;flex-direction:column;width:100%;max-width:700px;height:100%;max-height:900px;display:flex;overflow:hidden;box-shadow:0 12px 40px #0003}@media (width<=640px){.glass-overlay{align-items:flex-end;padding:0}.glass-container{border-bottom:none;border-left:none;border-right:none;border-radius:24px 24px 0 0;height:92vh;max-height:92vh}}.mic-button{background-color:var(--color-text);width:48px;height:48px;color:var(--color-bg);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.3rem;transition:background-color .2s,transform .15s;display:flex}.mic-button:hover{transform:scale(1.05)}.mic-button:active{transform:scale(.95)}.mic-button.recording{background-color:var(--color-danger);animation:1.2s ease-in-out infinite mic-pulse}@keyframes mic-pulse{0%,to{box-shadow:0 0 #d9404080}50%{box-shadow:0 0 0 14px #d9404000}}.recording-status{color:var(--color-danger);flex:1;align-items:center;gap:8px;padding:0 12px;font-size:.9rem;font-weight:600;display:flex}.recording-dot{background-color:var(--color-danger);border-radius:50%;width:10px;height:10px;animation:1s ease-in-out infinite recording-blink}@keyframes recording-blink{0%,to{opacity:1}50%{opacity:.3}}.tts-button{border:1px solid var(--color-card-border);background-color:var(--color-surface-hover);-webkit-backdrop-filter:blur(6px);width:44px;height:44px;color:var(--color-text);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:8px;margin-left:12px;font-size:1.2rem;transition:all .2s;display:inline-flex;box-shadow:0 4px 12px #00000026}.tts-button:hover{background-color:var(--color-surface-hover);transform:scale(1.1)translateY(-1px);box-shadow:0 6px 12px #0003}.tts-button.speaking{background-color:var(--color-surface-hover);animation:1.5s ease-in-out infinite tts-glow}@keyframes tts-glow{0%,to{box-shadow:0 0 0 0 var(--color-traffic-green-shadow)}50%{box-shadow:0 0 0 8px #0000}}.turn-counter{background-color:var(--color-surface);color:var(--color-text);letter-spacing:.03em;opacity:.7;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;padding:4px 12px;font-size:.72rem;font-weight:700;display:flex}.turn-counter.final-turn{color:var(--color-danger);opacity:1;background-color:#d940401f}.session-complete{text-align:center;color:var(--color-text);background-color:var(--color-surface);border-top:1px solid var(--color-border);opacity:.7;justify-content:center;align-items:center;padding:16px;font-size:.9rem;font-weight:600;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{body{background-color:var(--color-surface)!important;color:var(--color-text)!important}.no-print{display:none!important}.print-only{display:inline-block!important}@page{size:landscape;margin:1cm}html,body{height:100%!important;overflow:hidden!important}}@keyframes pulseOpacity{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.spinner{animation:1.5s ease-in-out infinite pulseOpacity;display:inline-block}
