:root{--face: #d4d0c8;--face-light: #dfdfdf;--white: #ffffff;--shadow: #808080;--dark: #000000;--text: #000000;--disabled: #808080;--title-a: #0a246a;--title-b: #a6caf0;--select-bg: #0a246a;--select-fg: #ffffff;--desktop: #3a6ea5;--danger: #a80000;--font: Tahoma, "MS Sans Serif", Verdana, Geneva, sans-serif;--mono: "Courier New", Courier, monospace;--link: #0a3ba8;--link-visited: #551a8b}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;padding:0;min-height:100dvh;background:var(--desktop);color:var(--text);font:13px/1.45 var(--font)}body[data-sync=pushing]{cursor:progress}.window{min-height:100dvh;display:flex;flex-direction:column;background:var(--face);border:2px solid;border-color:var(--white) var(--dark) var(--dark) var(--white);box-shadow:inset 1px 1px 0 var(--face-light),inset -1px -1px 0 var(--shadow);padding:3px;padding-bottom:max(3px,env(safe-area-inset-bottom))}.title-bar{display:flex;align-items:center;gap:4px;padding:3px 3px 3px 4px;background:linear-gradient(to right,var(--title-a),var(--title-b));color:var(--white);-webkit-user-select:none;user-select:none}.title-bar-icon{width:16px;height:16px;flex:none;background:var(--face);border:1px solid var(--dark);background-image:linear-gradient(to bottom,#fff 0,#fff 4px,silver 4px,silver 11px,gray 11px,gray 16px)}.title-bar-text{flex:1;font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:1px 1px 0 rgb(0 0 0 / 35%)}.title-bar-controls{display:flex;gap:2px;flex:none}.tb-btn{display:grid;place-items:center;width:18px;height:16px;font-size:10px;line-height:1;color:var(--text);background:var(--face);border:1px solid;border-color:var(--white) var(--dark) var(--dark) var(--white);box-shadow:inset 1px 1px 0 var(--face-light),inset -1px -1px 0 var(--shadow)}.window-body{flex:1;padding:8px 4px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.status-bar{display:flex;gap:2px;padding:2px;flex:none}.status-field{padding:2px 6px;border:1px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-bar{flex-wrap:wrap}.status-note{color:#404040}#sync-status{display:inline-flex;align-items:center;gap:5px}.status-grip{width:16px;height:16px;flex:none;align-self:flex-end;margin-left:auto;clip-path:polygon(100% 2px,100% 100%,2px 100%);background:repeating-linear-gradient(135deg,transparent 0 1px,var(--white) 1px 3px,var(--shadow) 3px 4px)}.sync-progress{position:relative;width:56px;height:10px;flex:none;overflow:hidden;background:var(--face);border:1px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow)}.sync-progress:before{content:"";position:absolute;top:1px;bottom:1px;left:0;width:20px;background:repeating-linear-gradient(to right,var(--title-a) 0 5px,transparent 5px 7px);animation:sync-marquee 1.2s linear infinite}@keyframes sync-marquee{0%{transform:translate(-20px)}to{transform:translate(56px)}}@media(prefers-reduced-motion:reduce){.sync-progress{display:none}}.group{margin:0;padding:10px 8px 8px;border:1px solid var(--shadow);box-shadow:1px 1px 0 var(--white),inset 1px 1px 0 var(--white);display:flex;flex-direction:column;gap:8px;min-width:0}.group>legend{padding:0 4px;font-weight:700}.row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;min-width:0}.row-recipe>#recipe-select{flex:1 1 6rem;min-width:0;width:auto}.row-recipe>#currency{flex:0 0 4.75rem}.row-buttons>button,.row-buttons>.button-link{flex:1 1 auto}.row-buttons-quiet{margin-top:-2px}.row-buttons-quiet>button{font-size:12px;color:#404040}button,.button-link{font:inherit;color:var(--text);background:var(--face);min-height:32px;padding:4px 12px;border:2px solid;border-color:var(--white) var(--dark) var(--dark) var(--white);box-shadow:inset 1px 1px 0 var(--face-light),inset -1px -1px 0 var(--shadow);cursor:pointer;touch-action:manipulation;white-space:nowrap}button:active:not(:disabled),.button-link:active{border-color:var(--dark) var(--white) var(--white) var(--dark);box-shadow:inset 1px 1px 0 var(--shadow),inset -1px -1px 0 var(--face-light);padding:5px 11px 3px 13px}button:disabled{color:var(--disabled);text-shadow:1px 1px 0 var(--white);cursor:default}button.default-button{border-color:var(--white) var(--dark) var(--dark) var(--white);outline:1px solid var(--dark);outline-offset:0;font-weight:700}button:focus-visible,.button-link:focus-visible,select:focus-visible,input:focus-visible{outline:1px dotted var(--dark);outline-offset:-4px}input[type=text],input[type=number],input[type=search],select{font:inherit;font-size:16px;color:var(--text);background:var(--white);min-height:32px;padding:4px 6px;border:2px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow);box-shadow:inset 1px 1px 0 var(--dark),inset -1px -1px 0 var(--face-light);border-radius:0;min-width:0;width:100%}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:22px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Crect width='18' height='18' fill='%23d4d0c8'/%3E%3Cpath d='M0.5 17.5V0.5h17' stroke='%23ffffff' fill='none'/%3E%3Cpath d='M0.5 17.5h17V0.5' stroke='%23000000' fill='none'/%3E%3Cpath d='M1.5 16.5h15V1.5' stroke='%23808080' fill='none'/%3E%3Cpath d='M5 7.5h8l-4 5z' fill='%23000000'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 3px center}.field{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.field-label{font-size:12px}.field-row{display:flex;flex-direction:column;gap:8px;min-width:0}.pair{display:flex;align-items:center;gap:6px;min-width:0}.pair input{flex:1 1 4rem;min-width:0;width:auto}.pair select{flex:0 0 5.5rem;width:auto}.pair .pack-size{flex:0 0 4rem}.pair-sep{flex:none;color:#404040}.row-saved{align-items:center;gap:6px 8px}.row-saved>label{flex:none}.row-saved>select{flex:1 1 12rem;min-width:0;width:auto}.row-pantry-search{align-items:center;gap:6px 8px}.row-pantry-search>label{flex:none}.row-pantry-search>input{flex:1 1 10rem;min-width:0;width:auto}.add-form{display:flex;flex-direction:column;gap:8px;min-width:0}.form-error{margin:0;padding:4px 6px;background:var(--white);border:1px solid var(--shadow);color:var(--danger);font-weight:700}.form-notice{display:flex;align-items:flex-start;gap:8px;margin:0;padding:4px 6px;background:var(--white);border:1px solid var(--shadow);border-left:4px solid var(--title-a)}.form-notice-text{flex:1;min-width:0}.clear-button{flex:none;width:32px;padding:0;font-size:12px;line-height:1}.clear-button:active:not(:disabled){padding:1px 0 0 1px}.form-notice .clear-button{width:24px;min-height:24px;font-size:10px}.clearable{display:flex;gap:4px;min-width:0}.clearable>input{flex:1 1 auto;width:auto;min-width:0}.group-list{padding-bottom:0}.list-panel{background:var(--white);border:2px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow);box-shadow:inset 1px 1px 0 var(--dark),inset -1px -1px 0 var(--face-light);margin:0 -4px -4px;overflow-x:auto}.ingredients{width:100%;table-layout:fixed;border-collapse:collapse;background:var(--white)}.ingredients thead{display:none}.ingredients tbody tr{display:block;padding:6px 8px;border-bottom:1px solid var(--face)}.ingredients tbody tr:last-child{border-bottom:none}.ingredients tbody td{display:block;padding:1px 0}.ingredients tbody td[data-label]:before{content:attr(data-label) ": ";color:#404040}.cell-name{font-weight:700}.ingredients td.cell-meta{display:inline-block;margin-right:14px}.cell-cost{font-weight:700}[hidden]{display:none!important}.check{display:flex;align-items:center;gap:6px}.check input{width:16px;height:16px;margin:0;flex:none}.batch-tag,.pantry-tag{margin-left:6px;padding:0 4px;border:1px solid var(--shadow);background:var(--face);font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.follow-field{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}.follow-switch{display:inline-flex}.follow-choice{min-height:28px;padding:2px 10px;font-size:12px}.follow-choice[aria-pressed=true]{border-color:var(--dark) var(--white) var(--white) var(--dark);box-shadow:inset 1px 1px 0 var(--shadow),inset -1px -1px 0 var(--face-light);background:var(--face-light);font-weight:700}.follow-note{font-size:11px;color:var(--danger)}.ingredients tr.editing-follow{outline:none}#batch-select{flex:1;min-width:0;width:auto}.row-batch{align-items:center}.row-batch .pair{flex:1 1 8rem}.readout.is-loss{background:var(--danger);color:var(--white)}.row-gst{gap:8px}.pair-gst{flex:0 0 8rem}.menu-note{margin:0;font-size:12px;color:#404040;min-height:1.2em}.price-pair{display:flex;align-items:stretch;min-width:0}#menu-currency{display:flex;align-items:center;padding:0 0 0 8px;background:var(--select-bg);color:var(--select-fg);font-size:20px;font-weight:700;border:2px solid;border-color:var(--shadow) var(--select-bg) var(--white) var(--shadow);border-right:none;box-shadow:inset 1px 1px 0 var(--dark)}#menu-price{flex:1;min-width:0;border-left:none;box-shadow:inset 0 1px 0 var(--dark),inset -1px -1px 0 var(--face-light);background:var(--select-bg);color:var(--select-fg);text-align:right;font-size:20px;font-weight:700}#menu-price::placeholder{color:#ffffffa6}#menu-price{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}#menu-price::-webkit-outer-spin-button,#menu-price::-webkit-inner-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.price-spin{display:flex;flex-direction:column;flex:none;width:26px}.price-spin button{flex:1;display:grid;place-items:center;min-height:0;padding:0;font-size:8px;line-height:1}.price-spin button:active:not(:disabled){padding:1px 0 0 1px}#f-gp{text-align:right}.legend-toggle{display:flex;align-items:center;gap:6px;min-height:0;padding:2px 4px;margin:0;background:none;border:none;box-shadow:none;font:inherit;font-weight:700;cursor:pointer}.legend-toggle:active:not(:disabled){padding:2px 4px;border:none;box-shadow:none}.legend-toggle:hover:not(:disabled){border:none}.toggle-mark{font-size:9px;line-height:1}.group-body{display:flex;flex-direction:column;gap:8px;min-width:0}.pantry-list{margin:0;padding:0;list-style:none;background:var(--white)}.pantry-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:6px 8px;border-bottom:1px solid var(--face)}.pantry-row:last-child{border-bottom:none}.pantry-name{flex:1 1 8rem;font-weight:700;min-width:0;overflow-wrap:anywhere}.pantry-price{font-variant-numeric:tabular-nums}.pantry-actions{display:flex;gap:6px;margin-left:auto}.pantry-actions button{padding:2px 8px;min-height:28px}.pantry-edit{flex:1 1 12rem}.pantry-name-input{flex:1 1 8rem;min-width:0;width:auto}.pantry-empty{padding:20px 8px;text-align:center;color:#404040}.pantry-help{margin:0;color:#404040}.pantry-usage{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:11px}.pantry-usage button{padding:1px 6px;min-height:24px;font-size:11px}.pantry-unused,.pantry-fixed{color:#404040}.pantry-warn{font-weight:700}.pantry-uses{flex:1 0 100%;margin:0;padding:0 0 0 14px;list-style:none;font-size:11px}.pantry-uses li{display:flex;align-items:center;gap:8px;padding:1px 0}.link-button{padding:0;min-height:0;border:none;background:none;box-shadow:none;color:var(--title-a);font:inherit;text-align:left;text-decoration:underline;cursor:pointer}.link-button:active{border:none;box-shadow:none;transform:translate(1px,1px)}.link-button .toggle-mark{font-size:9px;text-decoration:none}.cost-void{color:var(--danger);font-weight:400}.cost-share{margin-left:6px;font-weight:400;color:#404040}.cell-actions{display:flex!important;gap:6px;justify-content:flex-end;margin-top:4px}.ingredients tr.editing{background:var(--face);outline:1px dotted var(--dark);outline-offset:-3px}.ingredients tr.editing .cell-cost{display:none}.empty td{padding:24px 8px;text-align:center;color:#404040}.gaps{margin:8px 0;padding:6px 8px 8px;background:var(--white);border:1px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow)}.gaps-title{margin:0 0 4px;font-size:12px;font-weight:700}.gap-list{margin:0;padding-left:18px;font-size:12px;color:#404040}.gap-list li{margin:3px 0}.gap-list button{min-height:24px;padding:2px 10px;font-size:12px;vertical-align:middle}.row-save{justify-content:flex-end}.save-button{flex:1 1 auto}.save-button.is-earned{animation:save-flash 1.8s ease-out forwards}@keyframes save-flash{0%,60%{background:#108a28;color:var(--white);text-shadow:none}to{background:var(--face);color:var(--text)}}@media(prefers-reduced-motion:reduce){.save-button.is-earned{animation:none;background:#108a28;color:var(--white)}}.totals{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.total-block{flex:1 1 8rem;display:flex;flex-direction:column;gap:2px;min-width:0}.total-label{font-size:12px}.readout{display:block;padding:5px 8px;background:var(--white);border:2px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow);box-shadow:inset 1px 1px 0 var(--dark),inset -1px -1px 0 var(--face-light);font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;min-height:32px}.readout-strong{background:var(--select-bg);color:var(--select-fg);font-size:20px}#yield-amount{text-align:right;font-size:18px;font-weight:700}.pair-yield{align-items:center}.pair-yield select{flex:0 1 auto;width:auto}.kind-note{margin:4px 0 0;font-size:12px;color:var(--shadow)}.visually-hidden{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}.cascade{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;pointer-events:none}.task-complete{position:fixed;z-index:91;top:50%;left:50%;transform:translate(-50%,-50%);width:min(20rem,calc(100vw - 32px));background:var(--face);border:2px solid;border-color:var(--white) var(--dark) var(--dark) var(--white);box-shadow:inset 1px 1px 0 var(--face-light),inset -1px -1px 0 var(--shadow),3px 3px 6px #00000059;padding:3px;pointer-events:none}.task-complete-body{display:flex;align-items:center;gap:12px;padding:16px 14px 12px}.task-complete-body p{margin:0}.task-complete-buttons{display:flex;justify-content:center;padding:0 14px 14px}.task-complete-buttons button{pointer-events:auto;min-width:75px}.task-star{position:relative;width:32px;height:32px;flex:none}.task-star:before,.task-star:after{content:"";position:absolute;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}.task-star:before{top:0;right:0;bottom:0;left:0;background:#4a3600}.task-star:after{top:3px;right:3px;bottom:3px;left:3px;background:linear-gradient(135deg,#fff7bd,#ffd42e 45%,#d99a00)}.demo-bar{position:fixed;z-index:92;right:8px;bottom:8px;display:flex;gap:4px;opacity:.85}.tb-link,.status-link{color:var(--text);text-decoration:none;font-weight:700}.account-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.account-state{flex:1 1 auto;min-width:0;font-size:12px;color:var(--shadow)}.account-bar>button{flex:none}.conflict-bar{display:flex;flex-direction:column;gap:8px;padding:8px;background:var(--face);border:2px solid;border-color:var(--white) var(--dark) var(--dark) var(--white);box-shadow:inset 1px 1px 0 var(--face-light),inset -1px -1px 0 var(--shadow)}.conflict-text{margin:0;font-weight:700}.conflict-note,.sync-note{margin:0;font-size:12px;color:var(--shadow)}.tb-link{width:26px;height:20px;flex:none;font-size:12px}.tb-fake{display:flex;gap:2px}.status-link{flex:none;text-decoration:underline}.button-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.row-doc-nav{gap:8px}.group-doc{min-width:0}.doc-panel{padding:10px 10px 14px;overflow-x:hidden}.doc{font-size:14px;line-height:1.55;min-width:0;overflow-wrap:break-word}.doc>:first-child{margin-top:0}.doc h1,.doc h2,.doc h3,.doc h4{scroll-margin-top:8px;line-height:1.3}.doc h1{font-size:1.5em;margin:0 0 12px;padding-bottom:6px;border-bottom:2px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow)}.doc h2{font-size:1.2em;margin:22px 0 8px;padding:3px 6px;color:var(--white);background:linear-gradient(to right,var(--title-a),var(--title-b));text-shadow:1px 1px 0 rgb(0 0 0 / 35%)}.doc h3{font-size:1.05em;margin:18px 0 6px}.doc h4{font-size:1em;margin:14px 0 4px}.doc p{margin:0 0 10px}.doc ul,.doc ol{margin:0 0 10px;padding-left:22px}.doc li{margin-bottom:4px}.doc li>ul,.doc li>ol{margin-top:4px}.doc a{color:var(--link)}.doc a:visited{color:var(--link-visited)}.doc code{font-family:var(--mono);font-size:.95em;background:var(--face);padding:0 3px}.doc pre{margin:0 0 12px;padding:6px 8px;background:var(--face-light);border:2px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow);overflow-x:auto}.doc pre code{background:none;padding:0;font-size:12px;line-height:1.4;white-space:pre}.doc blockquote{margin:0 0 12px;padding:8px 10px;background:var(--face);border:1px solid var(--shadow);border-left:4px solid var(--title-a)}.doc blockquote>:last-child{margin-bottom:0}.doc hr{border:none;border-top:1px solid var(--shadow);border-bottom:1px solid var(--white);margin:16px 0}.doc-table{overflow-x:auto;margin:0 0 12px;border:2px solid;border-color:var(--shadow) var(--white) var(--white) var(--shadow)}.doc-table table{width:100%;border-collapse:collapse;background:var(--white);font-size:13px}.doc-table th{background:var(--face);border:2px solid;border-color:var(--white) var(--shadow) var(--shadow) var(--white);padding:3px 6px;text-align:left;font-weight:400;white-space:nowrap}.doc-table td{padding:4px 6px;border-bottom:1px solid #ececec;vertical-align:top}.doc-table tr:last-child td{border-bottom:none}.doc-table .align-right{text-align:right}.doc-table .align-center{text-align:center}@media(min-width:45rem){body{padding:24px 16px;font-size:12px}.window{min-height:0;max-width:60rem;margin:0 auto;box-shadow:inset 1px 1px 0 var(--face-light),inset -1px -1px 0 var(--shadow),2px 2px 6px #00000059}.window-body{padding:10px;gap:12px;overflow-y:visible}.status-bar{flex-wrap:nowrap}.status-field:first-child{flex:1}.title-bar-text,.field-label,.total-label,.status-field{font-size:12px}button,.button-link,input[type=text],input[type=number],select{font-size:12px;min-height:23px;padding:2px 6px}button,.button-link{padding:2px 12px}button:active:not(:disabled){padding:3px 11px 1px 13px}.row-buttons>button,.row-buttons>.button-link{flex:0 0 auto;min-width:6rem}.row-file{justify-content:flex-end}.row-recipe>#recipe-select{flex:0 1 22rem}.row-recipe>#currency{flex:0 0 5rem}.add-form{flex-direction:row;align-items:flex-end;gap:8px}.add-form>.field-name{flex:1 1 10rem}.add-form>.field-row{flex:3 1 26rem}.field-mode{flex:0 0 7rem}.field-price{flex:1.6 1 0}.add-form>button{min-height:23px}.row-buttons-quiet>button{min-height:19px;padding:0 10px;min-width:5rem}.row-recipe-actions{display:grid;grid-template-columns:repeat(4,7.5rem);gap:6px}.row-recipe-actions>button{min-width:0}.row-recipe-actions:not(.row-buttons-quiet)>button{grid-column:span 2}.row-save>.save-button{flex:0 0 auto;min-width:12rem}.clear-button{width:23px}.form-notice .clear-button{width:18px;min-height:18px}.follow-choice{min-height:20px;padding:1px 8px;font-size:11px}.ingredients tbody tr.editing-follow td{padding-top:0}.list-panel{margin:0 -4px -4px;max-height:26rem;overflow-y:auto}.ingredients{table-layout:auto}.ingredients thead{display:table-header-group;position:sticky;top:0;z-index:1}.ingredients thead th.num{text-align:right}.ingredients thead th{background:var(--face);border:2px solid;border-color:var(--white) var(--shadow) var(--shadow) var(--white);padding:3px 6px;text-align:left;font-weight:400;white-space:nowrap}.ingredients tbody tr{display:table-row;padding:0;border-bottom:none}.ingredients tbody td{display:table-cell;padding:3px 6px;vertical-align:middle;border-bottom:1px solid #ececec}.ingredients tbody td[data-label]:before{content:none}.num{text-align:right;font-variant-numeric:tabular-nums}.ingredients td.cell-meta{display:table-cell;margin:0}.cell-actions{display:table-cell!important;width:1%;white-space:nowrap;text-align:right;margin:0}.cell-actions button{padding:1px 8px;min-height:20px}.ingredients tr.editing .cell-cost{display:table-cell;color:var(--disabled)}.field-row{flex-direction:row;gap:8px}.pair{gap:4px}.pair select{flex:0 0 4.5rem}.totals{align-items:flex-end;gap:12px}.total-block{flex:0 1 12rem}.total-highlight{margin-left:auto}#yield-amount{max-width:5rem}.doc-panel{max-height:none;overflow-y:visible;padding:14px 18px 18px}.doc{font-size:13px;max-width:46rem;margin:0 auto}.tb-link{width:18px;height:16px}}
