.actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:16px 0 24px}.actions a{text-decoration:none}.danger-button{color:#a62b26;background:#ffe8e3;padding:12px;border-radius:14px}.recipe-card:before{pointer-events:none}.recipe-dialog{overscroll-behavior:contain}.recipe-dialog label{display:block;margin:18px 0 6px;font-size:16px}.recipe-dialog input:not([type=checkbox]){display:block;width:100%;font:inherit;padding:12px;border:1px solid var(--line);border-radius:12px;margin-top:8px}.recipe-dialog textarea{min-height:150px;font-size:16px}.recipe-dialog .ingredient-choice{display:flex;gap:12px;align-items:center;min-height:44px}.ingredient-choice input{width:22px;height:22px;accent-color:var(--coral)}.form-error{color:#a62b26}.image-note{font-size:13px;color:var(--muted);margin:8px 0}.dialog-recipe-image{display:block;width:100%;max-height:230px;object-fit:cover;border-radius:16px;margin:14px 0}.choice-row{min-height:58px}.plan-item{min-height:43px;color:var(--ink)}.plan-item strong{flex:1}.plan-item .day{min-width:31px}.recipe-open{min-height:54px}.tabbar button{font-size:14px;min-height:48px}.dialog-close{width:44px;height:44px}.toast{z-index:999;max-width:95vw;white-space:normal}.toast button{color:white;background:transparent;text-decoration:underline;padding:4px}.text-button{min-height:44px}.choice-row small{grid-column:2}.soft-button:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #365e40;outline-offset:3px}body:has(dialog[open]){overflow:hidden}.cloud-panel{display:flex;align-items:center;gap:7px}.header-icon{width:30px;height:30px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--muted);font-family:Georgia,serif;font-weight:700}.cloud-open{display:flex;align-items:center;gap:5px;min-height:34px;padding:5px 8px;background:var(--paper);border:1px solid var(--line);border-radius:100px;color:#526052;font-size:12px;font-weight:700}.cloud-mark{color:var(--coral);font-size:16px;line-height:1}@media(max-width:380px){.app-shell{padding-left:14px;padding-right:14px}.plan-item{gap:8px;padding:8px 10px}.recipe-dialog{padding:24px 16px}}@media(max-height:700px){.plan-item{min-height:40px}}
.week-heading{margin-top:20px;margin-bottom:16px}.plan-list{gap:9px}.plan-item{min-height:58px}.plan-item strong{font-size:15px;white-space:normal}.plan-item .day{min-width:42px}.plan-item.is-today{background:#ffeadb;border-color:#e5b79a;box-shadow:inset 4px 0 #e9573f}.plan-item.is-today .day{color:#a73925}.recipe-stats{display:grid;gap:5px;color:#657060;font-size:13px;line-height:1.4;margin:12px 0}.recipe-stats span:first-child{font-weight:600}.recipe-sort{display:flex;align-items:center;gap:10px;font-size:14px;margin:10px 0}.recipe-sort select{min-height:44px;max-width:75%;font:inherit;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:9px;color:var(--ink)}.history-note,.rating-hint{font-size:12px;line-height:1.5;color:#657060}.rating-controls{border:0;background:#f5f1e9;border-radius:16px;padding:12px;margin:16px 0}.rating-controls legend{font-weight:600;font-size:14px}.rating-star{width:44px;height:44px;background:transparent;color:#77776e;font-size:29px}.rating-star.selected{color:#a84720}.recipe-card:not(.has-image) .recipe-card-body{padding:0}.recipe-card .recipe-owner{background:#f4eee6;color:#6a625a}.header-icon{width:44px;height:44px}.cloud-open{min-height:44px}@media(max-height:700px){.plan-list{gap:6px}.plan-item{min-height:49px}.week-heading{margin-top:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.week-navigation{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;margin-top:18px;text-align:center}.week-navigation>button{width:44px;height:44px;border-radius:50%;background:var(--paper);border:1px solid var(--line);color:var(--ink);font-size:28px}.week-navigation h2{font-size:25px;margin:0 0 3px}.week-navigation p{font-size:13px;color:#657060;margin:0}.week-toolbar{display:flex;justify-content:space-between;align-items:center;margin:5px 2px 9px}.week-toolbar button:disabled{color:#7b8076;cursor:default;font-weight:400}
#bootPanel{padding:24px 6px;line-height:1.6}#bootPanel h2{font-size:26px}#bootPanel button{margin:8px 12px 8px 0}.meal-filters{display:grid;grid-template-columns:1fr 1fr;gap:12px}.meal-filters select{width:100%;min-height:44px;font:inherit;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:8px}.meal-option{display:grid;grid-template-columns:1fr 44px;gap:9px}.meal-option .choice-row{grid-template-columns:1fr}.meal-option .choice-row small{grid-column:1}.dialog-back{display:block;margin-bottom:14px}.member-list{padding-left:20px;line-height:1.8}details{padding:14px 0;border-bottom:1px solid var(--line)}summary{cursor:pointer;min-height:32px;font-weight:600}details p{font-size:14px;line-height:1.5}#friendResults{display:grid;gap:9px;margin-top:16px}
.plan-list .plan-item.is-today{box-shadow:none}
.sync-status{background:transparent;color:#526052;font-size:14px;min-height:44px;padding:4px}
.account-open{min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:100px;background:var(--paper);font-size:14px;color:var(--ink)}
.refresh-row{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px;font-size:14px;color:#526052;min-height:44px}
.ingredient-review{display:grid;grid-template-columns:80px 1fr;gap:8px;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}
.ingredient-review label{display:flex;align-items:center;gap:8px;margin:0;min-height:44px}
.ingredient-review input[type=checkbox]{width:24px;height:24px;accent-color:var(--coral)}
.ingredient-review .form-error{grid-column:1/-1;margin:0;font-size:14px}
.ingredient-review input:not([type=checkbox]){margin:0;min-width:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.source-text{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:14px}
.sharing-status{font-size:14px;color:#526052;margin:12px 0}
.toast.show{pointer-events:auto}
.grocery-item .grocery-name{text-align:left;min-width:0;font-size:16px;font-weight:400}
.grocery-item .check{flex-shrink:0;cursor:pointer}
.history-row{gap:12px;align-items:center;flex-wrap:wrap}
.history-row>span:first-child{flex:1}
.app-shell .history-note,.recipe-dialog .history-note{font-size:14px}
#archiveToggle{margin-left:18px}
.choice-list .meal-option{grid-template-columns:minmax(0,1fr) 52px}
.pull-refresh{height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;transition:height .28s cubic-bezier(.2,.7,.2,1);--pull-progress:0}
.pull-refresh.is-dragging{transition:none}
.ios-spinner{position:relative;width:28px;height:28px;opacity:var(--pull-progress);transform:rotate(calc(var(--pull-progress)*180deg))}
.ios-spinner span{position:absolute;left:12px;top:10px;width:4px;height:8px;border-radius:3px;background:#77777c;transform:rotate(calc(var(--segment)*45deg)) translateY(-9px);opacity:calc(.18 + var(--segment)*.10)}
.is-refreshing .ios-spinner{opacity:1;transform:none}
.is-refreshing .ios-spinner span{animation:ios-tick .8s linear infinite;animation-delay:calc(var(--segment)*-.1s)}
@keyframes ios-tick{0%{opacity:1}100%{opacity:.15}}
[data-view="shopping"] .refresh-row{position:relative;min-height:0;margin:0;display:block}
[data-view="shopping"] #refreshShopping{position:absolute;right:0;top:0;width:44px;height:44px;padding:0;font-size:27px;font-weight:400;color:#657060}
[data-view="shopping"] .shopping-heading{margin-right:48px;min-height:44px}
#refreshMessage:not(.sr-only){display:block;padding:6px 48px 10px 0;color:#a62b26;font-size:14px}
.swipe-row{position:relative;overflow:hidden;border-radius:12px}
.swipe-row .swipe-front{position:relative;z-index:1;background:var(--cream);transform:translateX(var(--swipe-x,0px));transition:transform .22s ease-out;padding-left:4px;padding-right:4px}
.swipe-row.is-swiping .swipe-front{transition:none;user-select:none;-webkit-user-select:none}
.swipe-delete{position:absolute;inset:0 0 0 auto;width:100px;min-height:44px;padding:10px 16px;background:#cf2926;color:white;font-size:16px;font-weight:600;pointer-events:none}
.swipe-open .swipe-delete{pointer-events:auto}
.swipe-row .grocery-name{overflow-wrap:anywhere}
html:has([data-view="shopping"].active){overscroll-behavior-y:none}
@media(prefers-reduced-motion:reduce){.pull-refresh,.swipe-row .swipe-front{transition:none}.is-refreshing .ios-spinner span{animation:none}}
