@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.block{display:block}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.italic{font-style:italic}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--color-paper:#f7f5ec;--color-paper-2:#eeebdf;--color-paper-3:#e5e1d3;--color-paper-pear:#f6ecc2;--color-paper-cyan:#d6f0ff;--color-paper-coral:#ffe2e2;--color-paper-mint:#dcf2df;--color-ink:#12171b;--color-ink-2:#3e464f;--color-ink-3:#616a73;--color-rule:#c9c4b2;--color-rule-strong:#9f9880;--color-accent:#f6ce00;--color-accent-deep:#b59600;--color-accent-ink:#12171b;--color-accent-2:#009fe4;--color-accent-2-deep:#00577d;--color-accent-3:#ff5065;--color-accent-3-deep:#9e2034;--color-mint:#66da85;--color-mint-deep:#135c2c;--color-lavender:#c28efb;--color-warning:#783f00;--color-danger:#901e21;--color-focus:#005495;--color-overlay:#12171ba8;--color-image-label:#f7f5ecf0;--color-image-overlay:#12171be6;--color-button-cast:#d2ae0073;--color-soft-cast:#12171b29;--color-transparent:transparent;--font-display:"Plus Jakarta Sans", "Leelawadee UI", sans-serif;--font-body:"Plus Jakarta Sans", "Leelawadee UI", sans-serif;--font-label:"JetBrains Mono", "Leelawadee UI", monospace;--space-3xs:.125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--space-3xl:6rem;--space-4xl:9rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5625rem;--text-xl:1.953rem;--text-2xl:2.441rem;--text-display:clamp(2rem, 5vw, 3.5rem);--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-press:cubic-bezier(.2, .7, .3, 1);--dur-micro:.12s;--dur-press:.14s;--dur-press-down:70ms;--dur-short:.22s;--dur-long:.42s;--dur-reduced:.15s;--rule-hair:1px;--rule-medium:2px;--radius-sm:.5rem;--radius-input:.75rem;--radius-card:1.25rem;--radius-dialog:1.5rem;--radius-pill:999px;--shadow-contact:0 2px 0 #12171b14;--shadow-card:0 12px 32px -16px #12171b33;--shadow-card-raised:0 18px 38px -16px #12171b47;--shadow-modal:0 24px 60px -20px #12171b6b;--shadow-button:0 4px 0 0 var(--color-accent-deep), 0 6px 12px -3px #d2ae0073;--shadow-button-hover:0 6px 0 0 var(--color-accent-deep), 0 12px 22px -4px #d2ae0073;--shadow-button-pressed:0 1px 0 0 var(--color-accent-deep), 0 2px 6px -2px #d2ae0073;--page-max:90rem;--page-gutter:clamp(.75rem, 3vw, 2.5rem);--control-height:3rem;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-modal:400;--z-toast:500;--z-tooltip:600}@supports (color:lab(0% 0 0)){:root{--color-paper:lab(96.5939% -.359416 4.5732);--color-paper-2:lab(93.1373% -.459075 6.11203);--color-paper-3:lab(89.68% -.546932 7.65988);--color-paper-pear:lab(93.3373% -.96944 21.5289);--color-paper-cyan:lab(93.1351% -7.23964 -12.3357);--color-paper-coral:lab(92.625% 12.8409 4.88153);--color-paper-mint:lab(93.5076% -10.3562 6.60929);--color-ink:lab(7.20838% -1.0453 -4.15414);--color-ink-2:lab(29.215% -1.77571 -6.33376);--color-ink-3:lab(44.2982% -1.83773 -6.36158);--color-rule:lab(79.2665% -.626385 9.6194);--color-rule-strong:lab(63.0732% -.681579 13.6372);--color-accent:lab(84.3328% 3.40465 86.5733);--color-accent-deep:lab(63.3344% 3.56585 79.827);--color-accent-ink:lab(7.20838% -1.0453 -4.15414);--color-accent-2:lab(60.4609% -20.7041 -52.7663);--color-accent-2-deep:lab(33.7546% -13.6745 -37.9798);--color-accent-3:lab(60.2732% 77.3247 33.2065);--color-accent-3-deep:lab(35.6234% 51.5484 22.0695);--color-mint:lab(78.8297% -48.1495 31.5686);--color-mint-deep:lab(34.0319% -31.8184 21.1124);--color-lavender:lab(67.5409% 35.8756 -47.2813);--color-warning:lab(33.332% 24.8518 48.7142);--color-danger:lab(32.3588% 47.4873 29.6569);--color-focus:lab(33.7384% 3.72931 -56.5196);--color-overlay:lab(7.20838% -1.0453 -4.15414/.66);--color-image-label:lab(96.5939% -.359416 4.5732/.94);--color-image-overlay:lab(7.20838% -1.0453 -4.15414/.9);--color-button-cast:lab(72.6547% 6.09389 137.561/.45);--color-soft-cast:lab(7.20838% -1.0453 -4.15414/.16);--shadow-contact:0 2px 0 lab(7.20838% -1.0453 -4.15414/.08);--shadow-card:0 12px 32px -16px lab(7.20838% -1.0453 -4.15414/.2);--shadow-card-raised:0 18px 38px -16px lab(7.20838% -1.0453 -4.15414/.28);--shadow-modal:0 24px 60px -20px lab(7.20838% -1.0453 -4.15414/.42);--shadow-button:0 4px 0 0 var(--color-accent-deep), 0 6px 12px -3px lab(72.6547% 6.09389 137.561/.45);--shadow-button-hover:0 6px 0 0 var(--color-accent-deep), 0 12px 22px -4px lab(72.6547% 6.09389 137.561/.45);--shadow-button-pressed:0 1px 0 0 var(--color-accent-deep), 0 2px 6px -2px lab(72.6547% 6.09389 137.561/.45)}}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{background:var(--color-paper);min-width:20rem;color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);font-feature-settings:"ss01" on, "cv11" on;font-variant-numeric:tabular-nums;margin:0;line-height:1.55;overflow-x:clip}button,input,select{font:inherit}button,select{min-height:2.75rem}button{color:inherit}button:not(:disabled),select:not(:disabled){cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}.modal-open{overflow:hidden}.app-shell{min-height:100svh}.inventory-workspace{min-width:0}.catalogue-masthead{z-index:var(--z-sticky);align-items:center;column-gap:var(--space-sm);min-height:4.5rem;padding:var(--space-xs) var(--page-gutter);background:var(--color-paper);color:var(--color-ink);border-block-end:var(--rule-medium) solid var(--color-ink);grid-template-columns:minmax(0,1fr) auto;display:grid;position:sticky;inset-block-start:0}.brand-block{align-items:center;gap:var(--space-xs);min-width:0;display:flex;position:relative}.brand{min-height:2.75rem;font-family:var(--font-display);letter-spacing:-.035em;white-space:nowrap;flex:none;align-items:center;font-size:clamp(1.35rem,5vw,1.8rem);font-weight:700;line-height:1;text-decoration:none;display:inline-flex}.brand-block>span:not(.kitchen-character){color:var(--color-ink-2);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;display:none;overflow:hidden}.masthead-note{color:var(--color-ink-2);font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:.01em;white-space:nowrap;margin:0;display:none}.kitchen-character{background:var(--color-accent);border:var(--rule-medium) solid var(--color-ink);width:2.15rem;height:2.15rem;box-shadow:var(--shadow-contact);animation:kitchen-breathe 4s var(--ease-in-out) infinite;transform-origin:50% 80%;border-radius:42% 42% 48% 48%;flex:none;display:block;position:relative}.kitchen-character:before{border-radius:var(--radius-pill);background:var(--color-ink);width:.22rem;height:.22rem;box-shadow:.68rem 0 0 var(--color-ink);content:"";position:absolute;inset-block-start:.68rem;inset-inline-start:.58rem}.kitchen-character:after{border:var(--rule-medium) solid var(--color-ink);border-radius:0 var(--radius-pill) var(--radius-pill) 0;background:var(--color-accent);content:"";border-inline-start:0;width:.9rem;height:.42rem;position:absolute;inset-block-start:-.35rem;inset-inline-end:-.55rem}.kitchen-character i{border-block-end:var(--rule-medium) solid var(--color-ink);border-radius:0 0 var(--radius-pill) var(--radius-pill);width:.62rem;height:.32rem;position:absolute;inset-block-start:1.12rem;inset-inline-start:.78rem}.catalogue-masthead:hover .kitchen-character,.catalogue-masthead:focus-within .kitchen-character{transform:rotate(-7deg)translateY(-2px)}.site-header nav{z-index:var(--z-sticky);padding:var(--space-2xs) var(--space-2xs) max(var(--space-2xs), env(safe-area-inset-bottom));background:var(--color-ink);color:var(--color-paper);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;position:fixed;inset-block-end:0;inset-inline:0}.site-header nav button{justify-content:center;align-items:center;gap:var(--space-2xs);min-width:0;padding:var(--space-xs) var(--space-2xs);border:var(--rule-hair) solid var(--color-transparent);border-radius:var(--radius-input);background:var(--color-transparent);font-size:var(--text-xs);white-space:nowrap;font-weight:700;display:inline-flex}.site-header nav button span{min-width:1.25rem;padding-inline:var(--space-2xs);border-radius:var(--radius-pill);background:var(--color-paper-3);color:var(--color-ink);font-family:var(--font-label);font-size:.625rem}.site-header nav button.active{background:var(--color-accent);color:var(--color-accent-ink)}main{width:min(var(--page-max), 100%);min-height:70svh;padding:var(--space-md) var(--page-gutter) calc(var(--space-4xl) + env(safe-area-inset-bottom));margin-inline:auto}.catalogue-toolbar{gap:var(--space-md);min-width:0;padding:var(--space-md);border:var(--rule-hair) dashed var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-cyan);display:grid}.explore-heading{min-width:0}.explore-heading p,.page-heading p{max-width:65ch;color:var(--color-ink-2);margin:0}.explore-heading>p:first-child,.eyebrow{font-family:var(--font-label);font-size:var(--text-xs);letter-spacing:.04em;font-weight:500}.explore-heading h1,.page-heading h1,.detail-heading h2{overflow-wrap:anywhere;min-width:0;margin:var(--space-2xs) 0 0;font-family:var(--font-display);letter-spacing:-.035em;font-style:normal;font-weight:700;line-height:1.12}.explore-heading h1{font-size:clamp(1.8rem,8vw,2.8rem)}.page-heading{gap:var(--space-2xs);margin-block-end:var(--space-lg);display:grid}.page-heading h1{font-size:var(--text-display)}.eyebrow{color:var(--color-accent-2-deep)}.filter-bar{gap:var(--space-sm);min-width:0;display:grid}.filter-bar label,.manual-form label,.inline-controls label{gap:var(--space-2xs);min-width:0;color:var(--color-ink-2);font-size:var(--text-xs);font-weight:600;display:grid}.filter-bar input,.filter-bar select,.manual-form input,.inline-controls select,.item-actions select,.item-main form input{width:100%;min-width:0;min-height:var(--control-height);padding:var(--space-xs) var(--space-sm);border:var(--rule-hair) solid var(--color-rule-strong);border-radius:var(--radius-input);outline:2px solid var(--color-transparent);outline-offset:1px;background:var(--color-paper-2);color:var(--color-ink)}.filter-bar input::placeholder,.manual-form input::placeholder{color:var(--color-ink-3)}.filter-bar input:focus-visible,.filter-bar select:focus-visible,.manual-form input:focus-visible,.inline-controls select:focus-visible,.item-actions select:focus-visible,.item-main form input:focus-visible{outline-color:var(--color-focus);border-color:var(--color-ink-2)}.filter-bar input:invalid,.manual-form input:invalid{border-color:var(--color-danger)}.results-line{align-items:center;gap:var(--space-xs);min-width:0;min-height:3.25rem;padding-block:var(--space-xs);color:var(--color-ink-2);font-size:var(--text-sm);display:flex}.results-line>span{white-space:nowrap}.results-line strong{color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-md)}.results-line small{color:var(--color-ink-2);font-size:var(--text-xs);display:none}.results-line .text-button{margin-inline-start:auto}.recipe-grid{gap:var(--space-sm);grid-template-columns:minmax(0,1fr);display:grid}.recipe-card{--card-surface:var(--color-paper-2);--card-hover:var(--color-paper-3);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-card);background:var(--card-surface);min-width:0;color:var(--color-ink);box-shadow:var(--shadow-contact), var(--shadow-card);transition:transform var(--dur-short) var(--ease-out), box-shadow var(--dur-short) var(--ease-out), background-color var(--dur-short) var(--ease-out);position:relative;overflow:clip}.recipe-card[data-accent=pear]{--card-surface:var(--color-paper-pear);--card-hover:var(--color-accent)}.recipe-card[data-accent=cyan]{--card-surface:var(--color-paper-cyan);--card-hover:var(--color-accent-2)}.recipe-card[data-accent=paper]{--card-surface:var(--color-paper-2);--card-hover:var(--color-paper-3)}.card-open{background:var(--color-transparent);text-align:start;border:0;grid-template-columns:7.75rem minmax(0,1fr);width:100%;min-height:8rem;padding:0;display:grid}.thumb-wrap{background:var(--color-paper-3);height:100%;min-height:8rem;color:var(--color-ink);display:block;position:relative;overflow:clip}.thumb-wrap img{object-fit:cover;width:100%;height:100%;display:block}.duration{padding:var(--space-3xs) var(--space-xs);border-radius:var(--radius-pill);background:var(--color-image-overlay);color:var(--color-paper);font-family:var(--font-label);white-space:nowrap;font-size:.625rem;font-weight:500;position:absolute;inset-block-end:var(--space-xs);inset-inline-end:var(--space-xs)}.card-body{min-width:0;min-height:8rem;padding:var(--space-sm);flex-direction:column;display:flex}.card-body strong{overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--text-sm);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-block-start:var(--space-2xs);line-height:1.35;display:-webkit-box;overflow:hidden}.data-flags{gap:var(--space-2xs);flex-wrap:wrap;margin-block-start:auto;padding-block-start:var(--space-xs);display:flex}.data-flags span{padding:var(--space-3xs) var(--space-2xs);border-radius:var(--radius-pill);white-space:nowrap;font-size:.625rem;font-weight:700}.data-flags .available{background:var(--color-paper-cyan);color:var(--color-accent-2-deep)}.data-flags .missing{background:var(--color-paper-2);color:var(--color-warning)}.favorite-button{z-index:var(--z-raised);min-width:4.75rem;min-height:2.75rem;margin:0 var(--space-sm) var(--space-sm);padding:var(--space-xs) var(--space-sm);border:var(--rule-hair) solid var(--color-ink-2);border-radius:var(--radius-pill);background:var(--color-image-label);color:var(--color-ink);font-size:var(--text-xs);white-space:nowrap;font-weight:700;position:relative;inset:auto}.favorite-button.is-favorite{border-color:var(--color-accent-3-deep);background:var(--color-accent-3);color:var(--color-ink)}.btn,.primary-button,.secondary-button,.quiet-button,.text-button,.ingredient-list button,.item-actions button,.item-main form button{min-height:var(--control-height);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-pill);font-size:var(--text-sm);white-space:nowrap;font-weight:600}.btn{--btn-face:var(--color-accent);--btn-ink:var(--color-ink);--btn-edge:var(--color-accent-deep);--btn-cast:var(--color-button-cast);--btn-line:var(--color-accent-deep);isolation:isolate;border-radius:var(--radius-pill);background:var(--btn-face);color:var(--btn-ink);box-shadow:0 4px 0 0 var(--btn-edge), 0 6px 12px -3px var(--btn-cast);border:0;justify-content:center;align-items:center;gap:.5em;padding:.8rem 1.4rem;transition:transform .14s cubic-bezier(.2,.7,.3,1),box-shadow .14s cubic-bezier(.2,.7,.3,1),background-color .16s;display:inline-flex;position:relative;transform:translateY(0)}.btn--pear{--btn-face:var(--color-accent);--btn-ink:var(--color-accent-ink);--btn-edge:var(--color-accent-deep);--btn-cast:var(--color-button-cast);--btn-line:var(--color-accent-deep)}.btn--soft{--btn-face:var(--color-paper-2);--btn-ink:var(--color-ink);--btn-edge:var(--color-transparent);--btn-cast:var(--color-soft-cast);--btn-line:var(--color-rule-strong);border:var(--rule-hair) solid var(--btn-line);box-shadow:0 6px 16px -8px var(--btn-cast)}.btn--outline{--btn-face:var(--color-transparent);--btn-ink:var(--color-ink);--btn-edge:var(--color-transparent);--btn-cast:var(--color-transparent);--btn-line:var(--color-rule-strong);border:var(--rule-hair) solid var(--btn-line);box-shadow:none}.btn--sm{min-height:2.75rem;padding:var(--space-xs) var(--space-sm);font-size:var(--text-xs)}.btn:active{box-shadow:0 1px 0 0 var(--btn-edge), 0 2px 6px -2px var(--btn-cast);transition-duration:70ms;transform:translateY(3px)}.btn:focus-visible{outline:3px solid var(--btn-edge)}@supports (color:color-mix(in lab, red, red)){.btn:focus-visible{outline:3px solid color-mix(in oklch, var(--btn-edge) 70%, var(--color-focus))}}.btn:focus-visible{outline-offset:3px}.btn[disabled]{pointer-events:none;box-shadow:0 4px 0 0 var(--btn-edge);transform:none}.primary-button{background:var(--color-accent);color:var(--color-accent-ink);border:0}.secondary-button,.ingredient-list button,.item-main form button{border:var(--rule-hair) solid var(--color-rule-strong);background:var(--color-paper-2);color:var(--color-ink)}.secondary-button.active{border-color:var(--color-accent-3-deep);background:var(--color-accent-3);color:var(--color-ink)}.quiet-button{color:var(--color-ink)}.text-button{min-height:2.75rem;padding:var(--space-xs);background:var(--color-transparent);color:var(--color-accent-2-deep);text-decoration:underline;text-decoration-thickness:var(--rule-medium);text-underline-offset:var(--space-2xs);border:0}.danger{color:var(--color-danger)!important}button[aria-busy=true]{cursor:wait}button.is-error{border-color:var(--color-danger)}button.is-success{border-color:var(--color-mint-deep)}.empty-state{justify-items:start;gap:var(--space-xs);padding:var(--space-xl);border:var(--rule-hair) dashed var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-cyan);color:var(--color-ink);display:grid}.empty-state h2{font-family:var(--font-display);font-size:var(--text-lg);margin:0}.empty-state p{max-width:55ch;margin:0 0 var(--space-xs);color:var(--color-ink-2)}.dialog-backdrop{z-index:var(--z-modal);background:var(--color-overlay);color:var(--color-paper);justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.detail-dialog{border-radius:var(--radius-dialog) var(--radius-dialog) 0 0;background:var(--color-paper);width:100%;max-height:94svh;color:var(--color-ink);box-shadow:var(--shadow-modal);overflow-y:auto}.detail-topbar{z-index:var(--z-raised);min-height:3.5rem;padding:var(--space-2xs) var(--space-md);border-block-end:var(--rule-hair) dashed var(--color-rule-strong);background:var(--color-paper);color:var(--color-ink);justify-content:space-between;align-items:center;display:flex;position:sticky;inset-block-start:0}.detail-media{background:var(--color-ink);color:var(--color-paper)}.detail-media img{object-fit:contain;width:100%;max-height:26rem;display:block}.detail-content{padding:var(--space-lg) var(--space-md) var(--space-xl)}.detail-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-sm);display:flex}.detail-heading>div{min-width:0}.detail-heading h2{font-size:clamp(1.5rem,6vw,2.4rem)}.detail-heading p{margin:var(--space-2xs) 0 0;color:var(--color-ink-2);font-size:var(--text-sm)}.incomplete-note,.device-notice{gap:var(--space-3xs);margin:var(--space-lg) 0;padding:var(--space-sm) var(--space-md);border:var(--rule-hair) solid var(--color-rule-strong);border-radius:var(--radius-input);background:var(--color-paper-2);color:var(--color-ink);flex-direction:column;display:flex}.incomplete-note span,.device-notice span{color:var(--color-ink-2);font-size:var(--text-sm)}.detail-section{padding-block:var(--space-lg);border-block-end:var(--rule-hair) dashed var(--color-rule-strong)}.detail-section h3{margin:0 0 var(--space-sm);font-family:var(--font-display);font-size:var(--text-md)}.section-title-row{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.section-title-row h3{margin:0}.unverified{padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-pill);background:var(--color-paper-2);color:var(--color-warning);white-space:nowrap;flex:none;font-size:.625rem;font-weight:700}.nutrition-grid{gap:var(--space-xs);margin:var(--space-sm) 0 0;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.nutrition-grid div{padding:var(--space-sm);border-radius:var(--radius-input);background:var(--color-paper-pear);color:var(--color-ink)}.nutrition-grid dt{color:var(--color-ink-2);font-size:var(--text-xs)}.nutrition-grid dd{margin:var(--space-2xs) 0 0;font-family:var(--font-display);font-size:var(--text-md);font-weight:700}.ingredient-list,.method-list,.shopping-group>ul,.source-notes{margin:var(--space-sm) 0 0;padding:0;list-style:none}.ingredient-list>li{justify-content:space-between;align-items:center;gap:var(--space-sm);padding-block:var(--space-sm);border-block-start:var(--rule-hair) dashed var(--color-rule);display:flex}.ingredient-list>li:first-child{border-block-start:0}.ingredient-list div{min-width:0;display:grid}.ingredient-list span{color:var(--color-ink-2);font-size:var(--text-xs)}.ingredient-list button{color:var(--color-accent-2-deep);flex:none}.method-list{counter-reset:method}.method-list li{padding:var(--space-xs) 0 var(--space-xs) var(--space-xl);counter-increment:method;position:relative}.method-list li:before{border-radius:var(--radius-pill);background:var(--color-accent);width:1.75rem;height:1.75rem;color:var(--color-accent-ink);content:counter(method);font-family:var(--font-label);font-size:var(--text-xs);place-items:center;font-weight:500;display:grid;position:absolute;inset-inline-start:0}.empty-copy{color:var(--color-ink-2)}.inline-controls{gap:var(--space-sm);display:grid}.raw-note{border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-input);background:var(--color-paper-2);color:var(--color-ink);margin-block-start:var(--space-lg)}.raw-note summary{min-height:2.75rem;padding:var(--space-sm) var(--space-md);cursor:pointer;font-weight:600}.raw-note pre{padding:var(--space-md);border-block-start:var(--rule-hair) dashed var(--color-rule);font-family:var(--font-body);font-size:var(--text-sm);white-space:pre-wrap;margin:0;overflow:auto}.source-link{min-height:2.75rem;color:var(--color-accent-2-deep);text-underline-offset:var(--space-2xs);white-space:nowrap;align-items:center;margin-block-start:var(--space-md);font-weight:700;display:inline-flex}.operate-page{max-width:70rem;margin-inline:auto}.week-grid{gap:var(--space-sm);grid-template-columns:minmax(0,1fr);margin-block-end:var(--space-lg);display:grid}.day-column{padding:var(--space-md);border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-card);background:var(--color-paper-cyan);color:var(--color-ink)}.day-column h2{margin:0 0 var(--space-xs);font-family:var(--font-display);font-size:var(--text-md)}.meal-slot{gap:var(--space-xs);min-height:4.25rem;padding-block:var(--space-xs);border-block-start:var(--rule-hair) dashed var(--color-rule-strong);grid-template-columns:4.4rem minmax(0,1fr);display:grid}.meal-slot>span{color:var(--color-ink-2);font-family:var(--font-label);font-size:var(--text-xs);font-weight:500}.meal-slot p{color:var(--color-ink-3);font-size:var(--text-sm);margin:0}.meal-recipe{width:100%;min-height:2.75rem;padding:var(--space-2xs) 0;background:var(--color-transparent);text-align:start;text-overflow:ellipsis;white-space:nowrap;border:0;font-weight:700;overflow:hidden}.remove-link{min-height:2.75rem;padding:var(--space-2xs) 0;background:var(--color-transparent);color:var(--color-danger);font-size:var(--text-xs);white-space:nowrap;border:0;text-decoration:underline}.device-notice{margin:0 0 var(--space-md);background:var(--color-paper-pear);color:var(--color-ink)}.manual-form{gap:var(--space-sm);padding:var(--space-md);border:var(--rule-hair) dashed var(--color-rule-strong);border-radius:var(--radius-card);background:var(--color-paper-cyan);color:var(--color-ink);display:grid}.list-actions{gap:var(--space-xs);padding-block:var(--space-md);flex-wrap:wrap;display:flex}.shopping-groups{gap:var(--space-md);display:grid}.shopping-group{border:var(--rule-hair) solid var(--color-rule);border-radius:var(--radius-card);background:var(--color-paper-2);color:var(--color-ink);overflow:clip}.shopping-group>h2{padding:var(--space-sm) var(--space-md);background:var(--color-paper-pear);color:var(--color-ink);font-family:var(--font-display);font-size:var(--text-base);justify-content:space-between;align-items:center;margin:0;display:flex}.shopping-group[data-status=มีที่บ้าน]>h2{background:var(--color-paper-cyan);color:var(--color-ink)}.shopping-group[data-status=ซื้อแล้ว]>h2{background:var(--color-paper-mint);color:var(--color-ink)}.shopping-group>h2 span{min-width:1.75rem;height:1.75rem;padding-inline:var(--space-xs);border-radius:var(--radius-pill);background:var(--color-paper);color:var(--color-ink);font-family:var(--font-label);font-size:var(--text-xs);place-items:center;display:grid}.shopping-group>ul{margin:0}.shopping-group>ul>li{gap:var(--space-sm);padding:var(--space-md);border-block-start:var(--rule-hair) dashed var(--color-rule-strong);display:grid}.shopping-group>ul>li:first-child{border-block-start:0}.shopping-group>ul>li.completed .item-main>strong{color:var(--color-ink-3);text-decoration:line-through}.item-main{min-width:0}.item-main>strong{overflow-wrap:anywhere;font-family:var(--font-display);font-size:var(--text-base)}.item-main form{gap:var(--space-xs);flex-wrap:wrap;display:flex}.source-notes{gap:var(--space-2xs);display:grid}.source-notes li{gap:var(--space-xs);color:var(--color-ink-2);font-size:var(--text-xs);grid-template-columns:minmax(5.4rem,auto) minmax(0,1fr);display:grid}.source-notes span{color:var(--color-ink);font-weight:600}.source-notes small{color:var(--color-ink-2);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.item-actions{gap:var(--space-xs);grid-template-columns:minmax(0,1fr) auto auto;display:grid}.item-actions button{padding-inline:var(--space-sm);border:var(--rule-hair) solid var(--color-rule-strong);background:var(--color-paper);color:var(--color-ink)}.group-empty{padding:var(--space-md);color:var(--color-ink-2);font-size:var(--text-sm);margin:0}.provenance-footer{gap:var(--space-2xs);padding:var(--space-lg) var(--page-gutter) calc(var(--space-3xl) + env(safe-area-inset-bottom));border-block-start:var(--rule-medium) solid var(--color-ink);background:var(--color-accent);color:var(--color-accent-ink);display:grid}.provenance-footer span{font-family:var(--font-display);font-size:var(--text-md);letter-spacing:-.025em;font-weight:700}.provenance-footer p{max-width:65ch;font-size:var(--text-xs);margin:0}.toast{z-index:var(--z-toast);inset-inline:var(--space-sm);justify-content:space-between;align-items:center;gap:var(--space-sm);min-height:3.5rem;padding:var(--space-xs) var(--space-xs) var(--space-xs) var(--space-md);border-radius:var(--radius-card);background:var(--color-ink);color:var(--color-paper);box-shadow:var(--shadow-modal);font-size:var(--text-sm);display:flex;position:fixed;inset-block-end:calc(4.5rem + env(safe-area-inset-bottom))}.toast button{border:var(--rule-hair) solid var(--color-paper-3);border-radius:var(--radius-pill);background:var(--color-transparent);min-height:2.75rem;color:var(--color-paper);white-space:nowrap}.star-burst{background:linear-gradient(90deg, transparent 47%, var(--color-accent-3) 47% 53%, transparent 53%), linear-gradient(0deg, transparent 47%, var(--color-accent-3) 47% 53%, transparent 53%);width:1.5rem;height:1.5rem;animation:star-burst var(--dur-long) var(--ease-out) forwards;pointer-events:none;position:absolute;inset-block-start:-.35rem;inset-inline-start:-.35rem}@keyframes kitchen-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes star-burst{0%{opacity:1;transform:scale(0)rotate(0)}60%{opacity:.9;transform:scale(1.2)rotate(35deg)}to{opacity:0;transform:scale(1.4)rotate(45deg)}}@media (hover:hover) and (pointer:fine){.site-header nav button:hover{background:var(--color-paper-2);color:var(--color-ink)}.recipe-card:hover,.recipe-card:focus-within{background:var(--card-surface)}@supports (color:color-mix(in lab, red, red)){.recipe-card:hover,.recipe-card:focus-within{background:color-mix(in oklch, var(--card-surface) 84%, var(--card-hover))}}.recipe-card:hover,.recipe-card:focus-within{box-shadow:var(--shadow-contact), var(--shadow-card-raised);transform:translateY(-4px)}.btn:hover{box-shadow:0 6px 0 0 var(--btn-edge), 0 12px 22px -4px var(--btn-cast);transform:translateY(-2px)}.btn--soft:hover{background:var(--color-paper-3);box-shadow:0 10px 20px -10px var(--btn-cast)}.btn--outline:hover{background:var(--color-paper-pear);box-shadow:none}.secondary-button:hover,.quiet-button:hover,.ingredient-list button:hover,.item-actions button:hover,.item-main form button:hover{background:var(--color-paper-3);color:var(--color-ink)}.favorite-button:hover{background:var(--color-paper);color:var(--color-ink)}.text-button:hover,.source-link:hover{color:var(--color-ink)}}@media (min-width:40rem){.catalogue-masthead{padding-block:var(--space-sm);grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) auto}.brand-block>span:not(.kitchen-character){display:block}.masthead-note{grid-column:1;display:block}main{padding-block:var(--space-lg) var(--space-3xl)}.catalogue-toolbar{align-items:end}.filter-bar{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr) minmax(0,1fr);align-items:end}.results-line small{display:inline}.recipe-grid{gap:var(--space-md);grid-template-columns:repeat(3,minmax(0,1fr))}.card-open{min-height:0;display:block}.thumb-wrap{aspect-ratio:4/3;height:auto;min-height:0}.card-body{min-height:8.6rem;padding:var(--space-md)}.dialog-backdrop{padding:var(--space-lg);align-items:center}.detail-dialog{border-radius:var(--radius-dialog);max-width:48rem}.detail-content{padding:var(--space-lg) var(--space-xl) var(--space-xl)}.nutrition-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.inline-controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:end}.week-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.manual-form{grid-template-columns:minmax(0,1fr) auto;align-items:end}.shopping-group>ul>li{grid-template-columns:minmax(0,1fr) auto;align-items:start}.item-actions{grid-template-columns:9.5rem auto auto}.toast{inset-inline:auto var(--space-lg);min-width:20rem}}@media (min-width:60rem){.app-shell{grid-template-columns:17rem minmax(0,1fr);align-items:start;display:grid}.catalogue-side-rail{align-items:stretch;gap:var(--space-xl);height:100svh;min-height:38rem;padding:var(--space-xl) var(--space-lg);border-inline-end:var(--rule-medium) solid var(--color-ink);background:var(--color-paper-pear);border-block-end:0;flex-direction:column;display:flex;position:sticky;inset-block-start:0}.catalogue-side-rail .brand-block{align-content:start;gap:var(--space-xs);display:grid}.catalogue-side-rail .brand-block>span:not(.kitchen-character){display:block}.catalogue-side-rail .brand{font-size:var(--text-xl);white-space:normal}.catalogue-side-rail .kitchen-character{position:absolute;inset-block-start:5.25rem;inset-inline-end:-2.2rem}.catalogue-side-rail .masthead-note{white-space:normal;display:block}.catalogue-side-rail nav{gap:var(--space-xs);border-radius:var(--radius-card);background:var(--color-transparent);color:var(--color-ink);grid-template-columns:minmax(0,1fr);margin-block-start:auto;padding:0;display:grid;position:static}.catalogue-side-rail nav button{padding-inline:var(--space-md);font-size:var(--text-sm);justify-content:space-between}.catalogue-side-rail nav button:not(.active){border-color:var(--color-rule-strong);background:var(--color-paper)}.inventory-workspace{min-height:100svh}.provenance-footer{padding-block-end:var(--space-lg)}.toast{inset-block-end:var(--space-lg)}.catalogue-toolbar{gap:var(--space-lg);grid-template-columns:minmax(12rem,.6fr) minmax(0,1.7fr)}.recipe-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.detail-dialog{grid-template-rows:3.5rem minmax(0,1fr);grid-template-columns:minmax(21rem,.85fr) minmax(31.25rem,1.15fr);max-width:70rem;max-height:90svh;display:grid}.detail-topbar{grid-column:1/-1}.detail-media{justify-content:center;align-items:flex-start;min-height:0;display:flex}.detail-media img{width:100%;max-height:calc(90svh - 3.5rem);position:sticky;inset-block-start:3.5rem}.detail-content{overflow-y:auto}.week-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:80rem){.recipe-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.week-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.meal-slot{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{animation-duration:var(--dur-reduced)!important;scroll-behavior:auto!important;transition-duration:var(--dur-reduced)!important;animation-iteration-count:1!important}.kitchen-character{animation:none;transform:none!important}.star-burst{animation:none;display:none}.recipe-card,.recipe-card:hover,.recipe-card:focus-within,.btn,.btn:hover,.btn:active{transform:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
