:root,:root[data-theme=light]{--paper: oklch(.975 .008 83);--paper-2: oklch(.955 .01 83);--card: oklch(.992 .005 86);--ink: oklch(.255 .012 64);--ink-2: oklch(.42 .013 62);--muted: oklch(.56 .012 64);--line: oklch(.905 .01 78);--line-2: oklch(.835 .012 74);--tape: oklch(.86 .05 88 / .55);--shadow-1: 0 1px 2px oklch(.3 .02 64 / .05), 0 2px 8px oklch(.3 .02 64 / .05);--shadow-2: 0 2px 6px oklch(.3 .02 64 / .07), 0 18px 40px oklch(.3 .02 64 / .12)}:root[data-theme=dark]{--paper: oklch(.205 .01 62);--paper-2: oklch(.18 .01 62);--card: oklch(.245 .011 62);--ink: oklch(.93 .01 84);--ink-2: oklch(.76 .012 80);--muted: oklch(.62 .012 76);--line: oklch(.31 .011 62);--line-2: oklch(.4 .012 62);--tape: oklch(.8 .05 88 / .18);--shadow-1: 0 1px 2px oklch(0 0 0 / .3), 0 2px 8px oklch(0 0 0 / .28);--shadow-2: 0 2px 6px oklch(0 0 0 / .35), 0 22px 48px oklch(0 0 0 / .55);color-scheme:dark}:root,:root[data-theme]{--accent-h: 28;--accent: oklch(.52 .13 var(--accent-h));--accent-2: oklch(.47 .13 var(--accent-h));--on-accent: oklch(.985 .006 var(--accent-h));--accent-tint: oklch(.52 .13 var(--accent-h) / .1)}:root[data-theme=dark]{--accent: oklch(.66 .13 var(--accent-h));--accent-2: oklch(.72 .13 var(--accent-h));--on-accent: oklch(.18 .04 var(--accent-h));--accent-tint: oklch(.66 .13 var(--accent-h) / .14)}:root[data-accent=damson]{--accent-h: 28}:root[data-accent=marmalade]{--accent-h: 58}:root[data-accent=plum]{--accent-h: 354}:root{--serif: "Newsreader", Georgia, "Times New Roman", serif;--mono: "Spline Sans Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:18px;line-height:1.62;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .45s ease,color .45s ease;background-image:radial-gradient(oklch(.5 .02 64 / .018) .5px,transparent .5px);background-size:4px 4px}a{color:inherit;text-decoration:none}.mono,.eyebrow,.site-nav,.tag,.cat-count,.meta,.qty,.section-label{font-family:var(--mono)}.section-label,.eyebrow{font-family:var(--mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--muted);margin:0 0 16px}.section-label{display:flex;align-items:center;gap:7px}.section-label .material-symbols-rounded{vertical-align:0;color:var(--accent)}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:20px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:-.18em;-webkit-user-select:none;user-select:none;flex:none}.material-symbols-rounded.filled{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.app{max-width:880px;margin:0 auto;padding:0 24px 96px;color:var(--ink)}.site-header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:30px 0 20px;border-bottom:1px solid var(--line);margin-bottom:38px;flex-wrap:wrap}.site-title{font-family:var(--mono);font-size:17px;font-weight:500;letter-spacing:-.01em;color:var(--ink)}.site-title b{color:var(--accent);font-weight:500}.site-nav{display:flex;gap:22px;align-items:center}.site-nav a{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);color:var(--muted);text-transform:lowercase;font-size:13px;letter-spacing:.01em;white-space:nowrap;padding-bottom:2px;border-bottom:1px solid transparent;transition:color .18s ease,border-color .18s ease}.site-nav a .material-symbols-rounded{vertical-align:0;opacity:.85}.site-nav a:hover{color:var(--ink)}.site-nav a.active{color:var(--ink);border-bottom-color:var(--accent)}.site-nav-wrap{display:contents}.nav-scroll-cue{display:none}@media (max-width: 640px){.site-nav-wrap{display:block;position:relative;flex:1 1 100%;min-width:0}.site-nav{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:18px;padding:0 12px 4px 0;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.site-nav::-webkit-scrollbar{display:none}.site-nav>*{flex:none}.nav-scroll-cue.show{display:flex;align-items:center;position:absolute;top:0;bottom:4px;width:52px;border:none;cursor:pointer;color:var(--accent)}.nav-scroll-cue.right.show{right:0;justify-content:flex-end;padding:0 2px 0 0;background:linear-gradient(to right,transparent,var(--paper) 60%)}.nav-scroll-cue.left.show{left:0;justify-content:flex-start;padding:0 0 0 2px;background:linear-gradient(to left,transparent,var(--paper) 60%)}}.theme-toggle,.install-btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;cursor:pointer;border-radius:999px;padding:5px 13px;transition:all .18s ease}.theme-toggle .material-symbols-rounded,.install-btn .material-symbols-rounded{vertical-align:0}.theme-toggle{background:none;border:1px solid var(--line-2);color:var(--ink-2);padding:6px;justify-content:center}.theme-toggle:hover{border-color:var(--ink);color:var(--ink)}.install-btn{background:var(--accent);color:var(--on-accent);border:1px solid var(--accent);text-transform:lowercase}.install-btn:hover{background:var(--accent-2);border-color:var(--accent-2);transform:translateY(-1px)}.install-wrap{position:relative;display:inline-flex}.install-help{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:244px;background:var(--card);color:var(--ink);border:1px solid var(--line-2);border-radius:10px;padding:13px 15px;font-family:var(--serif);font-size:14.5px;line-height:1.5;text-align:left;text-transform:none;box-shadow:var(--shadow-2);animation:revealDown .2s ease backwards}.install-help .ios-share{vertical-align:-2px}.install-help-close{float:right;background:none;border:none;color:var(--muted);font-family:var(--mono);font-size:12px;cursor:pointer;margin:-2px -4px 0 6px}.install-help-close:hover{color:var(--ink)}.muted{color:var(--muted)}.status{color:var(--muted);padding:36px 0}.error{color:var(--ink);border:1px solid var(--line-2);padding:16px;border-radius:8px}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:14px}.cat-tile{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px 18px;min-height:132px;overflow:hidden;box-shadow:var(--shadow-1);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.cat-tile .cat-index{position:absolute;top:12px;right:14px;font-family:var(--mono);font-size:11px;color:var(--muted);opacity:.6}.cat-tile:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:var(--shadow-2)}.cat-tile:hover .cat-name{color:var(--accent)}.cat-tile.empty{opacity:.55}.cat-tile.all{border-style:dashed;background:transparent;box-shadow:none}.cat-tile.notes-cat{border-left:3px solid var(--accent);background:linear-gradient(100deg,var(--accent-tint),var(--card) 42%)}.cat-tile.notes-cat .cat-icon .material-symbols-rounded{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.cat-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;margin-bottom:4px;border-radius:11px;background:var(--accent-tint);color:var(--accent);transition:transform .18s ease,background .18s ease,color .18s ease}.cat-icon .material-symbols-rounded{font-size:24px;vertical-align:0}.cat-tile:hover .cat-icon{transform:scale(1.06)}.cat-tile:hover .cat-icon .material-symbols-rounded{font-variation-settings:"FILL" 1,"wght" 400,"GRAD" 0,"opsz" 24}.cat-tile.empty .cat-icon{background:var(--paper-2);color:var(--muted)}.cat-name{font-family:var(--serif);font-size:25px;font-weight:500;letter-spacing:-.01em;line-height:1.1;transition:color .18s ease}.cat-blurb{font-family:var(--serif);font-size:15px;font-style:italic;color:var(--ink-2)}.cat-count{margin-top:auto;font-size:11px;letter-spacing:.06em;color:var(--muted)}.back-link{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);color:var(--muted);font-size:13px;margin-bottom:22px;transition:color .18s ease}.back-link .material-symbols-rounded{vertical-align:0}.back-link:hover{color:var(--accent)}.browse-title{display:flex;align-items:center;gap:12px;font-family:var(--serif);font-size:40px;font-weight:500;letter-spacing:-.02em;margin:0 0 4px}.browse-title .title-icon{flex:none;font-size:30px;color:var(--accent);vertical-align:0}.browse-blurb{font-family:var(--serif);font-style:italic;color:var(--ink-2);font-size:18px;margin:0 0 26px}.tagbar{margin-bottom:10px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding-bottom:8px;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.tagbar-rows{display:flex;flex-direction:column;gap:8px;width:max-content}.tagbar-row{display:flex;flex-wrap:nowrap;gap:8px}.tagbar::-webkit-scrollbar{height:6px}.tagbar::-webkit-scrollbar-track{background:transparent}.tagbar::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}.tagbar::-webkit-scrollbar-thumb:hover{background:var(--muted)}.tag{flex:none;display:inline-flex;align-items:baseline;gap:6px;background:var(--card);border:1px solid var(--line-2);color:var(--ink-2);font-size:12px;letter-spacing:.02em;padding:4px 10px 4px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:all .15s ease}.tag:hover{border-color:var(--ink);color:var(--ink)}.tag.selected{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.tag-count{font-size:10px;font-variant-numeric:tabular-nums;color:var(--muted);background:var(--paper-2);border-radius:999px;padding:1px 6px}.tag:hover .tag-count{color:var(--ink)}.tag.selected .tag-count{color:var(--on-accent);background:#ffffff2e}.filter-controls{display:flex;align-items:center;gap:16px;margin:16px 0 10px;font-family:var(--mono);font-size:12px;color:var(--muted);flex-wrap:wrap}.filter-controls button.link{background:none;border:none;color:var(--muted);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:0}.filter-controls button.link:hover{color:var(--accent)}.mode-switch{display:inline-flex;border:1px solid var(--line-2);border-radius:999px;overflow:hidden}.mode-switch button{background:none;border:none;color:var(--muted);font-family:var(--mono);font-size:11px;padding:4px 12px;cursor:pointer;transition:all .15s ease}.mode-switch button.active{background:var(--accent);color:var(--on-accent)}.list-controls{display:flex;align-items:center;gap:12px;margin:16px 0 6px}.list-search-wrap{flex:1;min-width:0;position:relative;display:flex;align-items:center}.list-search-icon{position:absolute;left:13px;color:var(--muted);pointer-events:none;vertical-align:0}.list-search-wrap:focus-within .list-search-icon{color:var(--accent)}.list-search{flex:1;min-width:0;background:var(--card);color:var(--ink);border:1px solid var(--line-2);border-radius:999px;font-family:var(--mono);font-size:13px;padding:8px 16px 8px 38px;transition:border-color .15s ease}.list-search::placeholder{color:var(--muted)}.list-search:focus{outline:none;border-color:var(--accent)}.sort-toggle{flex:none;display:inline-flex;align-items:center;gap:7px;background:none;color:var(--ink-2);border:1px solid var(--line-2);border-radius:999px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;padding:8px 14px;cursor:pointer;white-space:nowrap;transition:color .15s ease,border-color .15s ease}.sort-toggle:hover{border-color:var(--ink);color:var(--ink)}.sort-toggle .material-symbols-rounded{vertical-align:0;opacity:.85}.recipe-list{list-style:none;margin:0;padding:0}.recipe-list li{border-bottom:1px solid var(--line)}.recipe-list li:first-child{border-top:1px solid var(--line)}.recipe-list a{display:grid;grid-template-columns:44px 1fr auto;align-items:baseline;gap:18px;padding:20px 0;transition:padding-left .22s cubic-bezier(.22,.61,.36,1),background .2s ease}.recipe-list a:hover{padding-left:12px;background:var(--accent-tint)}.recipe-list .rl-num{font-family:var(--mono);font-size:12px;color:var(--muted);padding-top:6px}.recipe-list .rl-main{display:flex;flex-direction:column;min-width:0}.recipe-list .rl-title{font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:-.01em;line-height:1.2}.recipe-list a:hover .rl-title{color:var(--accent)}.recipe-list .rl-sub{font-family:var(--mono);color:var(--muted);font-size:12px;margin-top:5px}.recipe-list .rl-tags{margin-top:9px;display:flex;flex-wrap:wrap;gap:6px}.recipe-list .rl-tags span{font-family:var(--mono);font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 9px}.recipe-list .rl-arrow{display:inline-flex;align-items:center;align-self:center;margin-right:10px;color:var(--muted);opacity:0;transform:translate(-6px);transition:all .22s ease}.recipe-list .rl-arrow .material-symbols-rounded{vertical-align:0}.recipe-list a:hover .rl-arrow{opacity:1;transform:none;color:var(--accent)}.recipe{max-width:720px}.recipe-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.recipe-topbar .back-link{margin-bottom:0}.copy-link{display:inline-flex;align-items:center;gap:6px;flex:none;font-family:var(--mono);font-size:12px;color:var(--ink-2);background:none;border:1px solid var(--line-2);border-radius:999px;padding:5px 13px;cursor:pointer;white-space:nowrap;transition:color .18s ease,border-color .18s ease,background .18s ease}.copy-link:hover{border-color:var(--accent);color:var(--accent)}.copy-link.copied{border-color:var(--accent);color:var(--accent);background:var(--accent-tint)}.copy-link svg{display:block}.recipe-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.recipe-topbar-left{display:flex;align-items:center;gap:14px;min-width:0}button.back-link{background:none;border:0;padding:0;cursor:pointer}.recipe-pos{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}@media (max-width: 600px){.recipe-topbar{flex-direction:column;align-items:stretch;gap:12px}.recipe-actions{justify-content:flex-start}}.recipe-viewer{position:relative;overflow:hidden;touch-action:pan-y}.recipe-track{position:relative}.recipe-pane{width:100%;will-change:transform}.recipe-pane.side{position:absolute;top:0;left:0}.recipe-nav-edge{display:none}@media (min-width: 1000px){.recipe-nav-edge{display:inline-flex;align-items:center;justify-content:center;position:fixed;top:50%;width:52px;height:52px;transform:translateY(-50%);border-radius:999px;background:var(--card);border:1px solid var(--line-2);color:var(--ink-2);box-shadow:var(--shadow-1);cursor:pointer;z-index:30;transition:color .18s ease,border-color .18s ease,background .18s ease,opacity .18s ease,transform .18s ease}.recipe-nav-edge.prev{left:calc(25vw - 246px)}.recipe-nav-edge.next{right:calc(25vw - 246px)}.recipe-nav-edge:hover:not(:disabled){color:var(--accent);border-color:var(--accent);transform:translateY(-50%) scale(1.06)}.recipe-nav-edge:disabled{opacity:.32;cursor:default}}.recipe h1{font-family:var(--serif);font-size:46px;font-weight:500;letter-spacing:-.025em;line-height:1.04;margin:0 0 8px}.recipe .subtitle{font-family:var(--serif);font-style:italic;color:var(--ink-2);font-size:21px;margin:0 0 20px}.recipe .meta{font-family:var(--mono);font-size:12.5px;color:var(--muted);letter-spacing:.02em;margin-bottom:30px;padding-bottom:0}.recipe .meta em{font-style:normal;color:var(--ink-2)}.recipe section{margin:36px 0}.recipe h2{font-family:var(--mono);font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.18em;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:8px;margin:0 0 18px}.recipe .intro p{font-size:19px;margin:0 0 14px;color:var(--ink)}.recipe .intro p:first-child:first-letter{font-size:3.1em;float:left;line-height:.82;padding:6px 10px 0 0;color:var(--accent);font-weight:500}.ingredients{list-style:none;margin:0;padding:0}.ingredients li{padding:9px 0;border-bottom:1px dotted var(--line-2);display:flex;gap:16px;align-items:baseline}.ingredients .qty{flex:0 0 142px;font-family:var(--mono);font-size:13px;color:var(--accent);letter-spacing:.01em}.ingredients .item{flex:1;font-size:18px}.instructions{margin:0;padding:0;list-style:none;counter-reset:step}.instructions li{position:relative;padding-left:50px;margin-bottom:22px;font-size:18px}.instructions li:before{counter-increment:step;content:counter(step,decimal-leading-zero);position:absolute;left:0;top:2px;font-family:var(--mono);font-size:12px;color:var(--accent);border:1px solid var(--line-2);border-radius:999px;width:34px;height:34px;display:flex;align-items:center;justify-content:center}.notes{position:relative;background:var(--accent-tint);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 8px 8px 0;padding:16px 18px 16px 20px;font-family:var(--serif);font-style:italic;font-size:17px;color:var(--ink)}.callouts dl{margin:0}.callouts dt{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:16px}.callouts dd{margin:3px 0 0;font-size:17px}.nutrition table{border-collapse:collapse;width:100%}.nutrition td{padding:8px 0;border-bottom:1px solid var(--line);font-size:15px}.nutrition td:first-child{font-family:var(--serif)}.nutrition td:last-child{text-align:right;font-family:var(--mono);font-size:13px;color:var(--ink-2);white-space:nowrap}.collapsible{margin:36px 0}.collapsible>summary{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:8px;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;-webkit-user-select:none;user-select:none}.collapsible>summary::-webkit-details-marker{display:none}.collapsible>summary:after{content:"+";font-size:16px;line-height:1;transition:transform .25s ease,color .2s ease}.collapsible[open]>summary:after{content:"–"}.collapsible>summary:hover{color:var(--ink)}.collapsible[open]>summary{margin-bottom:16px}.collapsible[open]>*:not(summary){animation:revealDown .3s cubic-bezier(.22,.61,.36,1) backwards}.source-thumbs{display:flex;flex-wrap:wrap;gap:26px;padding:8px 0 4px}.source-thumb{position:relative}.source-thumb button{position:relative;background:var(--card);border:1px solid var(--line-2);padding:12px 12px 10px;cursor:pointer;border-radius:3px;display:block;line-height:0;box-shadow:var(--shadow-2);transition:transform .3s cubic-bezier(.22,.61,.36,1)}.source-thumb:nth-child(odd) button{transform:rotate(-1.6deg)}.source-thumb:nth-child(2n) button{transform:rotate(1.4deg)}.source-thumb button:hover{transform:rotate(0) scale(1.02);z-index:2}.source-thumb button:before{content:"";position:absolute;top:-11px;left:50%;width:78px;height:24px;transform:translate(-50%) rotate(-2deg);background:var(--tape);border:1px solid oklch(.7 .04 88 / .25);box-shadow:0 1px 3px #00000014}.source-thumb img{max-width:188px;max-height:240px;display:block;filter:grayscale(.9) contrast(1.04) sepia(.12);image-orientation:from-image;transition:filter .35s ease}.source-thumb button:hover img{filter:grayscale(0) contrast(1.03) sepia(0)}.source-thumb .hint{display:block;text-align:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--muted);margin-top:10px;line-height:1.4}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#0e0a07f0;display:flex;align-items:center;justify-content:center;z-index:50;cursor:zoom-out;padding:28px;animation:lightboxFade .22s ease}.lightbox img{max-width:100%;max-height:100%;object-fit:contain;image-orientation:from-image;background:var(--card);padding:10px;box-shadow:var(--shadow-2);animation:lightboxZoom .28s cubic-bezier(.22,.61,.36,1)}.lightbox .close{position:absolute;top:18px;right:22px;color:#fff;background:none;border:1px solid oklch(1 0 0 / .4);font-family:var(--mono);font-size:12px;padding:5px 13px;cursor:pointer;border-radius:999px}.notes-archive{list-style:none;margin:0;padding:0}.note-card{display:grid;grid-template-columns:136px 1fr;gap:24px;padding:26px 0;border-bottom:1px solid var(--line)}.note-card:first-child{border-top:1px solid var(--line)}.note-thumbs{display:flex;flex-direction:column;gap:14px;align-self:start}.note-thumb{display:block;width:100%;margin:0;position:relative;background:var(--card);border:1px solid var(--line-2);border-radius:3px;padding:9px 9px 8px;line-height:0;cursor:zoom-in;box-shadow:var(--shadow-1);transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease}.note-thumb:hover{transform:rotate(-1.5deg) scale(1.03);box-shadow:var(--shadow-2);z-index:2}.note-thumb img{width:100%;height:158px;object-fit:cover;object-position:top center;display:block;border-radius:1px;filter:grayscale(.9) contrast(1.04) sepia(.12);image-orientation:from-image;transition:filter .35s ease}.note-thumb:hover img{filter:grayscale(0) contrast(1.03) sepia(0)}.note-body{min-width:0}.note-title{display:block;font-family:var(--serif);font-size:25px;font-weight:500;letter-spacing:-.01em;line-height:1.15}.note-text{margin:12px 0 0;background:var(--accent-tint);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 8px 8px 0;padding:13px 16px;font-family:var(--serif);font-style:italic;font-size:16px;line-height:1.5;color:var(--ink)}.note-open{display:inline-flex;align-items:center;gap:5px;margin-top:13px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted);transition:color .18s ease,gap .18s ease}.note-open:hover{color:var(--accent);gap:9px}.note-open .material-symbols-rounded{vertical-align:0}@media (max-width: 560px){.note-card{grid-template-columns:104px 1fr;gap:16px;padding:22px 0}.note-title{font-size:21px}.note-thumb img{height:124px}}.note-card{animation:fadeInUp .45s cubic-bezier(.22,.61,.36,1) backwards}.note-card:nth-child(1){animation-delay:.03s}.note-card:nth-child(2){animation-delay:.06s}.note-card:nth-child(3){animation-delay:.09s}.note-card:nth-child(4){animation-delay:.12s}.note-card:nth-child(5){animation-delay:.15s}.note-card:nth-child(n+6){animation-delay:.18s}.home-chat{margin-bottom:52px}.chat{display:flex;flex-direction:column;border:1px solid var(--line-2);border-radius:14px;overflow:hidden;background:var(--card);box-shadow:var(--shadow-1)}.chat-offline{border-bottom:1px solid var(--line);background:var(--paper-2);padding:12px 18px;font-family:var(--mono);font-size:12px;color:var(--muted)}.chat-offline strong{color:var(--ink)}.chat-thread{min-height:280px;max-height:56vh;overflow-y:auto;padding:26px 22px;display:flex;flex-direction:column;gap:24px;scroll-behavior:smooth}.chat-empty{margin:auto 0;text-align:center;padding:22px 0}.chat-empty-title{font-family:var(--serif);font-size:24px;font-weight:500;margin:0 0 6px}.chat-empty-sub{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:16px;margin:0 0 22px}.chat-suggestions{display:flex;flex-wrap:wrap;gap:9px;justify-content:center}.suggestion{background:var(--paper);border:1px solid var(--line-2);color:var(--ink-2);font-family:var(--mono);font-size:12.5px;padding:8px 14px;border-radius:999px;cursor:pointer;transition:all .15s ease}.suggestion:hover:not(:disabled){background:var(--accent);color:var(--on-accent);border-color:var(--accent);transform:translateY(-1px)}.suggestion:disabled{opacity:.4;cursor:default}.msg{display:flex;flex-direction:column}.msg .who{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);margin-bottom:7px}.msg.user{align-items:flex-end}.msg.user .bubble{background:var(--accent);color:var(--on-accent);font-family:var(--serif);font-size:17px;padding:11px 16px;border-radius:16px 16px 3px;max-width:85%;white-space:pre-wrap}.msg.assistant .bubble{max-width:94%;font-size:17px}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0 0 11px}.markdown ul,.markdown ol{margin:0 0 11px;padding-left:1.4em}.markdown li{margin-bottom:5px}.markdown strong{font-weight:600}.markdown h1,.markdown h2,.markdown h3{font-family:var(--serif);font-size:19px;font-weight:600;margin:14px 0 6px}.markdown a{text-decoration:underline;text-underline-offset:2px}.markdown code{font-family:var(--mono);background:var(--paper-2);border:1px solid var(--line);border-radius:4px;padding:.5px 5px;font-size:.84em}.markdown pre{background:var(--paper-2);border:1px solid var(--line);border-radius:8px;padding:12px;overflow-x:auto}.markdown pre code{border:none;padding:0;background:none}.markdown a.recipe-link{font-weight:600;color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.markdown a.recipe-link:hover{background:var(--accent);color:var(--on-accent);border-radius:3px;text-decoration:none;padding:0 3px;margin:0 -3px}.cursor{display:inline-block;width:7px;height:1.05em;background:var(--accent);margin-left:2px;vertical-align:text-bottom;animation:blink 1s steps(2,start) infinite}@keyframes blink{50%{opacity:0}}.typing{display:inline-flex;gap:4px;align-items:center;height:1.2em}.typing span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:bounce 1.2s infinite ease-in-out}.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.sources{margin-top:14px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.sources-label{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--muted)}.source-chip{font-family:var(--mono);font-size:12px;border:1px solid var(--line-2);border-radius:999px;padding:3px 12px;color:var(--ink-2);background:var(--paper);transition:all .15s ease}a.source-chip:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.chat-form{display:flex;gap:12px;align-items:flex-end;padding:16px 18px;border-top:1px solid var(--line);background:var(--paper)}.chat-input{flex:1;resize:none;background:var(--card);color:var(--ink);border:1px solid var(--line-2);font-family:var(--serif);font-size:16px;line-height:1.5;padding:11px 14px;border-radius:11px;max-height:180px;overflow-y:auto}.chat-input::placeholder{color:var(--muted)}.chat-input:focus{outline:none;border-color:var(--accent)}.chat-send{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--accent);color:var(--on-accent);border:none;font-family:var(--mono);font-size:13px;padding:0 20px;height:44px;cursor:pointer;border-radius:11px;white-space:nowrap;transition:background .15s ease}.chat-send .material-symbols-rounded{vertical-align:0}.chat-send:not(:disabled):hover{background:var(--accent-2)}.chat-send:disabled{background:var(--accent-tint);color:var(--ink-2);cursor:default}.chat-send.stop{background:var(--card);color:var(--ink);border:1px solid var(--line-2)}.chat-hint{text-align:center;font-family:var(--mono);font-size:11px;color:var(--muted);margin:12px 0 0}.chat-input,.chat-thread{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}.chat-input::-webkit-scrollbar,.chat-thread::-webkit-scrollbar{width:6px}.chat-input::-webkit-scrollbar-track,.chat-thread::-webkit-scrollbar-track{background:transparent}.chat-input::-webkit-scrollbar-thumb,.chat-thread::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:3px}.chat-input::-webkit-scrollbar-thumb:hover,.chat-thread::-webkit-scrollbar-thumb:hover{background:var(--muted)}.chat-input::-webkit-scrollbar-button,.chat-thread::-webkit-scrollbar-button{display:none;width:0;height:0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes revealDown{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes lightboxFade{0%{opacity:0}to{opacity:1}}@keyframes lightboxZoom{0%{opacity:0;transform:scale(.93)}to{opacity:1;transform:none}}.page-enter{animation:fadeInUp .5s cubic-bezier(.22,.61,.36,1) backwards}.cat-tile{animation:fadeInUp .45s cubic-bezier(.22,.61,.36,1) backwards}.cat-grid .cat-tile:nth-child(1){animation-delay:.03s}.cat-grid .cat-tile:nth-child(2){animation-delay:.07s}.cat-grid .cat-tile:nth-child(3){animation-delay:.11s}.cat-grid .cat-tile:nth-child(4){animation-delay:.15s}.cat-grid .cat-tile:nth-child(5){animation-delay:.19s}.cat-grid .cat-tile:nth-child(6){animation-delay:.23s}.cat-grid .cat-tile:nth-child(7){animation-delay:.27s}.cat-grid .cat-tile:nth-child(n+8){animation-delay:.31s}.recipe-list li{animation:fadeInUp .45s cubic-bezier(.22,.61,.36,1) backwards}.recipe-list li:nth-child(1){animation-delay:.02s}.recipe-list li:nth-child(2){animation-delay:.05s}.recipe-list li:nth-child(3){animation-delay:.08s}.recipe-list li:nth-child(4){animation-delay:.11s}.recipe-list li:nth-child(5){animation-delay:.14s}.recipe-list li:nth-child(6){animation-delay:.17s}.recipe-list li:nth-child(7){animation-delay:.2s}.recipe-list li:nth-child(8){animation-delay:.23s}.recipe-list li:nth-child(n+9){animation-delay:.26s}.chat-empty{animation:fadeIn .4s ease backwards}.chat-suggestions .suggestion{animation:fadeInUp .35s cubic-bezier(.22,.61,.36,1) backwards}.chat-suggestions .suggestion:nth-child(1){animation-delay:.06s}.chat-suggestions .suggestion:nth-child(2){animation-delay:.12s}.chat-suggestions .suggestion:nth-child(3){animation-delay:.18s}.chat-suggestions .suggestion:nth-child(4){animation-delay:.24s}.msg{animation:fadeInUp .32s cubic-bezier(.22,.61,.36,1) backwards}.chat,.chat-thread,.chat-form,.chat-offline,.recipe-list li,.ingredients li,.nutrition td,.notes,.recipe h2{transition:background-color .45s ease,color .45s ease,border-color .45s ease}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 5px;margin-left:5px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-family:var(--mono);font-size:10px;line-height:1;vertical-align:1px}.btn-accent{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-family:var(--mono);font-size:13px;padding:8px 16px;border-radius:999px;background:var(--accent);color:var(--on-accent);border:1px solid var(--accent);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .18s ease,border-color .18s ease,opacity .18s ease}.btn-accent:hover{background:var(--accent-2);border-color:var(--accent-2)}.btn-accent:disabled{opacity:.45;cursor:not-allowed}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border:1px solid transparent;border-radius:8px;background:none;color:var(--muted);cursor:pointer;transition:color .16s ease,background .16s ease,border-color .16s ease}.icon-btn:hover{color:var(--ink);background:var(--paper-2);border-color:var(--line)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:7vh 20px 20px;overflow-y:auto;background:#0e0a078c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:lightboxFade .2s ease}.modal{width:100%;max-width:460px;background:var(--card);border:1px solid var(--line-2);border-radius:16px;box-shadow:var(--shadow-2);animation:modalPop .24s cubic-bezier(.22,.61,.36,1)}@keyframes modalPop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--line)}.modal-head h2{font-family:var(--serif);font-size:22px;font-weight:500;margin:0}.modal-close{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:8px;background:none;color:var(--muted);cursor:pointer}.modal-close:hover{color:var(--ink);background:var(--paper-2)}.modal-body{padding:16px 20px 20px}.modal-sub{font-size:14px;color:var(--ink-2);margin:0 0 14px}.modal-sub strong{color:var(--ink);font-weight:600}.storage-notice{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin:14px 0;border:1px solid oklch(.72 .13 85 / .5);border-left:3px solid var(--accent);border-radius:10px;background:#e6ce9d29;font-size:13px;line-height:1.5;color:var(--ink-2)}.storage-notice .sn-icon{flex:none;color:var(--accent);margin-top:1px}.storage-notice strong{color:var(--ink)}.storage-notice em{color:var(--muted);font-style:italic}.list-status{display:flex;align-items:center;gap:8px;padding:10px 12px;margin:0 0 14px;border-radius:10px;background:var(--accent-tint);color:var(--accent);font-size:13px}.list-status .material-symbols-rounded{flex:none}.list-status.is-dup{background:var(--paper-2);color:var(--ink-2)}.list-status strong{font-weight:600}.list-picker{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:8px;max-height:260px;overflow-y:auto}.list-pick{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:1px solid var(--line-2);border-radius:10px;background:var(--paper);cursor:pointer;text-align:left;transition:border-color .16s ease,background .16s ease}.list-pick:hover{border-color:var(--accent)}.list-pick.has{background:var(--paper-2)}.lp-main{display:flex;flex-direction:column;gap:2px;min-width:0}.lp-name{font-family:var(--serif);font-size:16px;color:var(--ink)}.lp-count{font-family:var(--mono);font-size:11px;color:var(--muted)}.lp-action{display:inline-flex;align-items:center;gap:4px;flex:none;font-family:var(--mono);font-size:12px;color:var(--accent)}.list-pick.has .lp-action{color:var(--muted)}.new-list-form{margin:0}.new-list-label{display:block;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:8px}.new-list-row{display:flex;gap:8px}.new-list-row input,.rename-row input{flex:1 1 auto;min-width:0;font-family:var(--serif);font-size:15px;color:var(--ink);background:var(--paper);border:1px solid var(--line-2);border-radius:10px;padding:8px 12px}.new-list-row input:focus,.rename-row input:focus{outline:none;border-color:var(--accent)}.lists-empty{text-align:center;padding:48px 20px;color:var(--ink-2)}.lists-empty .le-icon{color:var(--line-2);margin-bottom:8px}.lists-empty p{margin:4px 0}.lists-empty .btn-accent{margin-top:18px}.lists{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:18px}.list-card{border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow-1);padding:18px 18px 14px}.list-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.list-title-row,.rename-row{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 auto}.list-title-row h2{font-family:var(--serif);font-size:24px;font-weight:500;margin:0;overflow-wrap:anywhere}.list-count{font-family:var(--mono);font-size:11px;color:var(--muted);flex:none}.list-card-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0 6px}.copy-link.danger:hover{border-color:#c53637;color:#c53637}.copy-link:disabled{opacity:.45;cursor:not-allowed}.copy-link:disabled:hover{border-color:var(--line-2);color:var(--ink-2)}.list-empty-hint{font-size:13px;margin:10px 0 4px}.list-recipes{list-style:none;margin:8px 0 0;padding:0}.list-recipes li{display:flex;align-items:center;gap:8px;padding:9px 0;border-top:1px solid var(--line)}.lr-link{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0;text-decoration:none}.lr-title{font-family:var(--serif);font-size:16px;color:var(--ink)}a.lr-link:hover .lr-title{color:var(--accent)}.lr-sub{font-family:var(--mono);font-size:11px;color:var(--muted)}.lr-missing{cursor:default}.lr-missing .lr-title{color:var(--muted);font-style:italic}.lr-remove{width:28px;height:28px}.lr-remove:hover{color:#c53637;border-color:#c5363780}@media (max-width: 560px){.modal-overlay{padding:4vh 12px 12px}.list-card-head{align-items:flex-start}}
