:root{--bg: #fff8ec;--text: #1f2320;--chip-bg: rgba(255, 255, 255, .76);--tab-bg: rgba(255, 255, 255, .92);color:var(--text);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--green: #2f7d55;--green-dark: #245f42;--coral: #f2634b;--amber: #f3a51d;--ink: #1f2320;--muted: #6c716b;--line: rgba(31, 35, 32, .12);--surface: #fffdf7;--surface-strong: #ffffff;--shadow: 0 24px 70px rgba(79, 53, 28, .18);--tab-height: 64px;--kbd-bg: rgba(255, 255, 255, .85);--kbd-border: var(--line)}[data-theme=dark]{--bg: #14171a;--text: #eef1ee;--muted: #9aa39c;--ink: #eef1ee;--surface: #1d2125;--surface-strong: #23282d;--line: rgba(255, 255, 255, .14);--chip-bg: rgba(255, 255, 255, .06);--tab-bg: rgba(20, 23, 26, .92);--shadow: 0 24px 70px rgba(0, 0, 0, .45);--kbd-bg: rgba(255, 255, 255, .1);--kbd-border: rgba(255, 255, 255, .18)}[data-theme=dark] .app-shell{background:radial-gradient(circle at 18% 12%,rgba(242,99,75,.18),transparent 30%),radial-gradient(circle at 78% 4%,rgba(47,125,85,.18),transparent 28%),linear-gradient(145deg,#14171a,#11151a 52%,#171b20)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden}button,input{font:inherit}button{border:0}button:disabled{cursor:not-allowed;opacity:.45}.app-shell{min-height:100vh;background:radial-gradient(circle at 18% 12%,rgba(242,99,75,.14),transparent 28%),radial-gradient(circle at 78% 4%,rgba(47,125,85,.14),transparent 26%),linear-gradient(145deg,#fff8ec,#f6fbef 52%,#fff5ee);padding:0 0 var(--tab-height) 0}.compact-header{align-items:center;display:flex;gap:14px;justify-content:space-between;padding:14px 22px 6px;flex-wrap:wrap}.header-stats{align-items:center;display:flex;gap:8px;flex-wrap:wrap}.header-stats>*{align-self:center}.header-stats span{align-items:center;background:var(--chip-bg);border:1px solid var(--line);border-radius:999px;color:var(--green-dark);display:inline-flex;font-size:13px;font-weight:850;line-height:1;padding:8px 12px}.header-reset{align-items:center;align-self:center;background:#f2634b14;border:1px solid rgba(242,99,75,.22);border-radius:999px;color:var(--coral);cursor:pointer;display:inline-flex;font-size:13px;font-weight:850;line-height:1;padding:8px 12px;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.header-reset:hover{background:#f2634b24;box-shadow:0 6px 16px #f2634b29;transform:translateY(-1px)}.header-reset:active{transform:translateY(0) scale(.96)}.brand-row{align-items:center;align-self:center;display:inline-flex}.brand-logo{height:clamp(32px,5vw,48px);width:auto;object-fit:contain;border-radius:8px}.dish-card-detail{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;background:#000000d1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;padding:28px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:4px;animation:detailIn .2s ease}@keyframes detailIn{0%{opacity:0}to{opacity:1}}.dish-card-detail h3{font-size:clamp(14px,1.8vw,17px);margin:12px 0 6px;color:#ffffffe6}.dish-card-detail h3:first-child{margin-top:0}.dish-card-detail ul,.dish-card-detail ol{margin:0;padding-left:20px}.dish-card-detail li{font-size:clamp(13px,1.5vw,15px);line-height:1.8;color:#ffffffc7}.detail-tap-hint{margin-top:auto;text-align:center;font-size:clamp(11px,1.2vw,14px);color:#ffffff73;padding-top:12px}:root{--deck-width: clamp(300px, 92vw, 520px);--deck-height: clamp(420px, 78vh, 720px);--card-title: clamp(26px, 4.2vw, 38px);--card-desc: clamp(14px, 1.7vw, 17px);--card-tag: clamp(11px, 1.2vw, 14px);--stamp-text: clamp(22px, 2.8vw, 30px);--action-size: clamp(58px, 9.5vw, 76px);--action-text: clamp(11px, 1.4vw, 14px);--hint-text: clamp(11px, 1.2vw, 14px)}.swipe-screen-v2{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:calc(100vh - var(--tab-height) - 60px);padding:8px 22px 18px}.deck-panel{align-items:center;display:flex;flex-direction:column;gap:14px}.deck-shell{height:var(--deck-height);min-height:380px;position:relative;width:var(--deck-width)}.dish-card{background:var(--surface-strong);border:1px solid rgba(255,255,255,.8);border-radius:28px;box-shadow:var(--shadow);cursor:grab;height:100%;top:0;right:0;bottom:0;left:0;overflow:hidden;position:absolute;touch-action:none;width:100%;will-change:transform,opacity}.dish-card:not(.ghost):not(.flying){animation:cardIn .34s cubic-bezier(.16,1,.3,1)}@keyframes cardIn{0%{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}.dish-card.ghost{filter:saturate(.78);opacity:.6;pointer-events:none}.dish-card-image{background:#f4eadc;display:block;height:100%;object-fit:cover;width:100%}.dish-card-content{background:linear-gradient(180deg,transparent 0%,rgba(0,0,0,.58) 22%,rgba(0,0,0,.88) 100%);bottom:0;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;left:0;padding:40px 24px 24px;position:absolute;right:0}.dish-card-content h2{font-size:var(--card-title);letter-spacing:0;line-height:1.05;margin:10px 0}.dish-card-content p{color:#ffffffd1;font-size:var(--card-desc);line-height:1.65;margin:0}.dish-tags,.dish-meta{display:flex;flex-wrap:wrap;gap:8px}.dish-tags span{background:#ffffff2e;border:1px solid rgba(255,255,255,.22);border-radius:999px;font-size:var(--card-tag);font-weight:800;padding:.55em .8em}.dish-meta{margin-top:18px}.dish-meta span{align-items:center;background:#ffffff29;border-radius:999px;display:inline-flex;font-weight:750;gap:6px;padding:8px 10px}.card-actions{display:flex;gap:clamp(12px,4vw,28px);justify-content:center;margin-top:18px;pointer-events:auto}.card-actions .round-action{background:#fffffff0;border:1px solid rgba(255,255,255,.6);box-shadow:0 10px 28px #00000061;color:var(--ink)}.card-actions .round-action.skip{color:var(--coral)}.card-actions .round-action.like{color:var(--green)}.card-actions .round-action:hover{background:#fff;box-shadow:0 14px 34px #0000007a;transform:translateY(-4px) scale(1.08)}.card-actions .round-action:active{background:#ffffffd9;transform:translateY(0) scale(.9);transition-duration:90ms}.swipe-stamp{align-items:center;border:4px solid currentColor;border-radius:18px;display:inline-flex;font-size:var(--stamp-text);font-weight:1000;gap:8px;letter-spacing:0;padding:.4em .6em;position:absolute;opacity:0;text-shadow:0 2px 12px rgba(255,255,255,.4);top:28px;transition:opacity .11s linear;will-change:opacity;z-index:3}.dish-card.dragging{transition:none}.dish-card.resting{transition:transform .32s cubic-bezier(.16,1,.3,1)}.swipe-stamp.like{color:#45d483;right:28px;transform:rotate(10deg)}.swipe-stamp.skip{color:#ff775f;left:28px;transform:rotate(-10deg)}.swipe-stamp.pending{color:#ffc24b;left:50%;transform:translate(-50%) rotate(-2deg)}.swipe-hint{align-items:center;background:#1f2320bd;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;color:#fff;display:inline-flex;font-size:var(--hint-text);font-weight:800;gap:8px;left:50%;padding:.55em .9em;position:absolute;top:16px;transform:translate(-50%);z-index:5;pointer-events:none;box-shadow:0 10px 26px #00000040;animation:hintBob 1.6s ease-in-out infinite}.swipe-hint .hint-text{white-space:nowrap}.swipe-hint .hint-chevron{font-size:clamp(18px,2.5vw,24px);line-height:1;opacity:.85}.swipe-hint .hint-chevron.left{animation:chevronL 1.4s ease-in-out infinite}.swipe-hint .hint-chevron.right{animation:chevronR 1.4s ease-in-out infinite}@keyframes hintBob{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(-4px)}}@keyframes chevronL{0%,to{transform:translate(0);opacity:.45}50%{transform:translate(-5px);opacity:1}}@keyframes chevronR{0%,to{transform:translate(0);opacity:.45}50%{transform:translate(5px);opacity:1}}.round-action{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:999px;box-shadow:0 12px 30px #4f351c1f;color:var(--ink);cursor:pointer;display:inline-flex;flex-direction:column;font-size:var(--action-text);font-weight:900;height:var(--action-size);justify-content:center;min-width:var(--action-size);transition:transform .22s cubic-bezier(.34,1.56,.64,1),box-shadow .22s ease,background .22s ease}.round-action:hover{transform:translateY(-3px) scale(1.05);box-shadow:0 18px 38px #4f351c2e}.round-action:active{transform:translateY(0) scale(.9);transition-duration:90ms}.round-action.like:hover{box-shadow:0 16px 36px #2f7d5557}.round-action.skip:hover{box-shadow:0 16px 36px #f2634b57}.round-action.pending:hover{box-shadow:0 16px 36px #f3a51d57}.round-action.like{color:var(--green)}.round-action.pending{color:var(--amber)}.round-action.skip{color:var(--coral)}.text-button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;font-weight:700;padding:6px 10px;border-radius:8px;transition:color .15s ease,background .15s ease}.text-button:hover:not(:disabled){color:var(--ink);background:#ffffff1a}.deck-complete,.empty-state{align-items:center;background:var(--chip-bg);border:1px solid var(--line);border-radius:28px;color:var(--ink);display:flex;flex-direction:column;height:100%;justify-content:center;padding:28px;text-align:center}.deck-complete h2,.empty-state h3{font-size:clamp(20px,3vw,28px);margin:14px 0 8px}.deck-complete p,.empty-state p{color:var(--muted);font-size:clamp(13px,1.6vw,16px);line-height:1.6;margin:0 0 18px}.deck-complete-emoji{font-size:clamp(38px,6vw,56px);line-height:1}.deck-complete-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.loading-state{align-items:center;color:var(--muted);display:flex;justify-content:center;min-height:40vh;padding-top:80px}.flow-page{margin:0 auto;max-width:820px;padding:12px 22px 24px;animation:fadeIn .22s ease}.flow-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.flow-header h1{font-size:clamp(28px,4vw,40px);letter-spacing:0;line-height:1.05;margin:0}.serving-control{align-items:center;background:var(--chip-bg);border:1px solid var(--line);border-radius:999px;display:flex;font-weight:900;gap:10px;padding:8px}.serving-control button{align-items:center;aspect-ratio:1;background:var(--surface-strong);border-radius:999px;color:var(--green);cursor:pointer;display:inline-flex;justify-content:center;transition:transform .18s ease;width:34px}.serving-control button:hover{transform:translateY(-1px)}.dish-list{display:grid;gap:12px}.list-card{align-items:center;background:var(--chip-bg);border:1px solid var(--line);border-radius:22px;display:grid;gap:14px;grid-template-columns:100px 1fr auto;padding:12px;animation:slideIn .25s ease}.list-card img{aspect-ratio:1.15;border-radius:16px;object-fit:cover;width:100%}.list-card h3{font-size:20px;margin:0 0 4px}.list-card p{color:var(--muted);line-height:1.5;margin:0 0 6px}.list-card span{color:var(--green-dark);font-weight:850}.list-card.dragging{opacity:.4;transform:scale(.98)}.list-card.drag-over{border-color:var(--green);box-shadow:0 0 0 2px #2f7d554d}.list-card-actions{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.reorder-buttons{display:flex;gap:4px}.icon-button.small{flex:0 0 auto;width:32px;aspect-ratio:1;font-size:14px;font-weight:900}.list-card[draggable=true]{cursor:grab}.list-card[draggable=true]:active{cursor:grabbing}.pending-section{border-top:1px solid var(--line);margin-top:28px;padding-top:20px}.pending-section h2{font-size:18px;margin:0 0 14px;color:var(--amber)}.pending-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.pending-header h2{margin:0}.pending-batch-actions{display:flex;gap:8px;align-items:center}.pending-inline-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.skipped-section{border-top:1px solid var(--line);margin-top:28px;padding-top:16px}.skipped-toggle{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;font-weight:700;padding:8px 0;width:100%;text-align:left;transition:color .15s ease}.skipped-toggle:hover{color:var(--ink)}.skipped-grid{margin-top:12px}.summary-chip{align-items:center;background:var(--chip-bg);border:1px solid var(--line);border-radius:999px;color:var(--green-dark);display:inline-flex;font-weight:850;gap:8px;padding:10px 14px}.flow-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:18px}.shopping-groups{display:grid;gap:14px}.shopping-group{background:var(--chip-bg);border:1px solid var(--line);border-radius:24px;box-shadow:0 14px 44px #4f351c1a;padding:14px}.shopping-group h2{font-size:18px;margin:2px 0 12px}.shopping-items{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.shopping-item{align-items:center;background:var(--surface-strong);border:1px solid var(--line);border-radius:16px;cursor:pointer;display:grid;gap:10px;grid-template-columns:auto 1fr auto;min-height:54px;padding:10px 12px;transition:opacity .2s ease,background .2s ease,border-color .2s ease}.shopping-item input{accent-color:var(--green);height:18px;width:18px;transition:transform .15s ease}.shopping-item input:checked{transform:scale(1.25)}.shopping-item strong{color:var(--green-dark);transition:color .2s ease,text-decoration-color .2s ease}.shopping-item span{transition:color .2s ease,text-decoration-color .2s ease}.shopping-item.checked{background:#2f7d550f;border-color:#2f7d5533}.shopping-item.checked span,.shopping-item.checked strong{color:#939990;text-decoration:line-through}.recipe-card{background:var(--chip-bg);border:1px solid var(--line);border-radius:24px;box-shadow:0 14px 44px #4f351c1a;display:grid;gap:0;grid-template-columns:minmax(240px,.85fr) minmax(280px,1.15fr);max-height:min(64vh,640px);overflow:hidden;padding:0;position:relative;touch-action:pan-y}.recipe-card>img{height:100%;min-height:480px;object-fit:cover;width:100%}.recipe-content{overflow-y:auto;padding:24px}.recipe-title-row{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.recipe-title-row h2{font-size:30px;margin:0 0 6px}.recipe-title-row p{color:var(--muted);line-height:1.6;margin:0}.recipe-content section{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.recipe-content h3{margin:0 0 8px}.recipe-content li{line-height:1.8;margin-bottom:8px}.recipe-card.dragging{cursor:grabbing;transition:none;-webkit-user-select:none;user-select:none}.recipe-card.dragging img{pointer-events:none}.recipe-card.resting{transition:transform .28s cubic-bezier(.16,1,.3,1)}.recipe-index-chip{align-items:center;background:#2f7d551f;border-radius:999px;color:var(--green-dark);display:inline-flex;flex:0 0 auto;font-size:13px;font-weight:900;padding:6px 12px;white-space:nowrap}.recipe-media-placeholder{align-items:center;background:repeating-linear-gradient(45deg,#2f7d550a,#2f7d550a 10px,#2f7d5514 10px,#2f7d5514 20px);border:1px dashed rgba(47,125,85,.3);border-radius:14px;color:var(--muted);display:flex;font-size:14px;font-weight:700;justify-content:center;min-height:96px;padding:18px;text-align:center}.recipe-media-list{display:grid;gap:12px}.recipe-media-list figure{margin:0}.recipe-media-list img,.recipe-media-list video{border-radius:14px;width:100%}.recipe-media-list figcaption{color:var(--muted);font-size:13px;margin-top:6px}.recipe-swipe-hint{align-items:center;background:#1f2320d1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;color:#fff;display:inline-flex;font-size:14px;font-weight:900;padding:8px 14px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);z-index:4}.recipe-swipe-hint.prev{left:18px}.recipe-swipe-hint.next{right:18px}.recipe-swipe-tip{color:var(--muted);font-size:13px;margin:12px 0 0;text-align:center}.tab-bar{align-items:center;background:var(--tab-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);bottom:0;display:flex;height:var(--tab-height);justify-content:space-around;left:0;padding:0 8px;padding-bottom:env(safe-area-inset-bottom,0);position:fixed;right:0;z-index:10}.tab-item{align-items:center;background:none;border-radius:12px;color:var(--muted);cursor:pointer;display:flex;flex-direction:column;gap:2px;padding:6px 16px;position:relative;transition:color .18s ease,background .18s ease}.tab-item.active{color:var(--green-dark)}.tab-item:hover{background:#2f7d550f}.tab-icon{font-size:20px;line-height:1}.tab-label{font-size:11px;font-weight:800}.tab-badge{align-items:center;background:var(--coral);border-radius:999px;color:#fff;display:inline-flex;font-size:10px;font-weight:900;height:16px;justify-content:center;min-width:16px;padding:0 4px;position:absolute;right:4px;top:2px}.primary-button,.secondary-button,.icon-button{align-items:center;border-radius:999px;cursor:pointer;display:inline-flex;gap:8px;justify-content:center;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.primary-button:hover,.secondary-button:hover,.icon-button:hover{transform:translateY(-1px)}.primary-button{background:var(--green);box-shadow:0 12px 26px #2f7d553d;color:#fff;font-weight:800;min-height:46px;padding:0 22px}.primary-button.small{font-size:13px;min-height:36px;padding:0 14px}.secondary-button{background:var(--chip-bg);border:1px solid var(--line);color:var(--ink);font-weight:750;min-height:42px;padding:0 16px}.secondary-button.small{font-size:13px;min-height:36px;padding:0 12px}.icon-button{aspect-ratio:1;background:#fff2ec;color:var(--coral);flex:0 0 40px;width:40px}.theme-toggle{position:fixed;top:12px;right:12px;z-index:60;display:flex;gap:2px;padding:4px;border-radius:999px;background:var(--chip-bg);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.theme-toggle button{border:0;background:transparent;cursor:pointer;width:32px;height:32px;border-radius:999px;font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center;opacity:.55;transition:opacity .16s ease,background .16s ease}.theme-toggle button.active{opacity:1;background:#2f7d5529}.theme-toggle button:hover{opacity:1}@media(max-width:860px){.compact-header{padding:10px 16px 4px}.swipe-screen-v2{padding:4px 14px 14px;min-height:calc(100vh - var(--tab-height) - 48px)}.shopping-items,.recipe-card{grid-template-columns:1fr}.recipe-card{max-height:none}.recipe-card>img{aspect-ratio:1.2;min-height:0}.flow-page{padding:8px 16px 20px}}@media(max-width:560px){.compact-header{align-items:center;flex-direction:row;gap:8px}.compact-header>.brand-row,.compact-header>.header-stats{width:auto}.header-stats{flex:1;justify-content:flex-end}.flow-header{align-items:flex-start;flex-direction:column}.list-card{grid-template-columns:80px 1fr auto}.list-card h3{font-size:17px}.dish-card-content{padding:50px 18px 20px}.flow-actions{gap:8px}.flow-actions .primary-button,.flow-actions .secondary-button{flex:1 1 auto}}@media(prefers-reduced-motion:reduce){.swipe-hint,.swipe-hint .hint-chevron{animation:none!important}.dish-card:not(.ghost):not(.flying),.dish-card.dragging,.dish-card.resting{animation:none!important;transition-duration:.001ms!important}.round-action,.round-action:hover,.round-action:active{transition-duration:.001ms!important}.flow-page,.list-card,.shopping-item,.shopping-item input,.shopping-item span,.shopping-item strong{animation:none!important;transition-duration:.001ms!important}}
