:root{--color-background:#faf6f1;--color-background-warm:#f3ebe3;--color-background-desktop:#ebe3da;--color-surface:#fff;--color-surface-soft:#fff9f5;--color-surface-elevated:#fffdfb;--color-primary:#e8876a;--color-primary-hover:#d97558;--color-primary-soft:#fde8e0;--color-primary-muted:#f5c4b4;--color-primary-deep:#c96b52;--color-text:#3d2c29;--color-text-muted:#8a756e;--color-text-subtle:#a8958d;--color-text-on-primary:#fff;--color-border:#3d2c2914;--color-border-strong:#3d2c2924;--color-shadow:#3d2c290f;--color-shadow-strong:#3d2c291f;--color-card-affection-from:#fde8e0;--color-card-affection-via:#fce4d6;--color-card-affection-to:#f8d4c8;--color-card-icon-bg:var(--color-primary-soft);--color-status-demo:#b8956a;--color-status-demo-bg:#f9f0e4;--color-status-success:#6b9e7a;--color-status-success-bg:#e8f3eb;--color-status-info:#7a8eb8;--color-status-info-bg:#eef1f7;--color-status-error:#b86a6a;--color-status-error-bg:#f7eded;--font-family:"DM Sans", system-ui, -apple-system, sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.375rem;--font-size-2xl:1.75rem;--font-size-3xl:2rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.65;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:2.5rem;--spacing-3xl:3rem;--radius-small:.75rem;--radius-medium:1rem;--radius-large:1.25rem;--radius-xlarge:1.75rem;--radius-full:9999px;--shadow-soft:0 1px 3px var(--color-shadow);--shadow-card:0 2px 12px var(--color-shadow);--shadow-elevated:0 8px 32px var(--color-shadow-strong);--shadow-nav:0 -2px 12px var(--color-shadow);--icon-size-sm:1.125rem;--icon-size-md:1.375rem;--icon-size-lg:1.75rem;--icon-size-xl:2.25rem;--icon-size-hero:3rem;--icon-stroke:1.75;--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.4s ease;--app-max-width:36rem;--app-max-width-desktop:42rem;--bottom-nav-height:4.25rem;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);--safe-area-right:env(safe-area-inset-right,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-normal);color:var(--color-text);background:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100dvh}#app{min-height:100dvh}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;background:0 0;border:none}button:disabled{cursor:not-allowed;opacity:.7}ul{list-style:none}.app-icon{stroke:currentColor;flex-shrink:0}.app-icon--sm{width:var(--icon-size-sm);height:var(--icon-size-sm)}.app-icon--md{width:var(--icon-size-md);height:var(--icon-size-md)}.app-icon--lg{width:var(--icon-size-lg);height:var(--icon-size-lg)}.app-icon--xl{width:var(--icon-size-xl);height:var(--icon-size-xl)}.app-icon--hero{width:var(--icon-size-hero);height:var(--icon-size-hero)}.app-frame{background:var(--color-background);min-height:100dvh;padding:var(--safe-area-top) var(--safe-area-right) var(--safe-area-bottom) var(--safe-area-left)}.app-shell{min-height:calc(100dvh - var(--safe-area-top) - var(--safe-area-bottom));width:100%;max-width:var(--app-max-width);background:var(--color-background);flex-direction:column;margin:0 auto;display:flex;position:relative}.app-main{padding:var(--spacing-lg) var(--spacing-md) calc(var(--bottom-nav-height) + var(--safe-area-bottom) + var(--spacing-xl));flex:1;overflow-y:auto}.app-main--auth{padding-bottom:calc(var(--safe-area-bottom) + var(--spacing-xl))}@media (width>=768px){.app-frame{background:var(--color-background-desktop);padding:calc(var(--safe-area-top) + var(--spacing-lg)) var(--spacing-lg) calc(var(--safe-area-bottom) + var(--spacing-lg))}.app-shell{max-width:var(--app-max-width-desktop);border-radius:var(--radius-xlarge);min-height:auto;box-shadow:var(--shadow-elevated);border:1px solid var(--color-border);overflow:hidden}.app-main{padding:var(--spacing-2xl) var(--spacing-xl) calc(var(--bottom-nav-height) + var(--spacing-xl))}}.page-header{margin-bottom:var(--spacing-xl)}.page-header__top{margin-bottom:var(--spacing-md);justify-content:space-between;align-items:center;display:flex}.page-header__brand{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.14em;text-transform:uppercase;color:var(--color-primary-deep)}.page-header__avatar{border-radius:var(--radius-full);background:var(--color-primary-soft);width:2.25rem;height:2.25rem;color:var(--color-primary-deep);justify-content:center;align-items:center;display:flex}.page-header__greeting,.page-header__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);color:var(--color-text);margin-bottom:var(--spacing-xs)}.page-header__page-icon{width:4rem;height:4rem;margin-bottom:var(--spacing-md);border-radius:var(--radius-full);background:var(--color-card-icon-bg);color:var(--color-primary-deep);justify-content:center;align-items:center;display:flex}.page-header__tagline{font-size:var(--font-size-base);color:var(--color-text-muted);line-height:var(--line-height-relaxed)}.section-heading{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:var(--spacing-md)}.card{background:var(--color-surface);border-radius:var(--radius-large);box-shadow:var(--shadow-card);border:1px solid var(--color-border)}.badge{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);letter-spacing:.02em;align-items:center;display:inline-flex}.badge--demo{color:var(--color-status-demo);background:var(--color-status-demo-bg)}.btn{justify-content:center;align-items:center;gap:var(--spacing-sm);font-weight:var(--font-weight-semibold);border-radius:var(--radius-medium);transition:background var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);display:inline-flex}.btn--primary{width:100%;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--font-size-base);box-shadow:0 2px 10px #e8876a4d}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--primary:active:not(:disabled){transform:scale(.98)}.affection-card{background:linear-gradient(155deg, var(--color-card-affection-from) 0%, var(--color-card-affection-via) 45%, var(--color-card-affection-to) 100%);border-radius:var(--radius-xlarge);padding:var(--spacing-xl) var(--spacing-lg);margin-bottom:var(--spacing-xl);box-shadow:var(--shadow-card);text-align:center;border:1px solid #e8876a26;position:relative;overflow:hidden}.affection-card__glow{pointer-events:none;background:radial-gradient(circle,#ffffff8c 0%,#0000 70%);width:55%;height:75%;position:absolute;top:-35%;right:-15%}.affection-card__pattern{pointer-events:none;background:radial-gradient(circle,#e8876a14 0%,#0000 70%);width:50%;height:50%;position:absolute;bottom:-20%;left:-10%}.affection-card__content{z-index:1;position:relative}.affection-card__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--spacing-sm)}.affection-card__text{font-size:var(--font-size-base);color:var(--color-text-muted);margin-bottom:var(--spacing-lg);line-height:var(--line-height-relaxed)}.affection-card__demo-notice{margin-top:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-small);font-size:var(--font-size-sm);color:var(--color-text-muted);line-height:var(--line-height-relaxed);background:#ffffffa6}.quick-access{margin-bottom:var(--spacing-xl)}.quick-access__grid{gap:var(--spacing-md);grid-template-columns:repeat(2,1fr);display:grid}.quick-access__item{align-items:flex-start;gap:var(--spacing-xs);padding:var(--spacing-lg) var(--spacing-md);transition:box-shadow var(--transition-normal), transform var(--transition-fast);flex-direction:column;display:flex}.quick-access__item:active{box-shadow:var(--shadow-elevated);transform:scale(.98)}.quick-access__icon-wrap{border-radius:var(--radius-medium);background:var(--color-primary-soft);width:2.5rem;height:2.5rem;color:var(--color-primary-deep);margin-bottom:var(--spacing-xs);justify-content:center;align-items:center;display:flex}.quick-access__label{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text)}.quick-access__subtitle{font-size:var(--font-size-sm);color:var(--color-text-subtle);line-height:var(--line-height-normal)}.upcoming{margin-bottom:var(--spacing-lg)}.upcoming__header{margin-bottom:var(--spacing-md);justify-content:space-between;align-items:center;display:flex}.upcoming__empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.upcoming__list{gap:var(--spacing-sm);flex-direction:column;display:flex}.upcoming__item{align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);display:flex}.upcoming__icon-wrap{border-radius:var(--radius-medium);background:var(--color-surface-soft);width:2.75rem;height:2.75rem;color:var(--color-primary-deep);flex-shrink:0;justify-content:center;align-items:center;display:flex}.upcoming__body{flex:1;min-width:0}.upcoming__row{justify-content:space-between;align-items:baseline;gap:var(--spacing-sm);margin-bottom:2px;display:flex}.upcoming__title{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text)}.upcoming__date{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-primary-deep);white-space:nowrap;flex-shrink:0}.upcoming__subtitle{font-size:var(--font-size-sm);color:var(--color-text-subtle)}.bottom-nav{width:100%;max-width:var(--app-max-width);height:calc(var(--bottom-nav-height) + var(--safe-area-bottom));padding-bottom:var(--safe-area-bottom);background:var(--color-surface-elevated);border-top:1px solid var(--color-border);box-shadow:var(--shadow-nav);z-index:100;position:fixed;bottom:0;left:50%;transform:translate(-50%)}@media (width>=768px){.bottom-nav{max-width:var(--app-max-width-desktop)}}.bottom-nav__grid{z-index:2;grid-template-columns:1fr 1fr auto 1fr 1fr;align-items:stretch;width:100%;height:100%;display:grid;position:relative}.bottom-nav__item{padding:var(--spacing-sm);color:var(--color-text-subtle);transition:color var(--transition-normal);flex-direction:column;justify-content:center;align-items:center;gap:3px;display:flex;position:relative}.bottom-nav__item--active{color:var(--color-primary-deep)}.bottom-nav__item--active:before{content:"";background:var(--color-primary);border-radius:0 0 var(--radius-full) var(--radius-full);width:1.75rem;height:3px;position:absolute;top:0;left:50%;transform:translate(-50%)}.bottom-nav__icon-wrap{justify-content:center;align-items:center;display:flex}.bottom-nav__label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.bottom-nav__center{justify-content:center;align-items:flex-start;width:4.5rem;display:flex}.bottom-nav__plus{border-radius:var(--radius-full);background:var(--color-primary);color:#fff;width:3.25rem;height:3.25rem;transition:transform var(--transition-normal), background var(--transition-normal);justify-content:center;align-items:center;margin-top:-.85rem;display:inline-flex;box-shadow:0 8px 18px #28405038}.bottom-nav__plus--open{background:var(--color-primary-deep)}.bottom-nav__plus-icon{transition:transform .28s;display:inline-flex}.bottom-nav__plus--open .bottom-nav__plus-icon{transform:rotate(90deg)}.bottom-nav__scrim{z-index:1;background:#141c2438;position:fixed;inset:0}.bottom-nav__arc{pointer-events:none;z-index:3;width:17rem;height:7.5rem;position:absolute;bottom:calc(100% + .35rem);left:50%;transform:translate(-50%)}.bottom-nav__arc-item{opacity:0;pointer-events:none;width:4.75rem;color:var(--color-text);flex-direction:column;align-items:center;gap:.3rem;transition:opacity .22s,transform .28s cubic-bezier(.2,.8,.2,1);display:flex;position:absolute;bottom:0;left:50%;transform:translate(-50%,.75rem)scale(.85)}.bottom-nav__arc--open .bottom-nav__arc-item{opacity:1;pointer-events:auto}.bottom-nav__arc-item:first-child{--arc-x:-6.4rem;--arc-y:-1.1rem}.bottom-nav__arc-item:nth-child(2){--arc-x:-2.2rem;--arc-y:-3.4rem}.bottom-nav__arc-item:nth-child(3){--arc-x:2.2rem;--arc-y:-3.4rem}.bottom-nav__arc-item:nth-child(4){--arc-x:6.4rem;--arc-y:-1.1rem}.bottom-nav__arc--open .bottom-nav__arc-item{transform:translate(calc(-50% + var(--arc-x)), var(--arc-y)) scale(1);transition-delay:calc(var(--arc-index) * 35ms)}.bottom-nav__arc-icon{border-radius:var(--radius-full);background:var(--color-surface-elevated);border:1px solid var(--color-border);width:2.75rem;height:2.75rem;box-shadow:var(--shadow-card);color:var(--color-primary-deep);justify-content:center;align-items:center;display:inline-flex}.bottom-nav__arc-label{font-size:.68rem;font-weight:var(--font-weight-medium);text-align:center;max-width:4.8rem;color:var(--color-text);text-shadow:0 1px #ffffffb3;line-height:1.2}@media (prefers-reduced-motion:reduce){.bottom-nav__plus,.bottom-nav__plus-icon,.bottom-nav__arc-item{transition:none}}.content-page__body{align-items:flex-start;gap:var(--spacing-lg);padding:var(--spacing-md) 0;flex-direction:column;display:flex}.content-page__text{font-size:var(--font-size-base);color:var(--color-text-muted);line-height:var(--line-height-relaxed);max-width:36ch}.pwa-update-banner{z-index:200;justify-content:space-between;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-status-info-bg);border-bottom:1px solid var(--color-border);color:var(--color-text);display:flex;position:sticky;top:0}.pwa-update-banner__text{font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.pwa-update-banner__button{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-primary);color:var(--color-text-on-primary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:var(--radius-small);white-space:nowrap;transition:background var(--transition-fast);flex-shrink:0;display:inline-flex}.pwa-update-banner__button:hover{background:var(--color-primary-hover)}.pwa-banner-enter-active,.pwa-banner-leave-active{transition:opacity var(--transition-normal), transform var(--transition-normal)}.pwa-banner-enter-from,.pwa-banner-leave-to{opacity:0;transform:translateY(-100%)}.form-field{gap:var(--spacing-xs);margin-bottom:var(--spacing-md);flex-direction:column;display:flex}.form-field__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.form-field__input{width:100%;padding:var(--spacing-md);border:1px solid var(--color-border-strong);border-radius:var(--radius-medium);background:var(--color-surface);color:var(--color-text);font:inherit;transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.form-field__input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #e8876a26}.form-field__input--error{border-color:var(--color-status-error)}.form-field__select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a756e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-md) center;padding-right:calc(var(--spacing-md) + 1.5rem)}.form-field__error{font-size:var(--font-size-sm);color:var(--color-status-error)}.form-checkbox{align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);cursor:pointer;display:flex}.form-checkbox__input{width:1.125rem;height:1.125rem;accent-color:var(--color-primary)}.form-checkbox__label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.form-alert{padding:var(--spacing-md);margin-bottom:var(--spacing-md);border-radius:var(--radius-medium);background:var(--color-status-error-bg);color:var(--color-status-error);font-size:var(--font-size-sm);line-height:var(--line-height-normal)}.form-alert--success{background:var(--color-status-success-bg);color:var(--color-status-success)}.login-page{gap:var(--spacing-xl);max-width:28rem;padding-top:var(--spacing-xl);flex-direction:column;margin:0 auto;display:flex}.login-page__brand{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.14em;text-transform:uppercase;color:var(--color-primary-deep);margin-bottom:var(--spacing-sm)}.login-page__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--spacing-xs)}.login-page__subtitle{font-size:var(--font-size-base);color:var(--color-text-muted);line-height:var(--line-height-relaxed)}.login-page__form,.profile-form,.settings-form{padding:var(--spacing-xl) var(--spacing-lg)}.settings-form__heading{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:var(--spacing-lg)}.moments-section{margin-bottom:var(--spacing-xl)}.moments-section__header{justify-content:space-between;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md);display:flex}.moments-section__header .section-heading{margin-bottom:0}.moments-section__push-btn{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);white-space:nowrap;transition:color var(--transition-fast), border-color var(--transition-fast);display:inline-flex}.moments-section__push-btn:hover:not(:disabled){color:var(--color-primary-deep);border-color:var(--color-primary-muted)}.moments-section__push-btn--active{color:var(--color-status-success);border-color:var(--color-status-success-bg);background:var(--color-status-success-bg)}.moments-section__confirmation{margin-top:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center}.moments-carousel{gap:var(--spacing-md);scroll-snap-type:x mandatory;scroll-padding-inline:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-xs) var(--spacing-md);margin:0 calc(var(--spacing-xs) * -1);-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;overflow-x:auto}.moments-carousel::-webkit-scrollbar{display:none}.moment-card{scroll-snap-align:start;text-align:left;background:0 0;border:none;flex:0 0 9.5rem;padding:0}.moment-card__inner{align-items:center;gap:var(--spacing-sm);min-height:8.5rem;padding:var(--spacing-lg) var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-large);box-shadow:var(--shadow-card);transition:transform var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;display:flex}.moment-card:active:not(:disabled) .moment-card__inner{transform:scale(.98)}.moment-card__icon-wrap{border-radius:var(--radius-full);background:var(--moment-accent-soft,var(--color-primary-soft));width:3.25rem;height:3.25rem;color:var(--moment-accent,var(--color-primary-deep));justify-content:center;align-items:center;display:flex;position:relative}.moment-card__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text);text-align:center;line-height:var(--line-height-tight)}.moment-card__fx{pointer-events:none;opacity:0;position:absolute}.moment-card--sending .moment-card__icon-wrap--affection{animation:.9s forwards momentSendHeart}.moment-card--sending .moment-card__icon-wrap--affection .moment-card__fx--swoosh{animation:.9s forwards momentSwoosh}.moment-card--sending .moment-card__icon-wrap--food_ready,.moment-card--sending .moment-card__icon-wrap--coffee_ready{animation:.85s forwards momentSendRise}.moment-card--sending .moment-card__icon-wrap--food_ready .moment-card__fx--steam,.moment-card--sending .moment-card__icon-wrap--coffee_ready .moment-card__fx--steam{animation:.85s forwards momentSteam}.moment-card--sending .moment-card__icon-wrap--arrived{animation:.8s forwards momentSendPin}.moment-card--sending .moment-card__icon-wrap--arrived .moment-card__fx--pulse{animation:.8s forwards momentPulseRing}.moment-card--sending .moment-card__icon-wrap--home{animation:.9s forwards momentSendCat}.moment-card--sending .moment-card__icon-wrap--gaming{animation:.9s forwards momentSendGamepad}.moment-card--sending .moment-card__icon-wrap--gaming .moment-card__fx--swoosh{animation:.9s forwards momentSwooshSide}.moment-card__fx--steam:before,.moment-card__fx--steam:after{content:"";border-radius:var(--radius-full);opacity:.35;background:currentColor;width:2px;height:10px;position:absolute}.moment-card__fx--steam:before{top:-8px;left:-6px;transform:rotate(-12deg)}.moment-card__fx--steam:after{top:-10px;right:-6px;transform:rotate(12deg)}.moment-card__fx--swoosh,.moment-card__fx--pulse{border-radius:var(--radius-full);border:2px solid;inset:-4px}.moment-history{margin-top:var(--spacing-sm)}.moment-history__toggle{width:100%;padding:var(--spacing-sm) 0;font-size:var(--font-size-sm);color:var(--color-text-muted);background:0 0;border:none;justify-content:space-between;align-items:center;display:flex}.moment-history__list{padding-bottom:var(--spacing-sm);flex-direction:column;display:flex}.moment-history__item{align-items:flex-start;gap:var(--spacing-sm);padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-border);pointer-events:none;display:flex}.moment-history__item:last-child{border-bottom:none}.moment-history__icon{border-radius:var(--radius-full);background:var(--moment-accent-soft,var(--color-primary-soft));width:2.75rem;height:2.75rem;color:var(--moment-accent,var(--color-primary-deep));flex-shrink:0;justify-content:center;align-items:center;display:flex}.moment-history__body{flex:1;min-width:0}.moment-history__main{justify-content:space-between;align-items:flex-start;gap:var(--spacing-sm);display:flex}.moment-history__headline{min-width:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);line-height:var(--line-height-normal);overflow-wrap:anywhere;flex:1}.moment-history__time{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-subtle);white-space:nowrap;text-align:right;flex-shrink:0;padding-top:.1rem}.moment-history__direction{font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:var(--line-height-normal);margin-top:2px}.moment-history__empty{padding:var(--spacing-sm) 0;font-size:var(--font-size-sm);color:var(--color-text-muted)}.moment-overlay{z-index:500;padding:var(--spacing-xl);pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.moment-overlay__backdrop{background:#3d2c292e;position:absolute;inset:0}.moment-overlay__content{z-index:1;align-items:center;gap:var(--spacing-lg);pointer-events:auto;flex-direction:column;max-width:18rem;display:flex;position:relative}.moment-overlay__icon-stage{border-radius:var(--radius-full);background:var(--color-surface);width:6.5rem;height:6.5rem;box-shadow:var(--shadow-elevated);color:var(--moment-accent,var(--color-primary-deep));justify-content:center;align-items:center;animation:.7s forwards momentOverlayEnter;display:flex;position:relative}.moment-overlay__icon{filter:drop-shadow(0 4px 10px #3d2c291f)}.moment-overlay__message{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);text-align:center;line-height:var(--line-height-relaxed);text-shadow:0 1px #ffffffa6}.moment-overlay__heart-back{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-on-primary);background:var(--moment-accent,var(--color-primary));border-radius:var(--radius-full);border:none;box-shadow:0 2px 10px #3d2c291f}.moment-overlay__fx{pointer-events:none;opacity:0;position:absolute}.moment-overlay__content--affection .moment-overlay__icon-stage{animation:2.8s forwards momentOverlayHeart}.moment-overlay__content--affection .moment-overlay__fx--pulse{animation:2.8s forwards momentOverlayPulse}.moment-overlay__content--food_ready .moment-overlay__icon-stage,.moment-overlay__content--coffee_ready .moment-overlay__icon-stage{animation:2.8s forwards momentOverlayRise}.moment-overlay__content--food_ready .moment-overlay__fx--steam,.moment-overlay__content--coffee_ready .moment-overlay__fx--steam{animation:2.8s forwards momentSteamLong}.moment-overlay__content--arrived .moment-overlay__icon-stage{animation:2.8s forwards momentOverlayPin}.moment-overlay__content--home .moment-overlay__icon-stage{animation:2.8s forwards momentOverlayCat}.moment-overlay__content--gaming .moment-overlay__icon-stage{animation:2.8s forwards momentOverlayGamepad}.moment-overlay-fade-enter-active,.moment-overlay-fade-leave-active{transition:opacity .35s}.moment-overlay-fade-enter-from,.moment-overlay-fade-leave-to{opacity:0}@keyframes momentSendHeart{0%{opacity:1;transform:translateY(0)scale(1)}45%{opacity:1;transform:translateY(-18px)scale(1.12)rotate(-8deg)}to{opacity:0;transform:translateY(-42px)scale(.85)rotate(-14deg)}}@keyframes momentSendRise{0%{opacity:1;transform:translateY(0)}35%{opacity:1;transform:translateY(-8px)}to{opacity:0;transform:translateY(-36px)}}@keyframes momentSendPin{0%,to{transform:translateY(0)}30%{transform:translateY(-12px)}55%{transform:translateY(0)}75%{opacity:1;transform:translateY(-4px)}to{opacity:.85;transform:translateY(-8px)}}@keyframes momentSendCat{0%{opacity:1;transform:translate(0)}25%{transform:translate(-6px)}50%{transform:translate(6px)}to{opacity:0;transform:translate(28px)}}@keyframes momentSendGamepad{0%{opacity:1;transform:rotate(0)translate(0)}25%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}to{opacity:0;transform:rotate(4deg)translate(32px)}}@keyframes momentSwoosh{0%,20%{opacity:0;transform:scale(.8)}45%{opacity:.35;transform:scale(1.15)}to{opacity:0;transform:scale(1.4)}}@keyframes momentSwooshSide{0%,30%{opacity:0;transform:scale(.9)}60%{opacity:.3;transform:scale(1.1)}to{opacity:0;transform:scale(1.25)}}@keyframes momentSteam{0%,15%{opacity:0}35%,65%{opacity:.45;transform:translateY(-6px)}to{opacity:0;transform:translateY(-14px)}}@keyframes momentSteamLong{0%,10%{opacity:0}25%,70%{opacity:.4;transform:translateY(-8px)}to{opacity:0;transform:translateY(-12px)}}@keyframes momentPulseRing{0%,55%{opacity:0;transform:scale(.85)}70%{opacity:.35;transform:scale(1.1)}to{opacity:0;transform:scale(1.25)}}@keyframes momentOverlayEnter{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes momentOverlayHeart{0%{opacity:0;transform:translateY(30px)scale(.7)}20%{opacity:1;transform:translateY(0)scale(1)}45%,55%{transform:scale(1.12)}70%{transform:scale(1)}to{opacity:1;transform:scale(1)}}@keyframes momentOverlayPulse{0%,18%{opacity:0;transform:scale(.8)}30%,50%{opacity:.3;transform:scale(1.15)}to{opacity:0;transform:scale(1.35)}}@keyframes momentOverlayRise{0%{opacity:0;transform:translateY(40px)scale(.85)}25%{opacity:1;transform:translateY(0)scale(1)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes momentOverlayPin{0%{opacity:0;transform:translateY(-36px)}30%{opacity:1;transform:translateY(4px)}45%{transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes momentOverlayCat{0%{opacity:0;transform:translate(-40px)rotate(-4deg)}30%{opacity:1;transform:translate(0)rotate(2deg)}45%,55%{transform:rotate(-2deg)}to{opacity:1;transform:rotate(0)}}@keyframes momentOverlayGamepad{0%{opacity:0;transform:translate(36px)rotate(12deg)scale(.85)}30%{opacity:1;transform:translate(0)rotate(-4deg)scale(1)}50%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.moment-card--sending .moment-card__icon-wrap,.moment-overlay__icon-stage,.moment-card__fx,.moment-overlay__fx{animation:none!important}.moment-card--sending .moment-card__icon-wrap{opacity:.65}.moment-overlay__icon-stage{opacity:1;transform:none}}.waste-typed{background:var(--waste-card,var(--color-surface));border-left:3px solid var(--waste-border,var(--color-primary));color:var(--color-text)}.waste-section{margin-top:var(--spacing-xl);margin-bottom:var(--spacing-xl)}.waste-section .section-heading{margin-bottom:var(--spacing-md)}.waste-section__empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.waste-card-list{gap:var(--spacing-sm);flex-direction:column;display:flex}.waste-card{align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.waste-card--hero{box-shadow:none;background:0 0;border:none;padding:0}.waste-card--info{grid-template-columns:auto minmax(0,1fr)}.waste-card__media{border-radius:var(--radius-medium);background:var(--waste-bg,var(--color-surface-soft));width:2.75rem;height:2.75rem;color:var(--waste-accent,var(--color-primary-deep));flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.waste-card__media--lg{width:3.25rem;height:3.25rem}.waste-card__content{flex-direction:column;gap:.2rem;min-width:0;display:flex}.waste-card__header{justify-content:space-between;align-items:baseline;gap:var(--spacing-md);display:flex}.waste-card__title{font-weight:var(--font-weight-semibold);color:var(--color-text);line-height:var(--line-height-normal)}.waste-card__title--lg{font-size:var(--font-size-lg)}.waste-card__date{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--waste-accent,var(--color-primary-deep));white-space:nowrap;flex-shrink:0}.waste-card__subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted)}.waste-card__status{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.waste-card__action{flex-shrink:0}.waste-card__btn{white-space:nowrap;width:auto;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm)}.waste-card--done .waste-card__title{color:var(--color-text-muted);text-decoration:line-through}.waste-card--done .waste-card__media{opacity:.88}.waste-card--done .waste-card__status{text-decoration:none}.waste-typed__icon{background:var(--waste-bg,var(--color-surface-soft));width:2.75rem;height:2.75rem;color:var(--waste-accent,var(--color-primary-deep));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.waste-typed__icon--lg{width:3.25rem;height:3.25rem}.waste-typed__icon--sm{width:1.85rem;height:1.85rem}.btn--ghost{width:auto;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-primary-deep);background:var(--color-primary-soft)}.btn--ghost:hover:not(:disabled){background:var(--color-primary-muted)}.waste-page__sync{align-items:stretch;gap:var(--spacing-md);margin-bottom:var(--spacing-md);flex-direction:column;display:flex}.waste-page__sync-text{min-width:0}.waste-page__sync-btn{align-self:flex-start}.waste-page__sync-label,.waste-page__prefs{font-size:var(--font-size-sm);color:var(--color-text-muted)}.waste-page__sync-value{font-weight:var(--font-weight-semibold);color:var(--color-text);margin-top:.15rem}.waste-page__sync-error{margin-top:var(--spacing-xs);color:var(--color-status-error);font-size:var(--font-size-sm)}.waste-page__sync-note{margin-top:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--color-text-muted)}.waste-page__prefs{margin-bottom:var(--spacing-xl)}.waste-page__prefs a{color:var(--color-primary-deep);font-weight:var(--font-weight-medium)}.waste-next{margin-bottom:var(--spacing-xl);padding:var(--spacing-lg);border-left-width:4px}.waste-next__eyebrow{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-subtle);margin-bottom:var(--spacing-sm)}.waste-day{margin-bottom:var(--spacing-lg)}.waste-day__heading{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);margin-bottom:var(--spacing-sm)}.waste-day__item--highlight{box-shadow:0 0 0 2px var(--waste-border,var(--color-primary-muted))}.upcoming__header{justify-content:space-between;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-md);display:flex}.upcoming__header .section-heading{margin-bottom:0}.upcoming__link{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-primary-deep)}.settings-form__hint{margin-bottom:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-muted)}.waste-type-legend{gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);grid-template-columns:1fr 1fr;display:grid}.waste-type-legend__item{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-medium);border-left-style:solid;border-left-width:3px;display:flex}.waste-type-legend__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--waste-accent,var(--color-text))}.waste-presets{gap:var(--spacing-sm);margin-bottom:var(--spacing-md);flex-wrap:wrap;display:flex}.waste-presets__item{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-medium);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm)}.waste-presets__item--active{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-deep);font-weight:var(--font-weight-semibold)}.waste-custom-times{gap:var(--spacing-md);margin-bottom:var(--spacing-md);display:grid}@media (width>=480px){.waste-page__sync{flex-direction:row;justify-content:space-between;align-items:center}.waste-page__sync-btn{flex-shrink:0;align-self:center}.waste-custom-times{grid-template-columns:1fr 1fr}}.calendar-card{align-items:flex-start;gap:var(--spacing-md);width:100%;padding:var(--spacing-md);text-align:left;background:var(--calendar-card,#e8f1fa);color:var(--calendar-text,#1e3a54);border:1px solid color-mix(in srgb, var(--calendar-accent,#4a7fb5) 28%, transparent);display:flex}.calendar-card__media{border-radius:var(--radius-medium);background:color-mix(in srgb, var(--calendar-accent,#4a7fb5) 16%, #fff);width:2.5rem;height:2.5rem;color:var(--calendar-accent,#4a7fb5);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.calendar-card__content{flex-direction:column;flex:1;gap:.2rem;min-width:0;display:flex}.calendar-card__header{justify-content:space-between;gap:var(--spacing-sm);align-items:baseline;display:flex}.calendar-card__owner,.calendar-card__time{font-size:var(--font-size-xs);color:var(--calendar-accent,#4a7fb5);font-weight:var(--font-weight-medium)}.calendar-card__title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--calendar-text,#1e3a54)}.upcoming-groups{gap:var(--spacing-lg);flex-direction:column;display:flex}.upcoming-group__date{margin:0 0 var(--spacing-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-subtle)}.calendar-connection{gap:var(--spacing-sm);margin:var(--spacing-md) 0;display:grid}.calendar-connection dt{font-size:var(--font-size-xs);color:var(--color-text-subtle)}.calendar-connection dd{font-weight:var(--font-weight-medium);margin:0}.calendar-color-picker{margin:var(--spacing-md) 0}.calendar-color-picker__options{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.calendar-color-picker__swatch{border-radius:var(--radius-medium);border:1px solid color-mix(in srgb, var(--calendar-accent) 35%, transparent);background:var(--calendar-card);min-width:5.5rem;color:var(--calendar-text);font-size:var(--font-size-sm);padding:.65rem .9rem}.calendar-color-picker__swatch--active{outline:2px solid var(--calendar-accent);outline-offset:1px}.settings-form__status{margin:0 0 var(--spacing-sm);font-weight:var(--font-weight-semibold);color:var(--color-primary-deep)}.settings-form__actions{gap:var(--spacing-sm);margin-top:var(--spacing-md);flex-wrap:wrap;display:flex}.btn--secondary{border-radius:var(--radius-medium);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-weight:var(--font-weight-medium);justify-content:center;align-items:center;padding:.7rem 1rem;display:inline-flex}.form-field__input--lg{padding:.9rem .95rem;font-size:1.15rem}.bottom-sheet{z-index:220;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.bottom-sheet__backdrop{background:#1218206b;border:0;position:absolute;inset:0}.bottom-sheet__panel{z-index:1;width:100%;max-width:var(--app-max-width);background:var(--color-surface-elevated);max-height:min(88vh,40rem);padding:.75rem var(--spacing-lg) calc(var(--spacing-xl) + var(--safe-area-bottom));border-radius:1.25rem 1.25rem 0 0;position:relative;overflow:auto;box-shadow:0 -12px 32px #141c242e}.bottom-sheet__handle{border-radius:var(--radius-full);background:var(--color-border-strong);width:2.5rem;height:.28rem;margin:0 auto var(--spacing-md)}.bottom-sheet__close{border-radius:var(--radius-full);width:2.25rem;height:2.25rem;color:var(--color-text-subtle);justify-content:center;align-items:center;display:inline-flex}.calendar-detail__header,.create-event__header{align-items:flex-start;gap:var(--spacing-md);margin-bottom:var(--spacing-md);display:flex}.calendar-detail__heading{flex:1;min-width:0}.calendar-detail__icon{border-radius:var(--radius-medium);background:color-mix(in srgb, var(--calendar-accent) 16%, #fff);width:2.75rem;height:2.75rem;color:var(--calendar-accent);justify-content:center;align-items:center;display:inline-flex}.calendar-detail__owner{font-size:var(--font-size-sm);color:var(--calendar-accent);margin:0}.calendar-detail__title,.create-event__header h2{margin:.15rem 0 0;font-size:1.25rem}.calendar-detail__meta{gap:var(--spacing-md);margin:0 0 var(--spacing-md);display:grid}.calendar-detail__meta dt{font-size:var(--font-size-xs);color:var(--color-text-subtle)}.calendar-detail__meta dd{margin:.15rem 0 0}.calendar-detail__attendees{margin:0;padding-left:1.1rem}.calendar-detail__body{white-space:pre-wrap;margin:0 0 var(--spacing-md);color:var(--color-text)}.calendar-detail__links{gap:var(--spacing-sm);flex-direction:column;display:flex}.create-event__fieldset{margin:0 0 var(--spacing-md);border:0;padding:0}.create-event__fieldset legend{font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-sm)}.create-event__row{gap:var(--spacing-md);display:grid}@media (width>=420px){.create-event__row{grid-template-columns:1fr 1fr}}.create-event__durations{gap:var(--spacing-sm);margin-bottom:var(--spacing-sm);flex-wrap:wrap;display:flex}.create-event__chip{border-radius:var(--radius-full);border:1px solid var(--color-border-strong);background:var(--color-surface);font-size:var(--font-size-sm);padding:.55rem .8rem}.create-event__chip--active{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-deep)}.app-toast{left:50%;bottom:calc(var(--bottom-nav-height) + var(--safe-area-bottom) + 1rem);z-index:240;border-radius:var(--radius-medium);color:#fff;max-width:min(20rem,100vw - 2rem);font-size:var(--font-size-sm);text-align:center;background:#1c242ceb;padding:.75rem 1rem;position:fixed;transform:translate(-50%);box-shadow:0 10px 24px #0003}.app-toast--action{text-align:left;align-items:center;gap:.75rem;max-width:min(24rem,100vw - 2rem);display:flex}.app-toast__action{color:#f4d9b0;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:.15rem 0;font-size:.85rem;font-weight:700}.wish-card-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.wish-card{text-align:left;background:var(--wish-card,var(--color-surface));width:100%;color:var(--wish-text,var(--color-text));cursor:pointer;border:0;grid-template-columns:auto 1fr auto;align-items:start;gap:.75rem;padding:.9rem 1rem;display:grid}.wish-card__media{background:color-mix(in srgb, var(--wish-accent,#4a7fb5) 18%, transparent);width:2.5rem;height:2.5rem;color:var(--wish-accent,#4a7fb5);border-radius:.75rem;place-items:center;display:grid}.wish-card__content{gap:.2rem;min-width:0;display:grid}.wish-card__header{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.wish-card__list{color:var(--wish-accent,#4a7fb5);font-size:.78rem;font-weight:600}.wish-card__time{opacity:.7;white-space:nowrap;font-size:.75rem}.wish-card__title{font-size:1rem;font-weight:600;line-height:1.3}.wish-card__price{font-size:.9rem;font-weight:600}.wish-card__price-hint{opacity:.75;font-size:.8rem;font-weight:400}.wish-card__meta,.wish-card__note{opacity:.8;font-size:.82rem}.wish-card__link{width:2.25rem;height:2.25rem;color:var(--wish-accent,#4a7fb5);background:color-mix(in srgb, var(--wish-accent,#4a7fb5) 12%, transparent);border-radius:999px;place-items:center;display:grid}.wishes-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-bottom:1rem;display:grid}.wishes-tabs__item{border:1px solid color-mix(in srgb, var(--wish-accent,#4a7fb5) 28%, transparent);background:var(--wish-card,var(--color-surface));color:var(--wish-text,var(--color-text));cursor:pointer;border-radius:.9rem;justify-items:center;gap:.2rem;padding:.65rem .4rem;display:grid}.wishes-tabs__item--active{box-shadow:inset 0 0 0 2px var(--wish-accent,#4a7fb5)}.wishes-tabs__dot{background:var(--wish-accent,#4a7fb5);border-radius:999px;width:.55rem;height:.55rem}.wishes-tabs__label{font-size:.82rem;font-weight:600}.wishes-tabs__count{opacity:.75;font-size:.75rem}.wishes-page__toolbar{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.85rem;display:flex}.wishes-page__list-label{margin:0;font-size:.95rem;font-weight:600}.wish-form__price-row{grid-template-columns:1fr 5.5rem;gap:.5rem;display:grid}.wish-form__currency{text-transform:uppercase}.wish-detail{background:var(--wish-card,var(--color-surface))}.wish-detail__muted{opacity:.75;font-size:.85em}.share-chooser{grid-template-columns:1fr 1fr;gap:.75rem;padding-bottom:.5rem;display:grid}.share-chooser__item{border:1px solid var(--color-border,#e4ddd4);background:var(--color-surface,#fff);color:inherit;cursor:pointer;border-radius:1rem;justify-items:center;gap:.55rem;padding:1.1rem .75rem;font-weight:600;display:grid}.share-chooser__icon{background:color-mix(in srgb, var(--color-accent,#c9893a) 16%, transparent);width:2.75rem;height:2.75rem;color:var(--color-accent,#c9893a);border-radius:.9rem;place-items:center;display:grid}.shopping-page{padding-bottom:1rem}.shopping-quickadd{gap:.55rem;margin-bottom:1.1rem;display:grid}.shopping-quickadd__row{grid-template-columns:1fr auto;align-items:stretch;gap:.5rem;display:grid}.shopping-quickadd__input{min-height:3rem}.shopping-quickadd__qty{min-height:2.6rem}.shopping-quickadd__btn{border-radius:var(--radius-medium);background:var(--color-primary);color:#fff;cursor:pointer;border:0;place-items:center;width:3rem;min-height:3rem;display:grid}.shopping-quickadd__btn:disabled{opacity:.6}.shopping-list{gap:.65rem;margin:0;padding:0;list-style:none;display:grid;position:relative}.shopping-row{border-radius:1rem;position:relative;overflow:hidden}.shopping-row__reveal{color:#fff;background:#c45c4a;justify-content:flex-end;align-items:center;padding-right:1.15rem;display:flex;position:absolute;inset:0}.shopping-row__content{z-index:1;touch-action:pan-y;color:#3d2c1e;background:#f7efe4;grid-template-columns:1fr auto;align-items:center;gap:.65rem;padding:.85rem .9rem;display:grid;position:relative}.shopping-row__text{gap:.12rem;min-width:0;display:grid}.shopping-row__name{font-size:1.02rem;font-weight:600;line-height:1.3}.shopping-row__qty{color:#8a5a2b;font-size:.82rem}.shopping-row__by{opacity:.62;font-size:.75rem}.shopping-row__delete{color:#a34538;cursor:pointer;background:#f7e8e6;border:0;border-radius:999px;place-items:center;width:2.5rem;height:2.5rem;display:grid}.shopping-empty{text-align:center;justify-items:center;gap:.35rem;padding:1.75rem 1rem;display:grid}.shopping-empty__icon{color:#c9893a;background:#f7efe4;border-radius:1rem;place-items:center;width:3.5rem;height:3.5rem;margin-bottom:.4rem;display:grid}.shopping-empty__title{margin:0;font-size:1.15rem;font-weight:700}.shopping-empty__text{color:var(--color-text-muted);margin:0;font-size:.9rem}.shopping-slide-move,.shopping-slide-enter-active,.shopping-slide-leave-active{transition:transform .24s,opacity .24s}.shopping-slide-enter-from,.shopping-slide-leave-to{opacity:0;transform:translate(-1.25rem)}.shopping-slide-leave-active{width:100%;position:absolute}@media (prefers-reduced-motion:reduce){.shopping-slide-move,.shopping-slide-enter-active,.shopping-slide-leave-active,.shopping-row__content{transition:none}}.recipe-grid{grid-template-columns:1fr;gap:.75rem;display:grid}@media (width>=360px){.recipe-grid{grid-template-columns:1fr 1fr}}.recipe-tile{background:var(--color-surface-elevated);cursor:pointer;border-radius:1rem;gap:.45rem;padding:0;display:grid;overflow:hidden;box-shadow:0 8px 20px #141c240f}.recipe-tile__image{aspect-ratio:4/3;background:#f3e6d4;overflow:hidden}.recipe-tile__photo,.recipe-detail__photo,.recipe-form__preview img{object-fit:cover;width:100%;height:100%;display:block}.recipe-tile__placeholder,.recipe-detail__placeholder{color:#c9893a;background:linear-gradient(160deg,#f7efe4,#ead7bc);place-items:center;width:100%;height:100%;font-size:2rem;font-weight:700;display:grid}.recipe-tile__name{margin:0;padding:0 .75rem;font-size:1.02rem;line-height:1.3}.recipe-tile__stars,.recipe-detail__stars{letter-spacing:.12em;color:#e2a23a;margin:0;padding:0 .75rem;font-size:.95rem}.recipe-tile__propose{width:calc(100% - 1.5rem);margin:0 .75rem .8rem}.recipe-tile__propose--done,.recipe-tile__propose:disabled{opacity:.72}.bottom-sheet__panel--tall{max-height:min(94vh,52rem)}.recipe-form__preview{aspect-ratio:16/9;background:#f3e6d4;border-radius:.9rem;width:100%;margin-bottom:.65rem;overflow:hidden}.recipe-form__image-actions,.recipe-detail__actions,.meal-proposal__actions,.recipe-form__ing{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.recipe-form__file{position:relative;overflow:hidden}.recipe-form__file-input{opacity:0;cursor:pointer;position:absolute;inset:0}.recipe-stars{gap:.2rem;display:flex}.recipe-stars__btn{color:#d7c4ad;cursor:pointer;background:0 0;border:0;place-items:center;width:2.75rem;height:2.75rem;display:grid}.recipe-stars__btn--on{color:#e2a23a}.recipe-stars__btn--on .app-icon{fill:currentColor}.recipe-form__ing{grid-template-columns:6.5rem 1fr auto;gap:.45rem;margin-bottom:.45rem;display:grid}.recipe-form__remove{color:#a34538;cursor:pointer;background:#f7e8e6;border:0;border-radius:999px;place-items:center;width:2.5rem;height:2.5rem;display:grid}.recipe-detail__hero{aspect-ratio:16/10;background:#f3e6d4;border-radius:1rem;margin-bottom:.75rem;overflow:hidden}.recipe-detail__placeholder{color:#c9893a}.recipe-detail__text{white-space:pre-wrap;margin:0 0 .9rem}.recipe-detail__actions{margin-bottom:1rem}.recipe-detail__delete{color:#a34538}.recipe-detail__ings{gap:.55rem;display:grid}.recipe-detail__ings h3{margin:0}.recipe-ing{border-radius:.9rem;position:relative;overflow:hidden}.recipe-ing__reveal{color:#fff;background:#5f8d5a;justify-content:flex-start;align-items:center;padding-left:1.15rem;display:flex;position:absolute;inset:0}.recipe-ing__content{z-index:1;color:#3d2c1e;touch-action:pan-y;background:#f7efe4;grid-template-columns:6.2rem 1fr auto;align-items:center;gap:.5rem;padding:.8rem .9rem;display:grid;position:relative}.recipe-ing--added .recipe-ing__content{background:#e2e1d1}.recipe-ing__qty{color:#8a5a2b;font-size:.82rem}.recipe-ing__name{font-weight:600}.recipe-ing__done{color:#5f8d5a}.meal-proposal__text{margin:0 0 1rem;font-size:1.12rem;line-height:1.45}.meal-proposal__actions{display:grid}.meal-proposal__actions .btn{width:100%}.sheet-fade-enter-active,.sheet-fade-leave-active,.toast-fade-enter-active,.toast-fade-leave-active{transition:opacity .2s}.sheet-fade-enter-active .bottom-sheet__panel,.sheet-fade-leave-active .bottom-sheet__panel{transition:transform .24s}.sheet-fade-enter-from,.sheet-fade-leave-to,.toast-fade-enter-from,.toast-fade-leave-to{opacity:0}.sheet-fade-enter-from .bottom-sheet__panel,.sheet-fade-leave-to .bottom-sheet__panel{transform:translateY(1.25rem)}@media (prefers-reduced-motion:reduce){.sheet-fade-enter-active,.sheet-fade-leave-active,.toast-fade-enter-active,.toast-fade-leave-active,.sheet-fade-enter-active .bottom-sheet__panel,.sheet-fade-leave-active .bottom-sheet__panel{transition:none}}.note-page__new{width:max-content;margin-bottom:1rem}.note-section{margin-bottom:1.25rem}.note-list{gap:.75rem;display:grid;position:relative}.note-card{cursor:pointer;gap:.35rem;padding:.9rem .95rem;display:grid}.note-card__top{align-items:flex-start;gap:.5rem;display:flex}.note-card__title{flex:1;margin:0;font-size:1.05rem;line-height:1.3}.note-card__pin{width:2.25rem;height:2.25rem;color:var(--color-text-subtle);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;display:grid}.note-card__pin--on{color:#c9893a;background:#f7eee3}.note-card__preview{color:var(--color-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:.92rem;display:-webkit-box;overflow:hidden}.note-card__domain,.note-card__meta{color:var(--color-text-subtle);margin:0;font-size:.78rem}.note-detail__body{white-space:pre-wrap;margin:0 0 1rem;line-height:1.45}.note-slide-move,.note-slide-enter-active,.note-slide-leave-active{transition:transform .24s,opacity .24s}.note-slide-enter-from,.note-slide-leave-to{opacity:0;transform:translateY(.5rem)}.note-slide-leave-active{width:100%;position:absolute}
