:root{--color-page: #faf8f5;--color-ink-strong: #261913;--color-ink: #3a2b24;--color-muted: #8b7a70;--color-border: #eadfd6;--color-border-strong: #d6c6ba;--color-warm-panel: #f2ebe5;--color-brown: #946f58;--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--shadow-soft: 0 18px 48px rgb(70 42 22 / .06)}*{box-sizing:border-box}html{min-width:320px;background:var(--color-page);color:var(--color-ink);font-family:Inter,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,Arial,sans-serif;font-size:16px;line-height:1.5}::selection{background:#946f583d}body{min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}#root{min-height:100vh}.app-shell{display:grid;min-height:100vh;grid-template-columns:286px minmax(0,1fr);background:radial-gradient(circle at top left,rgb(152 116 90 / .08),transparent 340px),var(--color-page)}.app-main{min-width:0;border-left:1px solid var(--color-border)}.sidebar{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;justify-content:space-between;padding:34px 28px 36px;background:#fffdfaeb}.brand h1{margin:0;color:var(--color-ink-strong);font-family:STKaiti,KaiTi,serif;font-size:clamp(29px,2.2vw,34px);font-weight:600;letter-spacing:0;line-height:1.15}.brand p{margin:14px 0 0;color:var(--color-muted);font-size:14px}.side-nav{display:grid;gap:18px;margin-top:72px}.side-nav__item{position:relative;display:flex;align-items:center;gap:18px;min-height:58px;padding:0 22px;border-radius:var(--radius-md);color:var(--color-ink);font-size:20px}.side-nav__item.active{background:var(--color-warm-panel)}.side-nav__item.active:before{position:absolute;top:0;bottom:0;left:0;width:4px;border-radius:999px;background:var(--color-brown);content:""}.sidebar-love{text-align:center}.sidebar-love img{width:min(180px,75%);opacity:.78}.sidebar-love p{margin:16px 0 0;color:var(--color-muted);font-size:14px}.sidebar-logout{margin:18px auto 0}.login-page{display:grid;min-height:100vh;place-items:center;padding:24px;background:radial-gradient(circle at top left,rgb(152 116 90 / .12),transparent 360px),var(--color-page)}.login-panel{width:min(440px,100%);padding:34px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#fffdfaeb;box-shadow:var(--shadow-soft)}.login-brand{display:flex;align-items:center;gap:18px}.login-brand img{width:86px;height:86px;object-fit:contain}.login-brand h1{margin:0;color:var(--color-ink-strong);font-family:STKaiti,KaiTi,serif;font-size:clamp(28px,7vw,34px);line-height:1.15;letter-spacing:0}.login-brand p{margin:8px 0 0;color:var(--color-muted)}.login-form{display:grid;gap:18px;margin-top:28px}.login-form label{display:grid;gap:10px}.identity-picker{min-width:0;margin:0;padding:0;border:0}.identity-picker legend{margin-bottom:10px}.identity-picker>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.identity-option{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;color:var(--color-ink)}.identity-option--active{border-color:var(--color-brown);background:var(--color-accent-soft);color:var(--color-ink-strong)}.auth-loading{display:grid;min-height:100vh;place-items:center;color:var(--color-muted)}.auth-loading--error{align-content:center;gap:14px;text-align:center}.login-input{position:relative}.login-input svg{position:absolute;top:50%;left:14px;color:var(--color-muted);transform:translateY(-50%)}.login-input input{padding-left:46px}.page{min-height:100vh;padding:38px 44px}.page--narrow{max-width:1180px;margin:0 auto}.page-topbar,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:24px}.section-heading h2{margin:0;color:var(--color-ink-strong);font-size:32px;letter-spacing:0}.section-heading p{margin:6px 0 0;color:var(--color-muted)}.tabs{display:flex;align-items:center;gap:32px}.tab{min-height:46px;padding:0 24px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-ink);font-size:17px}.tab--active{border:1px solid var(--color-border-strong);background:var(--color-warm-panel)}.page-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:14px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:0 20px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:#fff;color:var(--color-ink);font-weight:600}.button--primary{border-color:var(--color-brown);background:var(--color-brown);color:#fff}.button--ghost{background:#ffffffd6}.button--soft{border-color:transparent;background:var(--color-warm-panel)}.placeholder-panel{margin-top:36px;padding:42px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#ffffffb8;box-shadow:var(--shadow-soft)}.placeholder-panel h2{margin:0;font-size:24px}.placeholder-panel p{margin:12px 0 0;color:var(--color-muted)}.back-link{display:inline-flex;margin-bottom:24px;color:var(--color-ink)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}input,select,textarea{width:100%;min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffd1;color:var(--color-ink);outline:0}input,select{padding:0 14px}textarea{min-height:94px;resize:vertical;padding:12px 14px}input::placeholder,textarea::placeholder{color:#b9aaa0}input:focus,select:focus,textarea:focus{border-color:var(--color-brown);box-shadow:0 0 0 3px #946f581f}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;color:var(--color-ink)}.icon-button--active{background:var(--color-warm-panel);color:var(--color-ink-strong)}.icon-button--plain{border:0;background:transparent}.text-button{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--color-muted)}.text-button:disabled,.cart-action:disabled{cursor:not-allowed;opacity:.58}.menu-layout,.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:36px;margin-top:30px}.menu-content{min-width:0}.filter-row{display:grid;align-items:center;grid-template-columns:minmax(220px,1.1fr) repeat(3,minmax(128px,.45fr)) auto;gap:14px;padding-top:20px;border-top:1px solid var(--color-border)}.search-box{position:relative;display:block}.search-box input{padding-right:48px}.search-box svg{position:absolute;top:50%;right:14px;color:var(--color-ink);transform:translateY(-50%)}.view-switch{display:inline-flex;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.view-switch .icon-button{border:0;border-radius:0}.category-pills{display:flex;flex-wrap:wrap;gap:20px;margin:24px 0 28px}.pill,.choice-chip{min-height:34px;padding:0 16px;border:1px solid var(--color-border);border-radius:999px;background:#ffffffdb;color:var(--color-ink)}.pill--active{border-color:var(--color-border-strong);background:var(--color-warm-panel)}.choice-chip--active{border-color:var(--color-brown);background:var(--color-warm-panel);color:var(--color-ink-strong);font-weight:650}.dish-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:22px}.dish-card{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:#ffffffeb;box-shadow:var(--shadow-soft)}.dish-card__image{display:block;width:calc(100% - 14px);aspect-ratio:1.18 / 1;margin:7px auto 0;border-radius:7px;object-fit:cover}.dish-card__body{position:relative;padding:10px 12px 13px}.dish-card__title{display:block;margin-right:82px;color:var(--color-ink-strong);font-weight:650}.dish-card__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.dish-card__meta span,.dish-tags span,.ingredient-tags span{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:999px;background:#f4f0ec;color:var(--color-muted);font-size:13px}.dish-card__actions{position:absolute;right:10px;bottom:12px;display:inline-flex;gap:8px}.dish-card__actions .icon-button{width:30px;height:30px}.icon-button--favorite-active,.button--favorite-active{border-color:#e3aaa0;background:#f7e2df;color:#a84e41}.pagination{display:flex;justify-content:center;align-items:center;gap:12px;margin:22px 0 0}.pagination button{min-width:36px;height:36px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;color:var(--color-ink)}.pagination button:disabled{cursor:not-allowed;opacity:.42}.pagination .active{background:var(--color-warm-panel);border-color:var(--color-border-strong)}.result-summary{margin:-10px 0 16px;color:var(--color-muted);font-size:14px}.state-panel{display:grid;place-items:center;min-height:220px;padding:32px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-lg);background:#ffffffb3;color:var(--color-muted);text-align:center}.state-panel--error{border-color:#ddb5a8;color:#a45f4c}.dish-cart{position:sticky;top:26px;align-self:start;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#ffffffc7;padding:24px 16px;box-shadow:var(--shadow-soft)}.dish-cart__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.panel-title{display:flex;align-items:center;gap:10px}.panel-title h2{margin:0;font-size:22px}.panel-title__icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--color-ink-strong);font-size:22px}.dish-cart__count{display:flex;align-items:center;justify-content:center;min-height:48px;margin:22px 0 16px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-ink);font-weight:600}.cart-list{overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.cart-item{display:grid;align-items:center;grid-template-columns:22px 52px minmax(0,1fr) 34px;gap:10px;min-height:68px;padding:8px 10px;border-bottom:1px solid var(--color-border)}.cart-item--dragging{position:relative;z-index:2;box-shadow:0 14px 34px #462a1629}.cart-item:last-child{border-bottom:0}.cart-drag-handle{display:inline-flex;align-items:center;justify-content:center;width:22px;height:38px;border:0;background:transparent;color:var(--color-muted);cursor:grab;touch-action:none}.cart-drag-handle:active{cursor:grabbing}.cart-item img{width:52px;height:46px;border-radius:7px;object-fit:cover}.cart-item span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cart-actions{display:grid;gap:14px;margin-top:28px}.cart-action{display:grid;justify-items:center;gap:4px;min-height:82px;padding:14px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:#ffffffdb;color:var(--color-ink)}.cart-action span{font-size:19px;font-weight:700}.cart-action small{color:var(--color-muted);max-width:220px}.cart-action--primary{background:linear-gradient(180deg,#eadbd0,#d8c4b5);border-color:#c7ad9b}.cart-tip{display:flex;gap:10px;margin-top:24px;color:var(--color-muted);font-size:14px}.cart-tip p{margin:0}.cart-empty{display:grid;place-items:center;min-height:112px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);background:#ffffffa3;color:var(--color-muted);text-align:center}.cart-message{margin-top:12px;padding:10px 12px;border-radius:var(--radius-sm);background:#f5efe9;color:var(--color-brown);font-size:14px;text-align:center}.detail-layout{margin-top:0}.detail-content{min-width:0}.dish-hero{display:grid;grid-template-columns:300px minmax(0,1fr);gap:32px;align-items:start}.dish-hero>img{width:100%;aspect-ratio:1 / 1;border-radius:var(--radius-md);object-fit:cover;box-shadow:var(--shadow-soft)}.dish-hero__title-row{display:flex;align-items:center;justify-content:space-between;gap:20px}.dish-hero h2{margin:0;color:var(--color-ink-strong);font-size:34px}.dish-tags{display:flex;gap:10px;margin:12px 0 24px}.dish-hero p{max-width:560px;margin:0;color:var(--color-ink);line-height:1.9}.trait-grid{display:grid;grid-template-columns:repeat(4,minmax(108px,1fr));gap:16px;margin-top:28px}.trait-card{min-height:138px;padding:16px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffb8;text-align:center}.trait-card div{color:#9d6c50;font-size:26px}.trait-card strong,.trait-card span,.trait-card small{display:block}.trait-card strong{margin-top:8px;color:var(--color-ink-strong);font-size:18px}.trait-card span{margin-top:8px}.trait-card small{margin-top:4px;color:var(--color-muted)}.recipe-card,.form-section,.stats-panel,.history-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#ffffffc2;box-shadow:var(--shadow-soft)}.recipe-card{margin-top:30px;padding:24px 26px}.recipe-card h3,.form-section h3{margin:0 0 16px;color:var(--color-ink-strong);font-size:19px}.recipe-steps{display:grid;gap:12px;margin:0;padding:0;list-style:none}.recipe-steps li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px}.recipe-steps span{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--color-brown);color:#fff;font-size:13px}.recipe-divider{height:1px;margin:24px 0;background:var(--color-border)}.ingredient-tags{display:flex;flex-wrap:wrap;gap:12px}.ingredient-tags b{margin-left:12px;color:var(--color-ink);font-weight:500}.detail-tip{display:flex;gap:12px;color:var(--color-muted)}.detail-tip p{margin:0}.join-cart-button{display:flex;align-items:center;justify-content:center;width:min(320px,100%);min-height:58px;margin:22px auto 0;border:0;border-radius:var(--radius-sm);background:var(--color-brown);color:#fff;font-size:20px;font-weight:700}.dish-form,.settings-grid{display:grid;gap:18px;margin-top:28px}.form-section{padding:24px}.form-section--basic{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:42px}.form-fields,.form-section label,.field-group,.step-editor,.ingredient-editor{display:grid;gap:12px}.form-section label,.field-group{color:var(--color-ink)}.form-section b{color:#c8604a}.form-section small{justify-self:end;color:var(--color-muted)}.choice-row{display:flex;flex-wrap:wrap;gap:10px}.upload-box{position:relative;display:grid;place-items:center;align-content:center;min-height:310px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);color:var(--color-muted);text-align:center;cursor:pointer}.upload-box span{color:var(--color-brown);font-size:54px}.upload-box strong{margin-top:10px;color:var(--color-ink)}.upload-box p{margin:10px 0 0}.upload-box input{position:absolute;inset:0;opacity:0;cursor:pointer}.upload-box img{width:min(260px,86%);aspect-ratio:1.2 / 1;border-radius:var(--radius-sm);object-fit:cover;box-shadow:var(--shadow-soft)}.upload-box--filled{border-style:solid;background:#ffffffbd}.form-message{margin-top:22px;padding:12px 16px;border:1px solid #c7d8b9;border-radius:var(--radius-sm);background:#f0f6ec;color:#4f6c3d}.form-message--error{border-color:#ddb5a8;background:#fff1ee;color:#a45f4c}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.editor-row{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(80px,.65fr) 34px;gap:10px;align-items:center}.step-editor .editor-row{grid-template-columns:minmax(0,1fr) 34px}.editor-row button{height:36px;border:0;background:transparent;color:var(--color-muted)}.dashed-button{min-height:42px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);background:transparent;color:var(--color-brown)}.couple-field,.toggle-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.form-footer{position:sticky;bottom:0;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:18px 0 0;background:linear-gradient(180deg,rgb(250 248 245 / 0),var(--color-page) 24%)}.favorites-toolbar,.history-filters{display:grid;gap:14px;margin:28px 0}.favorites-toolbar{grid-template-columns:minmax(220px,1fr) 180px 180px}.history-filters{grid-template-columns:260px 140px 140px minmax(220px,1fr)}.history-filters button,.history-filters label{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.history-filters label input{border:0;background:transparent;box-shadow:none}.stats-panel{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding:26px 32px}.stats-panel article{display:grid;grid-template-columns:42px auto auto;align-items:center;column-gap:10px;color:#8a583e}.stats-panel strong{color:var(--color-ink-strong);font-size:22px}.stats-panel small{grid-column:2 / 4;color:var(--color-muted)}.stat-icon{font-size:34px}.history-list{display:grid;gap:20px;margin-top:28px}.history-card{display:grid;grid-template-columns:165px minmax(0,1fr) 90px;min-height:176px;overflow:hidden}.history-card__date{display:grid;align-content:start;gap:12px;padding:22px;border-right:1px solid var(--color-border)}.history-card__date strong{color:var(--color-ink-strong);font-size:18px}.history-card__date em{font-style:normal;color:var(--color-brown)}.history-card__date div{display:flex;flex-wrap:wrap;gap:8px}.history-card__date small{color:var(--color-brown)}.history-card__body{padding:22px 26px}.history-dishes{display:grid;grid-template-columns:repeat(4,minmax(92px,1fr)) 96px;gap:16px}.history-dishes figure{margin:0;text-align:center}.history-dishes img{width:100%;aspect-ratio:1.28 / 1;border-radius:var(--radius-sm);object-fit:cover}.history-dishes figcaption{margin-top:8px;color:var(--color-ink);font-size:14px}.history-count{display:grid;place-items:center;min-height:86px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);color:var(--color-ink)}.history-card__body p{margin:18px 0 0;color:var(--color-muted)}.history-card__actions{display:flex;align-items:end;justify-content:center;gap:12px;padding:22px}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:26px}.settings-status__item{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:16px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffbd}.settings-status__item svg{margin-top:2px}.settings-status__item strong{color:var(--color-ink-strong)}.settings-status__item p{margin:4px 0 0;color:var(--color-muted);font-size:14px}.settings-status__item--ok svg{color:#5a7742}.settings-status__item--warning svg{color:#b16a48}.settings-footer{grid-column:1 / -1;justify-content:flex-end}.settings-tabs{display:grid;width:min(440px,100%);grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:24px;padding:4px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#f2eeea}.settings-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:0;border-radius:6px;background:transparent;color:var(--color-muted)}.settings-tabs button[aria-selected=true]{background:#fff;color:var(--color-ink-strong);box-shadow:0 1px 5px #462a1614;font-weight:650}.security-settings{display:grid;gap:28px;margin-top:28px}.settings-loader{display:grid;min-height:240px;place-items:center;color:var(--color-muted)}.security-section{display:grid;min-width:0;gap:20px;padding:24px 0 0;border-top:1px solid var(--color-border)}.security-section__heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.security-section__heading>div{display:flex;align-items:center;gap:9px;color:var(--color-brown)}.security-section__heading h3{margin:0;color:var(--color-ink-strong);font-size:19px}.security-section__heading>span{color:var(--color-muted);font-size:13px}.access-code-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.access-code-form{display:grid;min-width:0;gap:14px;padding:18px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffbd}.access-code-form__identity{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.access-code-form__identity strong{color:var(--color-ink-strong);font-size:17px}.access-code-form__identity span{display:inline-flex;align-items:center;gap:5px;color:#5a7742;font-size:12px;text-align:right}.access-code-form label,.provider-fields label{display:grid;min-width:0;gap:6px;color:var(--color-ink);font-size:13px;font-weight:650}.access-code-form input,.provider-fields input{width:100%;min-width:0;min-height:44px}.access-code-form .button{justify-self:end}.model-settings{margin:0}.provider-fields{display:grid;min-width:0;grid-template-columns:minmax(220px,1.35fr) minmax(150px,.8fr) minmax(220px,1fr) auto;align-items:end;gap:12px;margin:0;padding:18px 0 0;border:0}.provider-fields legend{grid-column:1 / -1;margin-bottom:2px;color:var(--color-ink-strong);font-weight:700}.provider-fields .button{min-height:44px;white-space:nowrap}.model-fallback-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:12px 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.model-fallback-toggle>div{display:grid;gap:3px}.model-fallback-toggle strong{color:var(--color-ink-strong)}.model-fallback-toggle span{color:var(--color-muted);font-size:12px}.switch-control{display:inline-flex;position:relative;width:54px;height:44px;flex:0 0 auto;align-items:center;justify-content:center}.switch-control input{position:absolute;width:1px;height:1px;opacity:0}.switch-control>span{width:50px;height:30px;border:1px solid var(--color-border-strong);border-radius:999px;background:#e6dfd9;transition:background .16s ease}.switch-control>span:after{display:block;width:24px;height:24px;margin:2px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #462a162e;content:"";transition:transform .16s ease}.switch-control input:checked+span{border-color:#66814e;background:#738d5c}.switch-control input:checked+span:after{transform:translate(20px)}.switch-control input:focus-visible+span{outline:2px solid var(--color-brown);outline-offset:2px}.security-actions{display:flex;min-height:48px;align-items:center;justify-content:flex-end;gap:10px}.security-reset-confirm{display:flex;flex:1 1 auto;align-items:center;gap:8px}.security-reset-confirm>span{margin-right:auto;color:var(--color-ink);font-size:13px}.button--danger{border-color:#dcaea2;background:#fff0ed;color:#9b4f3d}.meal-side-panel{position:sticky;top:26px;align-self:start;min-width:0;padding:12px 16px 18px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#ffffffc7;box-shadow:var(--shadow-soft)}.meal-panel-tabs,.assistant-page__tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:3px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#f4f0ec}.meal-panel-tab,.assistant-page__tabs button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:38px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:var(--color-muted);white-space:nowrap}.meal-panel-tab span,.assistant-page__tabs button span,.mobile-meal-dock span{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#e6d8ce;color:var(--color-ink);font-size:12px}.meal-panel-tab--active,.assistant-page__tabs button[aria-selected=true]{background:#fff;color:var(--color-ink-strong);box-shadow:0 1px 5px #462a1614;font-weight:650}.dish-cart--embedded{position:static;padding:16px 0 0;border:0;border-radius:0;background:transparent;box-shadow:none}.assistant-panel{display:flex;min-width:0;min-height:590px;flex-direction:column;padding-top:14px}.assistant-panel-loader{display:grid;place-items:center;min-height:320px;color:var(--color-muted)}.assistant-panel__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.assistant-panel__header>div{display:flex;align-items:center;gap:8px}.assistant-panel__header h2{margin:0;color:var(--color-ink-strong);font-size:18px}.assistant-icon-action{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;flex:0 0 auto;border:1px solid var(--color-border);border-radius:7px;background:#fff;color:var(--color-ink)}.assistant-icon-action:disabled{cursor:not-allowed;opacity:.45}.assistant-icon-action--active{border-color:#e3aaa0;background:#f7e2df;color:#a84e41}.assistant-panel__messages{min-height:320px;max-height:calc(100dvh - 360px);flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding:14px 3px 10px;scrollbar-width:thin}.assistant-welcome{display:grid;justify-items:center;align-content:center;min-height:260px;text-align:center}.assistant-welcome__mark{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--color-border-strong);border-radius:50%;background:#f4eee9;color:var(--color-brown)}.assistant-welcome h3{margin:12px 0 16px;color:var(--color-ink-strong);font-size:18px}.assistant-scope-actions{display:grid;width:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.assistant-scope-actions button,.assistant-quick-replies button,.assistant-preference-options button{min-height:36px;border:1px solid var(--color-border);border-radius:999px;background:#fff;color:var(--color-ink)}.assistant-message{display:grid;gap:9px;margin-bottom:16px}.assistant-message--user{justify-items:end}.assistant-message__bubble{max-width:92%;padding:9px 11px;border-radius:8px;background:#f3ede8;color:var(--color-ink);font-size:14px;line-height:1.65;overflow-wrap:anywhere;white-space:pre-wrap}.assistant-message--user .assistant-message__bubble{background:#e6d7cc;color:var(--color-ink-strong)}.assistant-result-list{display:grid;gap:8px}.assistant-dish-card,.assistant-recipe-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.assistant-dish-card{display:grid;grid-template-columns:54px minmax(0,1fr);gap:9px;padding:9px}.assistant-dish-card>img{width:54px;height:54px;border-radius:7px;object-fit:cover}.assistant-dish-card__content{min-width:0}.assistant-dish-card__content>a{display:block;color:var(--color-ink-strong);font-weight:700;line-height:1.35;overflow-wrap:anywhere}.assistant-dish-card__content>span{color:var(--color-muted);font-size:12px}.assistant-dish-card__content p,.assistant-recipe-card>p{margin:4px 0 0;color:var(--color-muted);font-size:12px;line-height:1.5}.assistant-dish-card__actions{display:flex;grid-column:1 / -1;justify-content:flex-end;gap:7px;padding-top:7px;border-top:1px solid var(--color-border)}.assistant-missing-dish{display:flex;align-items:center;gap:8px;padding:10px;border:1px dashed #d7b3a7;border-radius:var(--radius-sm);background:#fff5f2;color:#9b5c49;font-size:13px}.assistant-plan{display:grid;gap:8px;padding:10px;border-left:3px solid var(--color-brown);background:#f7f2ee;color:var(--color-ink);font-size:13px}.assistant-plan>strong{color:var(--color-ink-strong)}.assistant-plan div span{color:var(--color-brown);font-weight:650}.assistant-plan p{margin:3px 0 0;line-height:1.5}.assistant-menu-actions,.assistant-recipe-card__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.assistant-menu-actions button,.assistant-recipe-card__actions button,.assistant-regenerate,.assistant-error button,.assistant-cart-notice button,.assistant-confirm button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:0 9px;border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;color:var(--color-ink);font-size:13px}.assistant-menu-actions button:first-child,.assistant-recipe-card__actions button:last-child{background:#e8d9cf}.assistant-quick-replies,.assistant-preference-options{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none}.assistant-quick-replies button,.assistant-preference-options button{flex:0 0 auto;padding:0 11px;font-size:12px}.assistant-thinking,.assistant-error,.assistant-cart-notice,.assistant-confirm{display:flex;align-items:center;gap:8px;padding:10px;border-radius:var(--radius-sm);font-size:13px}.assistant-thinking{color:var(--color-muted)}.assistant-spin{animation:assistant-spin 1s linear infinite}@keyframes assistant-spin{to{transform:rotate(360deg)}}.assistant-error{flex-wrap:wrap;border:1px solid #ddb5a8;background:#fff1ee;color:#994f3d}.assistant-error span{min-width:0;flex:1 1 150px}.assistant-cart-notice{justify-content:space-between;border:1px solid #c7d8b9;background:#f0f6ec;color:#4f6c3d}.assistant-confirm{justify-content:flex-end;flex-wrap:wrap;margin:10px 0 0;border:1px solid var(--color-border-strong);background:#f7f2ee}.assistant-confirm span{margin-right:auto}.assistant-confirm--stacked{display:grid;justify-items:stretch}.assistant-confirm--stacked div{display:flex;justify-content:flex-end;gap:7px}.assistant-preference-options{flex-wrap:wrap;overflow-x:visible;padding:9px 0;border-top:1px solid var(--color-border)}.assistant-preference-options button{min-width:44px}.assistant-composer{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:7px;align-items:end}.assistant-composer textarea{min-height:68px;max-height:120px;padding:9px 10px;font-size:14px;resize:none}.assistant-composer>button{display:grid;place-items:center;width:42px;height:42px;border:0;border-radius:var(--radius-sm);background:var(--color-brown);color:#fff}.assistant-composer>button:disabled,.assistant-regenerate:disabled{cursor:not-allowed;opacity:.45}.assistant-regenerate{align-self:center;margin-top:8px;border:0;color:var(--color-muted)}.assistant-recipe-card{padding:10px}.assistant-recipe-card__header,.assistant-recipe-saved{display:flex;align-items:center;justify-content:space-between;gap:8px}.assistant-recipe-card__header>div:first-child{min-width:0}.assistant-recipe-card__header span{color:var(--color-brown);font-size:11px;font-weight:700}.assistant-recipe-card__header h4{margin:2px 0 0;overflow-wrap:anywhere;color:var(--color-ink-strong);font-size:15px}.assistant-recipe-card__tools{display:flex;gap:5px}.assistant-recipe-preview,.assistant-recipe-editor{display:grid;gap:9px;margin:10px 0;padding-top:10px;border-top:1px solid var(--color-border);font-size:12px}.assistant-recipe-preview ul,.assistant-recipe-preview ol{display:grid;gap:5px;margin:0;padding-left:19px;line-height:1.5}.assistant-recipe-preview li span{color:var(--color-muted)}.assistant-recipe-editor label,.assistant-recipe-editor fieldset{display:grid;gap:5px;margin:0;padding:0;border:0;color:var(--color-ink)}.assistant-recipe-editor legend{margin-bottom:6px;font-weight:650}.assistant-recipe-editor input,.assistant-recipe-editor select,.assistant-recipe-editor textarea{min-height:38px;font-size:12px}.assistant-recipe-editor textarea{min-height:62px}.assistant-recipe-editor__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(70px,.7fr) 34px;gap:5px;margin-bottom:5px}.assistant-recipe-editor__step{display:grid;grid-template-columns:minmax(0,1fr) 34px;gap:5px;margin-bottom:5px}.assistant-dashed-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:34px;border:1px dashed var(--color-border-strong);border-radius:7px;background:transparent;color:var(--color-brown)}.assistant-inline-error{margin:8px 0;color:#a45f4c;font-size:12px}.assistant-recipe-saved{justify-content:flex-start;margin-top:10px;padding-top:9px;border-top:1px solid var(--color-border);color:#4f6c3d;font-size:12px}.assistant-recipe-saved span{flex:1}.mobile-meal-dock{display:none}.assistant-page{display:flex;height:100dvh;flex-direction:column;overflow:hidden;padding:18px;background:var(--color-page)}.assistant-page__topbar,.assistant-page__tabs,.assistant-page__body{width:min(720px,100%);margin-inline:auto}.assistant-page__topbar{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;margin-bottom:12px;text-align:center}.assistant-page__topbar a{display:grid;place-items:center;width:44px;height:44px;border-radius:var(--radius-sm);color:var(--color-ink)}.assistant-page__tabs{margin-bottom:12px}.assistant-page__tabs button{min-height:44px}.assistant-page__body{min-height:0;flex:1 1 auto;overflow:hidden;padding:0 18px 18px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffd1}.assistant-panel--page{height:100%;min-height:0}.assistant-panel--page .assistant-panel__messages{min-height:0;max-height:none}.meal-plan-editor{display:grid;width:min(980px,100%);min-width:0;max-width:100%;gap:18px;padding:22px 0}.meal-plan-editor--compact{width:100%;gap:12px;margin-top:8px;padding:12px 0 4px;border-top:1px solid var(--color-border)}.meal-plan-editor__heading{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--color-brown)}.meal-plan-editor__heading span{font-size:12px;font-weight:700}.meal-plan-editor__heading h3{margin:2px 0 0;color:var(--color-ink-strong);font-size:21px;line-height:1.3;overflow-wrap:anywhere}.meal-plan-editor--compact .meal-plan-editor__heading h3{font-size:16px}.meal-plan-meta{display:grid;min-width:0;grid-template-columns:minmax(0,1.4fr) minmax(140px,.8fr) minmax(0,1fr);gap:12px;padding:16px 0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.meal-plan-meta label{display:grid;min-width:0;gap:6px;color:var(--color-ink);font-size:13px;font-weight:650}.meal-plan-meta input,.meal-plan-meta select,.meal-plan-meta textarea,.meal-plan-item select{width:100%;min-width:0;max-width:100%;min-height:40px;border:1px solid var(--color-border);border-radius:7px;background:#fff;color:var(--color-ink);font:inherit}.meal-plan-meta__notes{grid-column:1 / -1}.meal-plan-meta textarea{min-height:70px;resize:vertical}.meal-plan-editor--compact .meal-plan-meta{grid-template-columns:1fr;gap:9px;padding:12px 0}.meal-plan-editor--compact .meal-plan-meta__notes{grid-column:auto}.meal-plan-days{display:grid;min-width:0;gap:22px}.meal-plan-day{display:grid;min-width:0;gap:10px}.meal-plan-day>header{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:34px;border-bottom:2px solid #e4d4c9}.meal-plan-day>header>strong{color:var(--color-ink-strong);font-size:16px}.meal-plan-day>header button,.meal-plan-meal__heading button{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--color-brown);font-size:12px}.meal-plan-meal{min-width:0;max-width:100%;padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffd1}.meal-plan-meal__heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}.meal-plan-meal__heading>strong{color:var(--color-ink-strong);font-size:14px}.meal-plan-items{display:grid;min-width:0;gap:6px}.meal-plan-item{display:grid;grid-template-columns:32px minmax(100px,1fr) minmax(90px,120px) 34px 34px;align-items:center;gap:6px;min-width:0;min-height:44px;padding:5px;border-bottom:1px solid #eee4dd;background:#fff}.meal-plan-item--dragging{z-index:3;box-shadow:var(--shadow-soft);opacity:.88}.meal-plan-item__handle{display:grid;width:32px;height:36px;place-items:center;border:0;background:transparent;color:var(--color-muted);cursor:grab;touch-action:none}.meal-plan-item>div{display:grid;min-width:0}.meal-plan-item strong{overflow:hidden;color:var(--color-ink);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.meal-plan-item small{color:#a45f4c;font-size:11px}.meal-plan-item select{min-height:34px;padding:0 6px;font-size:12px}.meal-plan-meal__actions{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}.meal-plan-meal__actions button,.meal-plan-delete-confirm button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:0 10px;border:1px solid var(--color-border-strong);border-radius:7px;background:#fff;color:var(--color-ink);font-size:12px}.meal-plan-meal__actions button:first-child{background:#e8d9cf}.meal-plan-editor--compact .meal-plan-meal{padding:9px}.meal-plan-editor--compact .meal-plan-item{grid-template-columns:28px minmax(68px,1fr) 66px 32px 32px;gap:3px;padding-inline:0}.meal-plan-editor--compact .meal-plan-item__handle{width:28px}.meal-plan-message{display:flex;align-items:center;gap:7px;padding:10px;border:1px solid #c7d8b9;border-radius:7px;background:#f0f6ec;color:#4f6c3d;font-size:13px}.meal-plan-message span{min-width:0;flex:1}.meal-plan-message a{color:inherit;font-weight:700}.meal-plan-save{justify-self:end}.meal-plan-editor--compact .meal-plan-save{width:100%}.meal-plan-list{display:grid;gap:12px}.meal-plan-list-item{display:grid;position:relative;grid-template-columns:160px minmax(0,1fr) auto;align-items:center;gap:20px;min-height:112px;padding:18px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#ffffffc2}.meal-plan-list-item__date{display:flex;align-items:center;gap:8px;color:var(--color-brown);font-size:13px}.meal-plan-list-item__content{min-width:0}.meal-plan-list-item__content>a{color:var(--color-ink-strong);font-size:18px;font-weight:750}.meal-plan-list-item__content p{margin:5px 0;color:var(--color-muted);font-size:13px}.meal-plan-list-item__content>div{display:flex;flex-wrap:wrap;gap:8px}.meal-plan-list-item__content span{color:var(--color-brown);font-size:12px}.meal-plan-list-item__actions{display:flex;gap:7px}.meal-plan-delete-confirm{display:flex;grid-column:1 / -1;align-items:center;justify-content:flex-end;gap:8px;padding-top:12px;border-top:1px solid var(--color-border)}.meal-plan-delete-confirm span{margin-right:auto}.meal-plans-empty{gap:12px;color:var(--color-muted)}.meal-plans-empty strong{color:var(--color-ink-strong)}.meal-plan-detail-page .meal-plan-editor{margin-inline:auto}.meal-plan-back{display:inline-flex;align-items:center;min-height:44px;gap:6px;margin-bottom:10px;color:var(--color-brown);font-size:13px}.history-copy-error{padding:10px 12px;border:1px solid #ddb5a8;border-radius:7px;background:#fff1ee;color:#994f3d}@media(min-width:901px)and (max-width:1320px){.page{padding:32px 28px}.menu-layout,.detail-layout{gap:24px}.filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}.view-switch{justify-self:start}.category-pills{gap:12px}.dish-grid{grid-template-columns:repeat(3,minmax(140px,1fr));gap:16px}}@media(max-width:900px){.app-shell{grid-template-columns:minmax(0,1fr)}.app-main{border-left:0}.sidebar{position:static;width:100%;min-width:0;max-width:100%;overflow:hidden;height:auto;padding:18px 18px 12px;border-bottom:1px solid var(--color-border)}.brand h1{font-size:28px}.side-nav{display:flex;width:100%;min-width:0;max-width:100%;gap:8px;margin-top:18px;overflow-x:auto}.side-nav__item{min-height:46px;flex:0 0 auto;gap:8px;padding:0 14px;font-size:15px}.sidebar-love{display:none}.sidebar-logout{margin:12px 0 0}.page{padding:24px 18px}.page-topbar,.section-heading{align-items:flex-start;flex-direction:column}.tabs{width:100%;gap:8px;overflow-x:auto}.tab{flex:0 0 auto}.menu-layout,.detail-layout,.dish-hero,.form-section--basic,.form-grid,.favorites-toolbar,.history-filters,.stats-panel,.history-card,.settings-grid,.settings-status{grid-template-columns:1fr}.provider-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-fields legend{grid-column:1 / -1}.filter-row{grid-template-columns:1fr}.dish-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dish-cart{position:static}.meal-side-panel{display:none}.menu-page,.detail-page{padding-bottom:92px}.mobile-meal-dock{position:fixed;z-index:20;right:14px;bottom:max(12px,env(safe-area-inset-bottom));left:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:7px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:#fffffff5;box-shadow:0 12px 32px #462a1629}.mobile-meal-dock a{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:46px;border-radius:7px;color:var(--color-ink)}.mobile-meal-dock a:last-child{background:#e8d9cf;color:var(--color-ink-strong);font-weight:650}.assistant-icon-action{width:42px;height:42px}.assistant-panel{min-height:calc(100dvh - 160px)}.assistant-panel__messages{max-height:none}.assistant-scope-actions button,.assistant-quick-replies button,.assistant-preference-options button,.assistant-menu-actions button,.assistant-recipe-card__actions button,.assistant-regenerate,.assistant-error button,.assistant-cart-notice button,.assistant-confirm button{min-height:44px}.trait-grid{grid-template-columns:repeat(2,1fr)}.history-card__date{border-right:0;border-bottom:1px solid var(--color-border)}.history-dishes{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.dish-grid,.trait-grid,.history-dishes{grid-template-columns:1fr}.page-actions,.form-footer{justify-content:stretch}.button,.form-footer .button{width:100%}.access-code-list,.provider-fields{grid-template-columns:1fr}.access-code-form .button,.provider-fields legend{grid-column:auto}.security-actions,.security-reset-confirm{align-items:stretch;flex-direction:column}.security-reset-confirm>span{margin-right:0}.assistant-page{padding:10px}.assistant-page__body{padding:0 12px 12px}.assistant-recipe-card__actions,.assistant-menu-actions,.meal-plan-meta{grid-template-columns:1fr}.meal-plan-meta__notes{grid-column:auto}.meal-plan-item,.meal-plan-editor--compact .meal-plan-item{grid-template-columns:44px minmax(54px,1fr) 64px 44px 44px;gap:3px}.meal-plan-item__handle,.meal-plan-item>.icon-button{width:44px;height:44px}.meal-plan-item select,.meal-plan-meta input,.meal-plan-meta select{min-height:44px}.meal-plan-day>header button,.meal-plan-meal__heading button{min-height:44px}.meal-plan-meal__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.meal-plan-meal__actions button{min-height:44px}.meal-plan-list-item{grid-template-columns:1fr auto;gap:12px}.meal-plan-list-item__date{grid-column:1 / -1}.meal-plan-list-item__actions{grid-column:2;grid-row:2}.meal-plan-delete-confirm{grid-column:1 / -1}}
