:root{--paper-grid:#e8eaed;--paper-edge:#d3d6db;--paper-white:#eff1f4;--grid-line:#b8bdc6;--grid-accent:#b8bdc6;--ink-black:#1f242c;--ink-gray:#4d5462;--ink-light:#8c93a0;--accent:#4a5d75;--accent-soft:#6e7e98;--hairline:color-mix(in srgb, var(--ink-black) 10%, transparent);--hairline-strong:color-mix(in srgb, var(--accent) 22%, transparent);--wash:color-mix(in srgb, var(--accent) 5%, transparent);--wash-strong:color-mix(in srgb, var(--accent) 10%, transparent);--field-focus-bg:color-mix(in srgb, var(--accent) 7%, transparent);--touch-min:44px;--role-flour:var(--accent);--role-water:color-mix(in srgb, var(--ink-gray) 70%, var(--accent));--role-other:var(--ink-light);--shadow-soft:color-mix(in srgb, var(--ink-black) 5%, transparent);--shadow-medium:color-mix(in srgb, var(--ink-black) 8%, transparent);--shadow-deep:color-mix(in srgb, var(--ink-black) 13%, transparent);--shadow-accent:color-mix(in srgb, var(--accent) 18%, transparent);--shadow-overlay:0 2px 4px color-mix(in srgb, var(--ink-black) 10%, transparent), 0 12px 28px color-mix(in srgb, var(--ink-black) 20%, transparent), 0 28px 56px -12px color-mix(in srgb, var(--ink-black) 24%, transparent)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--ink-black);letter-spacing:.01em;background-color:var(--paper-grid);min-height:100vh;font-family:Noto Sans JP,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;position:relative}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.paper-card{background:var(--paper-white);border:1px solid color-mix(in srgb, var(--ink-black) 12%, transparent);box-shadow:0 1px 2px color-mix(in srgb, var(--ink-black) 5%, transparent), 0 6px 20px color-mix(in srgb, var(--ink-black) 8%, transparent), 0 20px 44px -18px color-mix(in srgb, var(--ink-black) 14%, transparent);position:relative}.paper-card-overlay{border-color:color-mix(in srgb, var(--accent) 32%, transparent);box-shadow:var(--shadow-overlay)}.picker-menu{z-index:30;min-width:var(--picker-menu-width,280px);max-width:calc(100vw - 2rem);max-height:calc(100vh - 6rem);box-shadow:var(--shadow-overlay);margin-top:.5rem;position:absolute;right:0;overflow-y:auto}.picker-menu-close,.picker-menu-title{display:none}@media (width<=640px){.picker-menu{z-index:60;-webkit-overflow-scrolling:touch;width:100%;min-width:0;max-width:none;max-height:100dvh;box-shadow:none;border-radius:0;margin-top:0;animation:.16s ease-out fadeIn;position:fixed;inset:0;overflow-y:auto}.picker-menu>.paper-card{min-height:100dvh;box-shadow:none;padding-top:calc(env(safe-area-inset-top,0px) + 1.25rem);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 1.25rem);border:none;border-radius:0}.picker-menu-close{top:calc(env(safe-area-inset-top,0px) + .5rem);z-index:2;width:var(--touch-min);height:var(--touch-min);color:var(--ink-gray);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:inline-flex;position:absolute;right:.5rem}.picker-menu-close:hover{color:var(--ink-black);background:var(--wash)}.picker-menu-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.picker-menu-title{color:var(--ink-gray);display:block}}.serif-heading{letter-spacing:.01em;font-family:Noto Serif JP,Georgia,serif;font-weight:500}.row-divider>*+*,.summary-divider{border-top:1px solid var(--hairline)}.mono{font-family:Source Code Pro,SF Mono,Monaco,monospace;font-weight:400}.grid-input{border:none;border-bottom:1px solid var(--hairline);color:var(--ink-black);touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;padding:4px 8px;font-family:Source Code Pro,monospace;transition:border-color .15s,background .15s}.grid-input:hover{border-bottom-color:var(--accent-soft)}.grid-input:focus{border-bottom:1px solid var(--accent);background:var(--field-focus-bg);outline:none}.grid-input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.minimal-button{letter-spacing:.08em;background:color-mix(in srgb, var(--accent) 8%, transparent);border:1px solid var(--accent);color:color-mix(in srgb, var(--accent) 70%, var(--ink-black));touch-action:manipulation;-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;font-family:Source Code Pro,monospace;font-size:.75rem;font-weight:600;transition:all .15s;display:inline-flex}.minimal-button:hover{background:var(--accent);border-color:var(--accent);color:var(--paper-white)}.minimal-button:active{transform:translateY(1px)}.minimal-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.minimal-button-primary{background:var(--accent);color:var(--paper-white)}.minimal-button-primary:hover{background:color-mix(in srgb, var(--accent) 80%, black);border-color:color-mix(in srgb, var(--accent) 80%, black);color:var(--paper-white)}.label-text{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-gray);font-family:Source Code Pro,monospace;font-size:.7rem;font-weight:500}.editable-title:empty:before{content:attr(data-placeholder);color:var(--ink-light);font-style:italic;font-weight:400}.toast{background:var(--ink-black);color:var(--paper-white);letter-spacing:.05em;border:1px solid var(--accent);box-shadow:0 4px 16px var(--shadow-accent);z-index:50;padding:10px 18px;font-family:Source Code Pro,monospace;font-size:.75rem;animation:.2s ease-out fadeIn;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@media (hover:none),(pointer:coarse){.minimal-button,.grid-input{min-height:var(--touch-min)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (width>=640px){.container{max-width:640px}}@media (width>=768px){.container{max-width:768px}}@media (width>=1024px){.container{max-width:1024px}}@media (width>=1280px){.container{max-width:1280px}}@media (width>=1536px){.container{max-width:1536px}}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.top-0{top:0}.z-40{z-index:40}.m-0{margin:0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mr-1{margin-right:.25rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.max-h-80{max-height:20rem}.min-h-\[44px\]{min-height:44px}.min-h-screen{min-height:100vh}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.max-w-6xl{max-width:72rem}.max-w-md{max-width:28rem}.flex-1{flex:1}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.p-0{padding:0}.p-10{padding:2.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pr-11{padding-right:2.75rem}.pr-2{padding-right:.5rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.blur{--tw-blur:blur(8px);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)}.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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}html,body{background-color:var(--paper-grid);background-image:linear-gradient(to right, var(--grid-line) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line) 1px, transparent 1px);background-position:calc(50vw - .5px) calc(50vh - .5px);background-size:5mm 5mm;min-height:100dvh}.recipe-row{-moz-column-gap:.5rem;grid-template-columns:minmax(0,1fr) 4.5rem 4.5rem;align-items:center;column-gap:.5rem;display:grid}.recipe-row.has-action{grid-template-columns:minmax(0,1fr) 4.5rem 4.5rem 2.25rem}.recipe-row .name-cell{align-items:center;gap:.375rem;min-width:0;display:flex}.recipe-row .num-cell{justify-content:flex-end;align-items:baseline;gap:.25rem;min-width:0;display:flex}.recipe-row .num-cell .grid-input{min-width:0}.recipe-row .action-cell{justify-content:flex-end;align-items:center;display:flex}@media (width<=400px){.recipe-row{-moz-column-gap:.375rem;grid-template-columns:minmax(0,1fr) 3.75rem 3.75rem;column-gap:.375rem}.recipe-row.has-action{grid-template-columns:minmax(0,1fr) 3.5rem 3.5rem 2rem}}.star-button{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent);width:2.25rem;height:2.25rem;color:color-mix(in srgb, var(--accent) 70%, var(--ink-black));touch-action:manipulation;-webkit-tap-highlight-color:transparent;flex-shrink:0;justify-content:center;align-items:center;font-size:1.1rem;line-height:1;transition:background .15s,color .15s,transform .15s;display:inline-flex}.star-button:hover{background:var(--accent);color:var(--paper-white)}.star-button:active{transform:translateY(1px)}.star-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.star-button.is-saved{background:var(--accent);color:var(--paper-white)}.star-button[aria-disabled=true]{cursor:wait;opacity:.7}.recipe-title-row{align-items:center;gap:.55rem;min-width:0;display:flex}.title-star-button{margin-top:.15rem}.editable-title.recipe-title,.recipe-title-row .editable-title{font-size:clamp(1.5rem,4.5vw,2rem);line-height:1.15}.toast{max-width:min(92vw,32rem);bottom:calc(24px + env(safe-area-inset-bottom));text-align:center;line-height:1.4}.ingredient-row{transition:background .12s}.ingredient-row:hover,.ingredient-row.is-reference{background:var(--wash)}.ingredient-row.is-reference:hover{background:var(--wash-strong)}.role-indicator{cursor:pointer;opacity:.45;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;width:14px;height:14px;padding:0;transition:opacity .12s;display:inline-flex}.ingredient-row:hover .role-indicator,.role-indicator:focus-visible,.role-indicator[aria-expanded=true]{opacity:1}.role-indicator:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.role-dot{background:var(--role-other);border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.role-dot-flour{background:var(--role-flour)}.role-dot-water{background:var(--role-water)}.role-dot-other{background:var(--role-other)}.role-option{cursor:pointer;text-align:left;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:3px;align-items:flex-start;gap:10px;padding:6px 8px;transition:background .1s;display:flex}.role-option .role-dot{margin-top:6px}.role-option:hover{background:var(--wash)}.role-option:focus-visible{background:var(--wash);outline:2px solid var(--accent);outline-offset:-2px}.role-option[aria-selected=true],.role-option[aria-current=true]{background:var(--wash-strong)}.starter-hydration-input{border:none;border-bottom:1px dashed var(--grid-line);color:var(--ink-gray);background:0 0;width:3.5em;padding:0 2px;font-family:Source Code Pro,monospace;font-size:.75rem;transition:border-color .15s,color .15s}.starter-hydration-input:hover{border-bottom-color:var(--accent-soft);color:var(--ink-black)}.starter-hydration-input:focus{border-bottom:1px solid var(--accent);color:var(--ink-black);outline:none}.merged-badge{background:var(--wash-strong);color:var(--accent);letter-spacing:.02em;white-space:nowrap;border-radius:2px;align-items:center;padding:1px 6px;font-size:.68rem;line-height:1.4;display:inline-flex}.ingredient-remove{opacity:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:opacity .12s}.ingredient-row:hover .ingredient-remove,.ingredient-remove:focus-visible{opacity:1}.ingredient-remove:hover{color:var(--ink-black)}.ingredient-remove:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media (hover:none),(pointer:coarse){.ingredient-remove{opacity:.45;min-width:var(--touch-min);min-height:var(--touch-min);margin:calc((var(--touch-min) - 24px) / -2)}}.ingredient-drag-handle{opacity:0;color:var(--ink-light);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;width:22px;padding:4px;transition:opacity .12s,color .12s;display:inline-flex}.ingredient-row:hover .ingredient-drag-handle,.ingredient-drag-handle:focus-visible{opacity:1}.ingredient-drag-handle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.ingredient-drag-handle:hover{color:var(--ink-black)}.ingredient-drag-handle:active{cursor:grabbing}@media (hover:none),(pointer:coarse){.ingredient-drag-handle{opacity:.55;min-width:var(--touch-min);min-height:var(--touch-min);margin:calc((var(--touch-min) - 22px) / -2)}}.ingredient-row.is-dragging{opacity:.35}.drag-gutter-placeholder{flex-shrink:0;width:22px;display:inline-block}.ingredient-name-editable{cursor:text;border-bottom:1px dashed #0000;border-radius:1px;padding:0 2px;transition:border-color .12s,background .12s}.ingredient-row:hover .ingredient-name-editable{border-bottom-color:var(--accent-soft)}.ingredient-name-editable:focus{border-bottom-color:var(--accent);background:var(--field-focus-bg)}.ingredient-name-editable:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.build-name-editable{cursor:text;border-bottom:2px dashed #0000;border-radius:1px;padding:0 4px;transition:border-color .12s,background .12s}.build-section:hover .build-name-editable{border-bottom-color:var(--accent-soft)}.build-name-editable:focus{border-bottom-color:var(--accent);background:var(--field-focus-bg)}.build-name-editable:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.build-kind-tag{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-light);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:6px;padding:2px 4px;font-family:Source Code Pro,monospace;font-size:.65rem;font-weight:600;transition:color .12s,transform .12s;display:inline-flex}.build-kind-tag:active{transform:translateY(1px)}.build-kind-tag:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media (hover:none),(pointer:coarse){.build-kind-tag{min-height:var(--touch-min);padding:5px 8px}}.build-kind-tag .build-kind-dot{background:var(--ink-light);border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:background .12s}.build-kind-tag.is-fermented{color:var(--accent)}.build-kind-tag.is-fermented .build-kind-dot{background:var(--accent)}.build-kind-tag:hover{color:var(--ink-black)}.build-kind-tag:hover .build-kind-dot{background:var(--ink-black)}.build-remove{cursor:pointer;opacity:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:none;padding:6px 8px;font-family:Source Code Pro,monospace;font-size:.9rem;line-height:1;transition:opacity .12s,color .12s}.build-section:hover .build-remove,.build-remove:focus-visible{opacity:1}.build-remove:hover{color:var(--ink-black)!important}.build-remove:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}@media (hover:none),(pointer:coarse){.build-remove{opacity:.55;min-width:var(--touch-min);min-height:var(--touch-min)}}.ingredient-row .grid-input{padding-top:0;padding-bottom:0;line-height:1.4}.add-ingredient-trigger{letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--accent) 70%, var(--ink-black));background:color-mix(in srgb, var(--accent) 5%, transparent);border:1px dashed color-mix(in srgb, var(--accent) 50%, transparent);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:3px;align-items:center;gap:6px;padding:5px 12px;font-family:Source Code Pro,monospace;font-size:.7rem;font-weight:600;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.add-ingredient-trigger:hover{background:color-mix(in srgb, var(--accent) 12%, transparent);border-color:var(--accent);color:var(--accent)}.add-ingredient-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (hover:none),(pointer:coarse){.add-ingredient-trigger{min-height:var(--touch-min)}}.sign-in-shell{place-items:center;display:grid}.sign-in-card{width:min(100%,420px);animation:.5s ease-out fadeIn}.sign-in-heading{color:var(--ink-black);font-size:var(--text-page-title,clamp(1.6rem, 4vw, 1.9rem));margin-bottom:1.1rem;line-height:1.15}.sign-in-stack,.sign-in-form{flex-direction:column;gap:14px;display:flex}.sign-in-copy{margin:0}.sign-in-label{flex-direction:column;gap:6px;display:flex}.sign-in-input{width:100%;padding-left:0;font-size:1rem}.sign-in-email{overflow-wrap:anywhere;color:var(--ink-black);font-family:Source Code Pro,monospace;font-size:.95rem}.sign-in-error{color:color-mix(in srgb, #b3261e 80%, var(--ink-black));margin:0;font-family:Source Code Pro,monospace;font-size:.78rem}.sign-in-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.account-content{max-width:760px}.account-header{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:24px;display:flex}.account-heading{color:var(--ink-black);font-size:var(--text-page-title,clamp(1.6rem, 4vw, 1.9rem));margin:0 0 8px;line-height:1.15}.account-email{overflow-wrap:anywhere;color:var(--ink-gray);margin:0;font-family:Source Code Pro,monospace;font-size:.86rem}.account-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.account-section-title-row{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:10px;display:flex}.account-section-heading{color:var(--ink-black);margin:0;font-family:Noto Serif JP,Georgia,serif;font-size:1.1rem;font-weight:500}.account-recipe-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.account-recipe-item,.account-empty{background:var(--paper-white);border:1px solid color-mix(in srgb, var(--ink-black) 12%, transparent);box-shadow:0 1px 2px var(--shadow-soft), 0 6px 20px var(--shadow-medium)}.account-recipe-item{justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.account-recipe-link{overflow-wrap:anywhere;color:var(--ink-black);font-family:Noto Serif JP,Georgia,serif;font-size:1.08rem;font-weight:500;line-height:1.3;text-decoration:none;display:block}.account-recipe-link:hover{color:var(--accent)}.account-recipe-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.account-recipe-meta{color:var(--ink-gray);margin-top:5px;font-family:Source Code Pro,monospace;font-size:.72rem;display:block}.account-recipe-remove{flex-shrink:0;align-items:center;display:flex}.recipe-remove-button{color:color-mix(in srgb, var(--ink-gray) 80%, transparent);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:6px;font-size:.95rem;line-height:1;transition:color .15s,background .15s;display:inline-flex}.recipe-remove-button:hover{color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.recipe-remove-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.account-empty{padding:24px}.account-empty-copy{margin:8px 0 18px}@media (width<=767.98px){.account-header{flex-direction:column;align-items:flex-start}.account-actions{justify-content:flex-start}}.account-danger{border-top:1px solid var(--hairline);margin-top:40px;padding-top:20px}.account-danger-summary{cursor:pointer;letter-spacing:.06em;color:var(--ink-light);align-items:center;width:fit-content;font-family:Source Code Pro,monospace;font-size:.78rem;list-style:none;display:inline-flex}.account-danger-summary::-webkit-details-marker{display:none}.account-danger-summary:before{content:"▸";margin-right:8px;font-size:.7rem}.account-danger[open] .account-danger-summary:before{content:"▾"}.account-danger-summary:hover{color:var(--danger,#a14a4a)}.account-danger-summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.account-danger-body{max-width:520px;margin-top:14px}.account-danger-copy{color:var(--ink-gray);margin:0 0 14px;font-size:.9rem;line-height:1.55}.account-danger-button{color:#a14a4a;cursor:pointer;background:0 0;border:1px solid #a14a4a73;border-radius:6px;padding:7px 14px;font-family:Source Code Pro,monospace;font-size:.78rem;transition:background .15s,color .15s,border-color .15s}.account-danger-button:hover{color:var(--paper-white);background:#a14a4a;border-color:#a14a4a}.account-danger-button:focus-visible{outline-offset:2px;outline:2px solid #a14a4a}.legal-header{margin-bottom:28px}.legal-kicker-link{color:inherit;text-decoration:none}.legal-kicker-link:hover{color:var(--accent)}.legal-heading{color:var(--ink-black);font-size:var(--text-page-title,clamp(1.6rem, 4vw, 1.9rem));margin:0 0 8px;line-height:1.15}.legal-card{max-width:720px}.legal-prose{color:var(--ink-gray);font-size:.98rem;line-height:1.65}.legal-prose h2{color:var(--ink-black);margin:28px 0 8px;font-family:Noto Serif JP,Georgia,serif;font-size:1.12rem;font-weight:500}.legal-prose h2:first-child,.legal-prose>p:first-child{margin-top:0}.legal-prose p{margin:0 0 14px}.legal-prose ul{margin:0 0 14px;padding-left:20px}.legal-prose li{margin:0 0 8px}.legal-prose strong{color:var(--ink-black);font-weight:500}.legal-prose a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.legal-prose a:hover{color:var(--accent-soft)}.site-footer{padding:20px 16px 28px}@media (width>=768px){.site-footer{padding-left:24px;padding-right:24px}}.site-footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;max-width:72rem;margin:0 auto;font-family:Source Code Pro,monospace;font-size:.74rem;display:flex}.site-footer-brand{color:var(--ink-light);letter-spacing:.14em;text-transform:uppercase}.site-footer-links{flex-wrap:wrap;gap:18px;display:flex}.site-footer-links a{color:var(--ink-gray);text-decoration:none}.site-footer-links a:hover{color:var(--accent)}.site-footer-links a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.dash-card{background:var(--paper-white);border:1px solid color-mix(in srgb, var(--ink-black) 12%, transparent);box-shadow:0 1px 2px var(--shadow-soft), 0 6px 20px var(--shadow-medium);border-radius:4px;padding:16px 18px}.dash-card-label{letter-spacing:.12em;text-transform:uppercase;display:block}.dash-card-value{color:var(--ink-black);margin-top:6px;font-family:Source Code Pro,monospace;font-size:1.7rem;line-height:1.1}.dash-bar-row{grid-template-columns:minmax(0,9rem) 1fr auto;align-items:center;gap:10px;display:grid}.dash-bar-label{text-overflow:ellipsis;white-space:nowrap;color:var(--ink-gray);font-family:Source Code Pro,monospace;font-size:.78rem;overflow:hidden}.dash-bar-track{background:color-mix(in srgb, var(--ink-black) 7%, transparent);border-radius:4px;height:8px;position:relative;overflow:hidden}.dash-bar-fill{background:color-mix(in srgb, var(--accent) 60%, transparent);border-radius:4px;position:absolute;inset:0 auto 0 0}.dash-bar-count{color:var(--ink-gray);font-family:Source Code Pro,monospace;font-size:.78rem}.dash-spark{align-items:flex-end;gap:4px;height:88px;margin-top:12px;display:flex}.dash-spark-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:100%;display:flex}.dash-spark-bar{background:color-mix(in srgb, var(--accent) 55%, transparent);border-radius:2px 2px 0 0;width:100%}.dash-spark-day{color:var(--ink-light);font-family:Source Code Pro,monospace;font-size:.6rem}.dash-table-scroll{margin-top:12px;overflow-x:auto}.dash-table{border-collapse:collapse;width:100%;font-size:.8rem}.dash-table th{text-align:left;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-light);border-bottom:1px solid color-mix(in srgb, var(--ink-black) 10%, transparent);padding:6px 10px;font-family:Source Code Pro,monospace;font-size:.66rem}.dash-table td{color:var(--ink-black);border-bottom:1px solid color-mix(in srgb, var(--ink-black) 6%, transparent);vertical-align:top;padding:6px 10px}.dash-mono{color:var(--ink-gray);font-family:Source Code Pro,monospace}.dash-truncate{text-overflow:ellipsis;white-space:nowrap;max-width:18rem;overflow:hidden}.dash-outcome{border-radius:3px;padding:1px 6px;font-family:Source Code Pro,monospace;font-size:.72rem}.dash-outcome-ok{color:color-mix(in srgb, var(--accent) 70%, var(--ink-black));background:color-mix(in srgb, var(--accent) 10%, transparent)}.dash-outcome-warn{color:#8a5a00;background:#d98a0024}.dash-live-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.dash-live-status{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-light);align-items:center;gap:6px;font-family:Source Code Pro,monospace;font-size:.7rem;display:inline-flex}.dash-live-dot{background:var(--ink-light);border-radius:50%;width:7px;height:7px}.dash-live-live .dash-live-dot{background:#2e9e5b;box-shadow:0 0 0 3px #2e9e5b38}.dash-live-connecting .dash-live-dot{background:#d98a00}.dash-live-offline .dash-live-dot{background:#c0392b}.dash-live-list{gap:2px;max-height:280px;margin:12px 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.dash-live-item{border-radius:3px;grid-template-columns:auto auto 1fr;align-items:baseline;gap:10px;padding:4px 6px;font-size:.8rem;display:grid}.dash-live-item:nth-child(odd){background:color-mix(in srgb, var(--ink-black) 3%, transparent)}.dash-live-time{font-size:.72rem}.dash-live-name{color:var(--ink-black);font-weight:500}.dash-live-meta{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.dash-page{width:100%;max-width:820px;margin:0 auto;overflow-x:clip}.dash-stack{gap:1.25rem;margin-top:1.5rem;display:grid}.dash-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.dash-seg{border:1px solid var(--hairline);background:var(--paper-white);border-radius:6px;display:inline-flex;overflow:hidden}.dash-seg-btn{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-light);padding:.3rem .85rem;font-family:Source Code Pro,monospace;font-size:.72rem;text-decoration:none}.dash-seg-btn+.dash-seg-btn{border-left:1px solid var(--hairline)}.dash-seg-btn.is-active{background:var(--accent);color:var(--paper-white)}.dash-toolbar-note{white-space:nowrap}.dash-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;display:grid}.dash-split{grid-template-columns:minmax(0,1fr);gap:1.25rem;display:grid}@media (width>=680px){.dash-split{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=720px){.dash-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.dash-card,.dash-live{min-width:0}.evt-empty{margin-top:.6rem}.evt-stack{gap:.55rem;margin-top:.85rem;display:grid}.evt-card{--evt-accent:var(--accent);background:var(--paper-white);border:1px solid var(--hairline);border-left:3px solid var(--evt-accent);min-width:0;box-shadow:0 1px 2px var(--shadow-soft);border-radius:6px;gap:.5rem;padding:.7rem .8rem .62rem;display:grid;position:relative}.evt-new{box-shadow:0 0 0 1px color-mix(in srgb, var(--evt-accent) 32%, transparent), 0 4px 16px var(--shadow-medium);animation:.35s ease-out evtIn}@keyframes evtIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.evt-head{grid-template-columns:auto 1fr auto;align-items:start;gap:.6rem;display:grid}.evt-glyph{background:color-mix(in srgb, var(--evt-accent) 13%, transparent);width:1.9rem;height:1.9rem;color:var(--evt-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1rem;line-height:1;display:inline-flex}.evt-headtext{gap:1px;min-width:0;display:grid}.evt-title{color:var(--ink-black);font-family:Noto Serif JP,Georgia,serif;font-size:.98rem;font-weight:500;line-height:1.2}.evt-summary{color:var(--ink-gray);overflow-wrap:anywhere;font-size:.8rem;line-height:1.3}.evt-time{color:var(--ink-light);white-space:nowrap;padding-top:2px;font-family:Source Code Pro,monospace;font-size:.7rem}.evt-primary{align-items:baseline;gap:.4rem;display:flex}.evt-primary-value{color:var(--evt-accent);font-family:Source Code Pro,monospace;font-size:1.35rem;line-height:1}.evt-primary-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-light);font-family:Source Code Pro,monospace;font-size:.64rem}.evt-rows{grid-template-columns:repeat(2,minmax(0,1fr));gap:.22rem .85rem;margin:0;display:grid}@media (width<=359px){.evt-rows{grid-template-columns:minmax(0,1fr)}}.evt-row{border-top:1px solid color-mix(in srgb, var(--ink-black) 5%, transparent);justify-content:space-between;gap:.5rem;min-width:0;padding-top:.22rem;display:flex}.evt-row-label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-light);white-space:nowrap;font-family:Source Code Pro,monospace;font-size:.66rem}.evt-row-value{min-width:0;color:var(--ink-gray);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:.3rem;font-family:Source Code Pro,monospace;font-size:.74rem;display:inline-flex;overflow:hidden}.evt-role-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.evt-role-flour{background:var(--role-flour)}.evt-role-water{background:var(--role-water)}.evt-role-other{background:var(--role-other)}.evt-foot{color:var(--ink-light);flex-wrap:wrap;align-items:center;gap:.35rem;min-width:0;font-family:Source Code Pro,monospace;font-size:.66rem;display:flex}.evt-source{text-transform:uppercase;letter-spacing:.05em}.evt-foot-item{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;overflow:hidden}.evt-foot-item:before{content:"· ";color:var(--ink-light)}.evt-badge{background:color-mix(in srgb, var(--danger,#a14a4a) 14%, transparent);color:var(--danger,#a14a4a);text-transform:uppercase;letter-spacing:.04em;border-radius:3px;padding:1px 6px}.evt-edit{--evt-accent:#4a5d75}.evt-view{--evt-accent:#6e7e98}.evt-create{--evt-accent:#4f7d5e}.evt-save{--evt-accent:#8a6d3a}.evt-share{--evt-accent:#4a6d8a}.evt-remove{--evt-accent:#9a5e52}.evt-auth{--evt-accent:#5b5a86}.evt-system{--evt-accent:#8c93a0}.evt-error{--evt-accent:#a14a4a}.last\:mb-0:last-child{margin-bottom:0}@media (width>=640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:p-6{padding:1.5rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (width>=768px){.md\:sticky{position:sticky}.md\:top-6{top:1.5rem}.md\:top-8{top:2rem}.md\:w-auto{width:auto}.md\:flex-1{flex:1}.md\:shrink-0{flex-shrink:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-end{align-items:flex-end}.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-5{gap:1.25rem}.md\:gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.md\:gap-y-3{row-gap:.75rem}.md\:self-start{align-self:flex-start}.md\:p-10{padding:2.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-14{padding-top:3.5rem;padding-bottom:3.5rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}}
