.nouri-buddy{display:block;width:140px;height:auto;overflow:visible;flex:0 0 auto}.nb-shadow{fill:#163d2515;transform-origin:center;animation:nb-shadow 4s ease-in-out infinite}.nb-character{transform-box:fill-box;transform-origin:center;animation:nb-float 4s ease-in-out infinite}.nb-leaf{fill:#8ebf5b;stroke:#24533a;stroke-width:3;stroke-linejoin:round}.nb-leaf-light{fill:#c5df7b;opacity:.72}.nb-stem{stroke:#2f6844;stroke-width:9;stroke-linecap:round;fill:none}.nb-sprout{fill:#adc964;stroke:#2f6844;stroke-width:3}.nb-vein{fill:none;stroke:#5c923e;stroke-width:3;stroke-linecap:round;opacity:.7}.nb-arm{stroke:#376f45;stroke-width:10;stroke-linecap:round;fill:none}.nb-foot{stroke:#326440;stroke-width:10;stroke-linecap:round;fill:none}.nb-shoe{fill:#24533a}.nb-eye{fill:#fffef2}.nb-pupil{fill:#133c29}.nb-glint{fill:#fff}.nb-cheek{fill:#eceda2;opacity:.7}.nb-mouth,.nb-brow{fill:none;stroke:#214a32;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}.nb-smile{fill:#214a32;stroke:#214a32;stroke-width:3;stroke-linejoin:round}.nb-mouth-open{fill:#315c35}.nb-sweat{fill:#70c9cf;stroke:#367e8a;stroke-width:2;animation:nb-sweat 2.2s ease-in-out infinite}.nb-rumble{fill:none;stroke:#345e37;stroke-width:3;stroke-linecap:round;animation:nb-rumble 2s ease-in-out infinite}.nb-eyes{transform-box:fill-box;transform-origin:center;animation:nb-blink 5.3s infinite}.nb-wave{transform-box:fill-box;transform-origin:0% 100%;animation:nb-wave 4s ease-in-out infinite}.nouri-buddy[data-mood=sad] .nb-character{animation:nb-sad 5s ease-in-out infinite}.nouri-buddy[data-mood=happy] .nb-character{animation:nb-happy 2s ease-in-out infinite}.nouri-buddy[data-mood=hungry] .nb-character{animation-duration:5s}
@keyframes nb-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}@keyframes nb-happy{0%,60%,100%{transform:translateY(0) rotate(-2deg)}20%{transform:translateY(-8px) rotate(3deg)}40%{transform:translateY(0) rotate(-3deg)}}@keyframes nb-sad{0%,100%{transform:translateY(4px) rotate(-4deg)}50%{transform:translateY(6px) rotate(-2deg)}}@keyframes nb-blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}@keyframes nb-wave{0%,65%,100%{transform:rotate(0)}72%{transform:rotate(12deg)}79%{transform:rotate(-10deg)}86%{transform:rotate(9deg)}}@keyframes nb-shadow{0%,100%{transform:scaleX(1);opacity:.9}50%{transform:scaleX(.88);opacity:.6}}@keyframes nb-sweat{0%,15%{transform:translate(0,-2px);opacity:0}35%{opacity:1}90%,100%{transform:translate(5px,15px);opacity:0}}@keyframes nb-rumble{0%,50%,100%{transform:translateX(0);opacity:.5}60%,80%{transform:translateX(2px);opacity:1}70%,90%{transform:translateX(-2px);opacity:1}}
.buddy-card{display:flex;align-items:center;gap:18px;padding:18px 22px;background:var(--surface);border:1px solid var(--line);border-radius:22px;margin:16px 0 24px}.buddy-card[hidden]{display:none}.buddy-card .nouri-buddy{width:112px}.buddy-card h2{font-size:23px;line-height:1.15;letter-spacing:-.6px;margin:0 0 9px}.buddy-card p{font-size:13px;line-height:1.65;color:var(--text-soft);margin:0 0 12px;max-width:650px}.buddy-card .secondary{min-height:42px;padding:10px 15px;font-size:12px}.buddy-profile{padding:19px 0;border-top:1px solid var(--line)}.buddy-profile h3{font-size:22px;margin:0 0 12px}.buddy-profile .check{display:flex;gap:10px;align-items:center;font-size:14px}.buddy-profile .check input{width:19px;height:19px}.buddy-profile p{font-size:12px;line-height:1.7;color:var(--text-soft)}
.onboarding-buddy{display:flex;align-items:center;gap:16px;margin:0 0 24px}.onboarding-buddy .nouri-buddy{width:108px}.buddy-speech{position:relative;border:1px solid var(--line);border-radius:19px;background:var(--surface);padding:18px 20px;max-width:530px}.buddy-speech b{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-soft)}.buddy-speech p{margin:7px 0 0;color:var(--text);font-size:17px;line-height:1.5;letter-spacing:-.2px}.onboard-copy>h1,.onboard-copy>p:not(.eyebrow){display:none}
.guide-buddy-hero{position:relative;width:150px}.guide-buddy-hero .nouri-buddy{width:140px}.guide-buddy-badge{position:absolute;right:-12px;bottom:18px;width:35px;height:35px;display:grid;place-items:center;padding:8px;background:var(--surface-soft);border:1px solid var(--line);border-radius:15px}.guide-buddy-badge svg{width:100%;height:100%}.guide-day-buddy{display:flex;align-items:center;gap:13px;margin:0 0 20px;padding:10px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface-soft)}.guide-day-buddy .nouri-buddy{width:64px}.guide-day-buddy p{font-size:13px;line-height:1.6;margin:0;color:var(--text)}
[data-theme=dark] .nb-shadow{fill:#0005}
.nb-sparkle{fill:none;stroke:#96b75b;stroke-width:3;stroke-linecap:round}
.member-view:has(#nouriBuddyCard:not([hidden])) .greeting h1,.member-view:has(#nouriBuddyCard:not([hidden])) .greeting>div>p:last-child{display:none}
@media(max-width:650px){.buddy-card{padding:16px;gap:12px}.buddy-card .nouri-buddy{width:84px}.buddy-card h2{font-size:21px}.buddy-card p{font-size:12px}.onboarding-buddy{gap:8px}.onboarding-buddy .nouri-buddy{width:82px}.buddy-speech{padding:15px}.buddy-speech p{font-size:15px}.guide-buddy-hero .nouri-buddy{width:120px}.guide-buddy-hero{width:130px}}
@media(prefers-reduced-motion:reduce){.nouri-buddy *{animation:none!important;transition:none!important}.nb-sweat{opacity:1}}

.buddy-card {
 display: grid;
 grid-template-columns: 92px minmax(0, 1fr);
 align-items: start;
 gap: 16px;
 padding: 18px 22px;
 background: var(--surface);
}
.buddy-card .nouri-buddy {width: 100%}
.buddy-card .nb-character,
.buddy-card .nb-shadow,
.buddy-card .nb-wave {animation-iteration-count: 1}
.buddy-card .buddy-context {
 color: var(--text);
 font-size: 11px;
 letter-spacing: .1em;
 margin-bottom: 6px;
}
.buddy-card h2 {overflow-wrap: anywhere}
.buddy-actions {display: flex; flex-wrap: wrap; align-items: center; gap: 8px}
.buddy-actions button {min-height: 44px; padding: 9px 13px; font-size: 13px}
.buddy-card .buddy-feedback {color: var(--text); font-weight: 700; margin: 9px 0 0}
.buddy-card .buddy-feedback:empty {margin: 0}
#app[data-coach-action=next-week] #weeklyPlanningCard,
#app[data-coach-action=collection] #collectionBanner {display: none}

.workout-coach {
 display: flex;
 align-items: center;
 gap: 10px;
 padding: 8px 12px;
 margin: 12px 0;
 border-radius: 14px;
 border: 1px solid var(--line);
 background: var(--surface);
}
.workout-coach[hidden] {display: none}
.workout-coach .nouri-buddy {width: 39px}
.workout-coach .nb-character,
.workout-coach .nb-shadow {animation: none}
.workout-coach p {margin: 0; font-size: 13px; line-height: 1.45; color: var(--text-soft)}
.workout-coach b {color: var(--text)}

.nouri-buddy[data-scene] .nb-character,
.nouri-buddy[data-scene] .nb-shadow {animation: none}
.nouri-buddy[data-scene] .nb-eyes {animation-duration: 3.4s; animation-iteration-count: 1}
.nouri-buddy[data-scene] .nb-sweat {animation-iteration-count: 2}
.nb-prop-line, .nb-glasses, .nb-book-lines, .nb-cart-grid, .nb-breath, .nb-scale-needle {
 fill: none;
 stroke: #214a32;
 stroke-width: 5;
 stroke-linecap: round;
 stroke-linejoin: round;
}
.nb-prop-light, .nb-scale-dial {fill: #fbf5d9; stroke: #214a32; stroke-width: 4; stroke-linejoin: round}
.nb-sign {transform-origin: 120px 177px; animation: nb-sign-tilt 1.75s ease-in-out 2}
.nb-sign-text {fill: #16432b; font: 900 31px/1 system-ui,sans-serif}
.nb-glasses {stroke-width: 5.5}
.nb-book-lines {stroke: #729258; stroke-width: 3}
.nb-pen {transform-origin: 185px 139px; animation: nb-write 1.18s ease-in-out 3}
.nb-pen-shaft {fill: none; stroke: #175c47; stroke-width: 8; stroke-linecap: round}
.nb-pen-nib {fill: #183d31}
.nouri-buddy[data-scene=train] .nb-character {animation: nb-jog .65s ease-in-out 6}
.nb-stride, .nb-run-arm, .nb-shop-step {transform-box: fill-box; transform-origin: 50% 0%}
.nb-stride, .nb-run-arm {animation: nb-stride .65s ease-in-out 6}
.nb-stride.nb-run-other, .nb-run-arm.nb-run-other {animation-name: nb-stride-other}
.nb-sweatband {fill: #197969; stroke: #174c3c; stroke-width: 3; stroke-linejoin: round}
.nb-band-stripe {fill: none; stroke: #e3f4b2; stroke-width: 4; stroke-linecap: round}
.nb-breath {stroke: #315c35; stroke-width: 3.5; animation: nb-puff .92s ease-out 4}
.nb-pant {transform-box: fill-box; transform-origin: center; animation: nb-pant .92s ease-in-out 4}
.nb-cart-basket {fill: #def3b0; stroke: #285739; stroke-width: 5; stroke-linejoin: round}
.nb-cart-grid {stroke: #588c60; stroke-width: 3.5}
.nb-wheel {transform-box: fill-box; transform-origin: center; animation: nb-roll 1.15s linear 3}
.nb-wheel circle {fill: #254a35; stroke: #afd17d; stroke-width: 2}
.nb-wheel path {stroke: #def3b0; stroke-width: 2; stroke-linecap: round}
.nb-shop-step {animation: nb-stride .86s ease-in-out 4}
.nb-shop-step.nb-run-other {animation-name: nb-stride-other}
.nouri-buddy[data-scene=shop] .nb-character {animation: nb-push-cart .86s ease-in-out 4}
.nb-scale-body {fill: #497857; stroke: #1e4d34; stroke-width: 4}
.nb-scale-needle {stroke: #4b7341; stroke-width: 3; transform-origin: 122px 222px; animation: nb-weigh 2s ease-out 1}
.nouri-buddy[data-scene=progress] .nb-character {animation: nb-balance 1.2s ease-in-out 1}
@keyframes nb-sign-tilt {0%,100%{transform:rotate(0)}45%{transform:translateY(-4px) rotate(-7deg)}70%{transform:rotate(4deg)}}
@keyframes nb-write {0%,100%{transform:rotate(0)}30%{transform:rotate(-12deg)}60%{transform:rotate(2deg)}80%{transform:rotate(-8deg)}}
@keyframes nb-jog {0%,100%{transform:translateY(0) rotate(3deg)}25%,75%{transform:translateY(-6px) rotate(5deg)}50%{transform:translateY(0) rotate(3deg)}}
@keyframes nb-stride {0%,100%{transform:rotate(0)}25%{transform:rotate(19deg)}75%{transform:rotate(-17deg)}}
@keyframes nb-stride-other {0%,100%{transform:rotate(0)}25%{transform:rotate(-17deg)}75%{transform:rotate(19deg)}}
@keyframes nb-puff {0%,100%{transform:translateX(0);opacity:.7}55%{transform:translateX(17px);opacity:.15}}
@keyframes nb-pant {0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.3)}}
@keyframes nb-roll {to{transform:rotate(360deg)}}
@keyframes nb-push-cart {0%,100%{transform:translateX(0)}50%{transform:translate(4px,-2px)}}
@keyframes nb-weigh {0%{transform:rotate(-55deg)}48%{transform:rotate(17deg)}69%{transform:rotate(-7deg)}100%{transform:rotate(0)}}
@keyframes nb-balance {0%,100%{transform:rotate(0)}38%{transform:translateY(1px) rotate(-3deg)}67%{transform:rotate(2deg)}}

.today-coach-label .nouri-buddy[data-scene=today] {width: 64px; height: auto}
.workout-coach .nouri-buddy[data-scene=train] {width: 61px}
.shop-receipt-identity {display: flex; align-items: center; justify-content: space-between; gap: 12px}
.shop-receipt-identity > div {min-width: 0}
#shoppingBuddy {flex: 0 0 auto}
#shoppingBuddy[hidden] {display: none}
#shoppingBuddy .nouri-buddy {width: clamp(68px, 21vw, 96px)}
.guide-overview-intro {display: flex; align-items: center; gap: 10px}
.guide-overview-intro .nouri-buddy {width: 68px}
.guide-overview-intro .guide-lead {margin: 0}
.appearance-toggle .appearance-moon, [data-theme=dark] .appearance-toggle .appearance-sun {display: none}
[data-theme=dark] .appearance-toggle .appearance-moon {display: block}

@media (max-width: 650px) {
 .buddy-card {grid-template-columns: 62px minmax(0, 1fr); gap: 10px; padding: 14px}
 .buddy-card h2 {font-size: 20px}
 .buddy-card p {font-size: 13px}
 .buddy-card .buddy-context {font-size: 10px}
}

.setup-dialog {
 max-width: 510px;
 max-height: calc(var(--visual-viewport-height, 100dvh) - 24px);
 color: var(--text);
 background: var(--surface);
}
.setup-dialog .setup-content {padding: clamp(18px, 5vw, 30px); position: relative}
.setup-dialog .setup-content h2 {font-family: var(--nouri-ui); margin: 10px 0; padding-right: 0; line-height: 1.12}
.setup-dialog .setup-content p:not(.eyebrow) {line-height: 1.55}
.setup-dialog [hidden] {display: none}
.setup-dialog .setup-beta {padding: 12px 14px; border-radius: 12px; background: var(--surface-soft); color: var(--text)}
.setup-dialog .setup-buddy .nouri-buddy {width: 84px}
.setup-dialog #setupHomeIcon {margin: 6px 0 12px}
.setup-dialog #setupReminderTime {font-size: 16px; max-width: 220px}
.setup-dialog #setupFeedback:empty {margin: 0; padding: 0}
.setup-dialog .setup-actions {display: flex; gap: 10px; margin-top: 12px}
.setup-dialog button {min-height: 44px}
.setup-dialog #setupNext {flex: 1}
.setup-dialog #setupSecondary {margin-top: 8px}
@media (prefers-reduced-motion: no-preference) {
 .setup-dialog[open] .setup-content {animation: setup-enter .2s ease-out}
 @keyframes setup-enter {from {opacity: .7; transform: translateY(6px)} to {opacity: 1; transform: none}}
}
