:root{--bg: #12100e;--bg-elevated: #1c1917;--surface: #1c1917;--surface-raised: #292524;--border: #302b28;--border-strong: #44403c;--text: #f5f1eb;--text-dim: #a8a29e;--text-faint: #78716c;--accent: #e8845a;--accent-quiet: #3a241a;--accent-text: #1a0f09;--danger: #e88a7d;--step--1: .8125rem;--step-0: .9375rem;--step-1: 1.0625rem;--step-2: 1.25rem;--step-3: 1.5rem;--radius: 14px;--radius-sm: 10px;--gap: 14px;--touch: 48px;--shadow: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -12px rgb(0 0 0 / .5);--ease: cubic-bezier(.2, 0, .1, 1);color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #fdfcfa;--bg-elevated: #ffffff;--surface: #ffffff;--surface-raised: #f5f2ee;--border: #e7e1da;--border-strong: #d3cabf;--text: #1c1917;--text-dim: #57534e;--text-faint: #8a8177;--accent: #c2571f;--accent-quiet: #fdf0e8;--accent-text: #ffffff;--danger: #b3402c;--shadow: 0 1px 2px rgb(28 25 23 / .06), 0 8px 24px -14px rgb(28 25 23 / .18);color-scheme:light}}*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:var(--step-0);line-height:1.55;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}#app{max-width:640px;margin:0 auto;padding:calc(var(--topbar-h) + 8px) 16px calc(var(--tabbar-h) + 28px);animation:view-in .26s var(--ease)}@keyframes view-in{0%{opacity:0;transform:translateY(8px)}}:root{--topbar-h: 54px;--tabbar-h: 62px}.topbar{position:fixed;top:0;left:0;right:0;z-index:30;height:calc(var(--topbar-h) + env(safe-area-inset-top));padding:env(safe-area-inset-top) 16px 0;display:flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.topbar-title{font-size:var(--step-1);font-weight:640;letter-spacing:-.014em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-back{display:grid;place-items:center;width:40px;height:40px;margin-left:-10px;color:var(--text);border-radius:50%;flex:0 0 auto}.topbar-back:active{background:var(--surface-raised)}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;display:flex;justify-content:center;gap:8px;padding:6px 16px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.tab{flex:1;max-width:160px;min-height:50px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:0;font-size:.6875rem;font-weight:560;letter-spacing:.01em;color:var(--text-faint);background:transparent;border:none;border-radius:var(--radius-sm);text-decoration:none;transition:color .15s var(--ease)}.tab svg{width:23px;height:23px}.tab.active{color:var(--accent)}.tab:active{background:var(--surface)}.sheet-scrim{position:fixed;inset:0;z-index:40;background:#00000073;opacity:0;pointer-events:none;transition:opacity .24s var(--ease)}.sheet-scrim.open{opacity:1;pointer-events:auto}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;max-width:640px;margin:0 auto;padding:10px 20px calc(24px + env(safe-area-inset-bottom));background:var(--bg-elevated);border-radius:22px 22px 0 0;border:1px solid var(--border);border-bottom:none;box-shadow:0 -8px 40px -12px #00000080;transform:translateY(100%);transition:transform .3s cubic-bezier(.3,0,0,1);visibility:hidden}.sheet.open{transform:translateY(0);visibility:visible}.sheet-grip{width:38px;height:4px;border-radius:2px;background:var(--border-strong);margin:0 auto 16px}.sheet-title{font-size:var(--step-2);font-weight:640;letter-spacing:-.016em;text-transform:none;color:var(--text);margin:0 0 16px}.sheet-hint{margin:12px 0 0;line-height:1.5}.sheet-alt{width:100%;margin-top:16px}.clip-offer{display:flex;align-items:stretch;gap:8px;margin-bottom:14px}.clip-main{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;min-height:auto;text-align:left;background:var(--accent-quiet);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);color:var(--text);overflow:hidden}.clip-label{font-size:.6875rem;font-weight:640;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}.clip-url{font-size:var(--step--1);color:var(--text-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.clip-dismiss{flex:0 0 auto;padding:0 12px;font-size:var(--step--1);color:var(--text-dim);background:transparent;border:1px solid var(--border)}body.sheet-open{overflow:hidden}h1{font-size:var(--step-3);font-weight:640;letter-spacing:-.021em;line-height:1.2;margin:0 0 2px}h2{font-size:var(--step--1);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:32px 0 10px}.subtitle{color:var(--text-dim);font-size:var(--step-0);margin:0 0 22px}.dim{color:var(--text-dim)}.small{font-size:var(--step--1)}input[type=text],input[type=search],textarea{width:100%;padding:13px 15px;font:inherit;font-size:16px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color .15s var(--ease),background .15s var(--ease)}input::placeholder,textarea::placeholder{color:var(--text-faint)}input:focus,textarea:focus{outline:none;border-color:var(--accent);background:var(--bg-elevated)}textarea{resize:vertical;line-height:1.6}button{min-height:var(--touch);padding:0 18px;font:inherit;font-size:var(--step-0);font-weight:560;color:var(--accent-text);background:var(--accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:opacity .15s var(--ease),transform .08s var(--ease)}button:active{transform:scale(.985)}button:disabled{opacity:.45;cursor:default}button.subtle{color:var(--text-dim);background:transparent;border:1px solid var(--border-strong);min-height:40px;padding:0 14px;font-weight:500}button.subtle:hover{color:var(--text);border-color:var(--text-faint)}button.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}label{display:block;font-size:var(--step--1);font-weight:560;color:var(--text-dim);margin:20px 0 7px}a{color:var(--accent);text-underline-offset:2px}a.back{display:inline-flex;align-items:center;gap:6px;min-height:40px;color:var(--text-dim);text-decoration:none;font-size:var(--step-0)}a.back:hover{color:var(--text)}.action-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:20px}.paste-form{display:flex;gap:9px;margin-bottom:10px}.paste-form input{flex:1;min-width:0;min-height:var(--touch);padding:0 15px}.notice{font-size:var(--step-0);padding:12px 14px;border-radius:var(--radius-sm);margin-bottom:14px;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);animation:slide-in .22s var(--ease)}@keyframes slide-in{0%{opacity:0;transform:translateY(-4px)}}.notice.duplicate{color:var(--text);background:var(--surface-raised)}.notice.error{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 28%,transparent);background:color-mix(in srgb,var(--danger) 7%,transparent)}.notice.offer{background:var(--accent-quiet);border-color:color-mix(in srgb,var(--accent) 35%,transparent);color:var(--text)}.offer-url{overflow-wrap:anywhere;font-size:var(--step--1);color:var(--text-dim);margin:4px 0 0;font-variant-numeric:tabular-nums}.search-panel{display:flex;flex-direction:column;gap:10px;margin:4px 0 6px}.search-panel input{min-height:var(--touch);padding:0 15px}.cook-with{border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 14px;background:var(--surface)}.cook-with[open]{padding-bottom:14px}.cook-with summary{min-height:var(--touch);display:flex;align-items:center;cursor:pointer;font-weight:560;list-style:none}.cook-with summary::-webkit-details-marker{display:none}.cook-with summary:after{content:"＋";margin-left:auto;color:var(--text-faint);font-weight:400}.cook-with[open] summary:after{content:"−"}.cook-with p{margin:0 0 10px}.filters{margin-top:-2px}.filters summary{min-height:34px;display:flex;align-items:center;cursor:pointer;font-size:var(--step--1);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);list-style:none}.filters summary::-webkit-details-marker{display:none}.filters summary:after{content:"⌄";margin-left:7px;font-size:1rem;transform:translateY(-2px)}.filters[open] summary:after{content:"⌃";transform:translateY(2px)}.chip-scroll{display:flex;gap:7px;overflow-x:auto;padding:4px 16px 8px;margin:0 -16px;scrollbar-width:none;scroll-padding:16px}.chip-scroll::-webkit-scrollbar{display:none}.chip-scroll .chip{flex:0 0 auto}.chip-row{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}.chip{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:var(--step--1);font-weight:500;padding:7px 13px;min-height:38px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-dim);cursor:default;transition:all .15s var(--ease)}button.chip{cursor:pointer}button.chip:hover{border-color:var(--text-faint);color:var(--text)}.chip.filter.active{color:var(--accent-text);background:var(--accent);border-color:var(--accent);font-weight:600}.chip.filter.active:hover{color:var(--accent-text)}.chip.suggest{border-style:dashed;color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent);background:transparent}.chip.suggest:hover{background:var(--accent-quiet);color:var(--accent)}.chip.dismiss,.chip.add{color:var(--text-faint);background:transparent;border-style:dashed}.chip-x{min-height:auto;padding:0 1px;margin-left:1px;font-size:1.05rem;line-height:1;color:var(--text-faint);background:transparent;border:none;cursor:pointer}.chip-x:hover{color:var(--text)}.small-chip{font-size:.75rem;padding:3px 9px;min-height:auto}.suggest-hint{display:inline-block;margin-top:10px;font-size:var(--step--1);font-weight:560;color:var(--accent);text-decoration:none}.suggest-hint:hover{text-decoration:underline}.chip.accept-all{color:var(--accent-text);background:var(--accent);border-color:var(--accent);border-style:solid;font-weight:600}.suggestions{margin:12px 0 4px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--accent-quiet)}.suggestions p{margin:0}.suggestions .chip-row{margin-bottom:0}.folder-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px 12px;margin-top:8px}.folder{display:block;padding:0;text-align:left;color:var(--text);text-decoration:none;background:none;border:none;min-height:auto;animation:card-in .28s var(--ease) backwards}.folder-cover{position:relative;aspect-ratio:1 / 1;border-radius:var(--radius);overflow:hidden;background:var(--surface-raised);border:1px solid var(--border);display:grid;place-items:center;transition:transform .14s var(--ease),border-color .14s var(--ease)}.folder:active .folder-cover{transform:scale(.975)}.folder:hover .folder-cover{border-color:var(--border-strong)}.folder-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}.folder-glyph{position:relative;width:34px;height:34px;color:var(--text-faint)}.folder-glyph svg{width:100%;height:100%}.folder-cover.no-image img{display:none}.folder.pinned .folder-cover{border-color:color-mix(in srgb,var(--accent) 45%,transparent)}.new-folder .folder-cover{border-style:dashed}.new-folder .folder-glyph{color:var(--accent)}.folder-name{font-size:var(--step-0);font-weight:600;letter-spacing:-.008em;margin:9px 0 1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-count{font-size:var(--step--1);color:var(--text-faint);margin:0}.pick-list{display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow-y:auto;margin-bottom:4px}.pick-row{display:flex;align-items:center;gap:12px;width:100%;min-height:var(--touch);padding:10px 14px;text-align:left;font-size:var(--step-0);font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.pick-row.on{border-color:color-mix(in srgb,var(--accent) 50%,transparent);background:var(--accent-quiet)}.pick-tick{flex:0 0 22px;height:22px;display:grid;place-items:center;border:1.5px solid var(--border-strong);border-radius:7px;color:var(--accent-text);font-size:.75rem;font-weight:700}.pick-row.on .pick-tick{background:var(--accent);border-color:var(--accent)}.pick-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.draft-banner{margin:14px 0 18px;padding:14px 16px;border-radius:var(--radius);border:1px dashed color-mix(in srgb,var(--accent) 45%,transparent);background:var(--accent-quiet)}.draft-head{margin:0 0 4px;font-size:var(--step-0);font-weight:620;color:var(--accent)}.draft-banner p{margin:0 0 4px}.draft-assumptions{margin:10px 0 0;padding-left:18px;font-size:var(--step--1);color:var(--text-dim)}.draft-assumptions li{margin-bottom:3px}.draft-banner .action-row{margin-top:12px}.badge.draft{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);border-style:dashed;background:transparent}.settings-note{margin:0 0 12px;line-height:1.5}.switch{display:flex;align-items:center;gap:12px;min-height:var(--touch);margin:0;padding:4px 0;font-size:var(--step-0);font-weight:400;color:var(--text);text-transform:none;letter-spacing:0;cursor:pointer}.switch input{flex:0 0 auto;width:20px;height:20px;accent-color:var(--accent)}.library-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 0 10px}.section-label{font-size:var(--step--1);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:0}.card-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gap)}.card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:15px;box-shadow:var(--shadow);transition:border-color .15s var(--ease),transform .12s var(--ease);animation:card-in .28s var(--ease) backwards}@keyframes card-in{0%{opacity:0;transform:translateY(6px)}}.card:hover{border-color:var(--border-strong)}.card.has-thumb{padding-top:0;overflow:hidden}.card-thumb{display:block;margin:0 -15px 14px;aspect-ratio:2 / 1;background:var(--surface-raised);overflow:hidden}.card-thumb img{width:100%;height:100%;object-fit:cover;display:block}.card-link{display:block;color:var(--text);text-decoration:none}.card-title{font-size:var(--step-1);font-weight:600;letter-spacing:-.011em;line-height:1.3;margin:0 0 7px;overflow-wrap:anywhere}.card-meta{display:flex;flex-wrap:wrap;gap:7px;align-items:center;font-size:var(--step--1);color:var(--text-dim)}.card-meta a{color:var(--text-dim);text-decoration:none;border-bottom:1px solid var(--border-strong)}.card-meta a:hover{color:var(--text)}.badge{display:inline-flex;align-items:center;font-size:.75rem;font-weight:500;padding:3px 9px;border-radius:999px;background:var(--surface-raised);color:var(--text-dim);border:1px solid transparent}.badge.good{color:var(--accent);background:var(--accent-quiet)}.badge.working{color:var(--text-dim);animation:pulse 1.9s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}.card-facts{font-size:var(--step--1);color:var(--text-faint);margin:8px 0 0}.card .chip-row{margin:9px 0 0}.card-meta+.card-meta{margin-top:9px}.match-line{font-size:var(--step-0);margin:5px 0 8px;color:var(--text-dim)}.match-line strong{color:var(--accent);font-weight:640}.empty{color:var(--text-dim);text-align:center;padding:44px 24px;border:1px dashed var(--border-strong);border-radius:var(--radius);line-height:1.6}.empty p{margin:0 0 6px}.empty p:last-child{margin-bottom:0}.hero{position:relative;margin:calc(-1 * (var(--topbar-h) + 8px)) -16px 16px;aspect-ratio:16 / 9;max-height:34vh;overflow:hidden;background:var(--surface-raised);display:flex;align-items:flex-end}.hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-fade{position:absolute;inset:0;background:linear-gradient(to bottom,color-mix(in srgb,var(--bg) 55%,transparent) 0%,transparent 32%,transparent 45%,color-mix(in srgb,var(--bg) 88%,transparent) 88%,var(--bg) 100%)}.hero-title{position:relative;margin:0;padding:0 16px 16px;font-size:1.6rem;font-weight:700;letter-spacing:-.022em;line-height:1.18;color:#fff;text-shadow:0 1px 12px rgb(0 0 0 / .5)}.hero.broken{aspect-ratio:auto;max-height:none;background:none;margin-top:0}.hero.broken img,.hero.broken .hero-fade{display:none}.hero.broken .hero-title{color:var(--text);text-shadow:none;padding:0 0 4px;font-size:var(--step-3)}.sticky-actions{position:fixed;left:0;right:0;bottom:0;z-index:25;max-width:640px;margin:0 auto;display:flex;gap:9px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.primary-cta{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:var(--step-1);font-weight:600}.sticky-actions .subtle{min-height:var(--touch);flex:0 0 auto}.first-run{border:none;padding:48px 24px}.first-run-icon{width:52px;height:52px;margin:0 auto 18px;color:var(--text-faint)}.first-run-icon svg{width:100%;height:100%}.first-run strong{font-size:var(--step-2);font-weight:640;letter-spacing:-.014em;color:var(--text)}.first-run button{margin-top:20px}.attribution{margin:6px 0;font-size:var(--step-0);color:var(--text-dim)}.attribution a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.plain-list,.step-list{padding-left:0;margin:0;list-style:none}.plain-list li{padding:10px 0 10px 20px;border-bottom:1px solid var(--border);position:relative}.plain-list li:before{content:"";position:absolute;left:3px;top:20px;width:4px;height:4px;border-radius:50%;background:var(--text-faint)}.plain-list li:last-child{border-bottom:none}.step-list{counter-reset:step}.step-list li{counter-increment:step;padding:12px 0 12px 34px;position:relative;line-height:1.6}.step-list li:before{content:counter(step);position:absolute;left:0;top:12px;width:23px;height:23px;display:grid;place-items:center;border-radius:50%;background:var(--surface-raised);color:var(--text-dim);font-size:.75rem;font-weight:640}.note-partial{font-size:var(--step-0);color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border-strong);border-radius:var(--radius-sm);padding:12px 14px;margin:16px 0}.invitation{border:1px dashed var(--border-strong);border-radius:var(--radius);padding:26px 22px;margin:22px 0;text-align:center}.invitation p{margin:0 0 8px}.invitation button{margin-top:10px}.raw-caption{margin-top:26px;font-size:var(--step--1)}.raw-caption summary{cursor:pointer;color:var(--text-faint);min-height:40px;display:flex;align-items:center}.raw-caption pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;font-family:inherit;line-height:1.6;margin:8px 0 0}body.cooking{--touch: 56px;background:var(--bg)}body.cooking #app{padding:calc(16px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom))}body.cooking button,body.cooking button.subtle{min-height:var(--touch)}.cook-header{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--border)}.cook-title{font-size:var(--step-1);font-weight:640;letter-spacing:-.011em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cook-ingredients{margin-bottom:22px}.cook-ingredients summary{min-height:var(--touch);display:flex;align-items:center;cursor:pointer;font-weight:600;font-size:var(--step-1);list-style:none}.cook-ingredients summary::-webkit-details-marker{display:none}.cook-ingredients summary:after{content:"⌄";margin-left:auto;color:var(--text-faint);font-size:1.2rem;line-height:1;transform:translateY(-3px)}.cook-ingredients[open] summary:after{content:"⌃";transform:translateY(3px)}.check-list{list-style:none;margin:0;padding:0}.check-list .check{display:flex;align-items:center;gap:14px;width:100%;min-height:var(--touch);padding:11px 14px;margin-bottom:7px;text-align:left;font-size:1.0625rem;font-weight:450;line-height:1.4;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.check-list .check.checked{color:var(--text-faint);background:transparent;border-color:var(--border)}.check-list .check.checked span:last-child{text-decoration:line-through;text-decoration-color:var(--text-faint)}.check .tick{flex:0 0 26px;height:26px;display:grid;place-items:center;border:1.5px solid var(--border-strong);border-radius:8px;color:var(--accent-text);font-size:.8rem;font-weight:700;transition:all .15s var(--ease)}.check.checked .tick{background:var(--accent);border-color:var(--accent)}.step-counter{color:var(--text-faint);font-size:var(--step--1);font-weight:600;letter-spacing:.05em;text-transform:uppercase;margin:0 0 10px}.cook-step{font-size:1.4rem;line-height:1.5;letter-spacing:-.011em;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-height:150px;box-shadow:var(--shadow)}.cook-step.done{color:var(--text-faint)}.cook-nav{display:flex;gap:9px;margin-top:18px}.cook-nav button{flex:1;min-height:var(--touch);font-size:var(--step-1)}.cook-nav button.subtle{flex:0 0 auto;min-width:88px}@media(min-width:720px){#app{padding-top:40px}h1{font-size:1.75rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
