:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#2b241c;background:#e7dfcf;--text: #2b241c;--muted: #70634f;--surface: #fff9ea;--surface-soft: #f4ead5;--surface-raised: #fffdf4;--line: #c9b994;--line-soft: #ded0ad;--forest: #2f4f35;--forest-dark: #213925;--forest-soft: #dce6d1;--moss-dark: #45612c;--clay: #9a4f32;--clay-dark: #713821;--clay-soft: #f0d7c4;--iron: #4a514b;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{border:0;border-radius:6px;background:var(--forest);color:#fff;cursor:pointer;min-height:34px;padding:0 12px}.top-actions{display:flex;gap:8px}.upload-button{align-items:center;background:var(--forest);border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;min-height:34px;padding:0 12px}.upload-button.wide{justify-content:center;width:100%}.upload-button input{display:none}.upload-button:hover,button:hover{background:var(--forest-dark)}button:disabled{cursor:not-allowed;opacity:.5}input,select{width:100%;min-width:96px;min-height:34px;border:1px solid var(--line);border-radius:6px;background:var(--surface-raised);color:var(--text);padding:6px 8px}.shell{width:min(1580px,calc(100vw - 32px));margin:0 auto;padding:24px 0 40px}.app-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start}.sidebar{position:sticky;top:16px;display:flex;flex-direction:column;gap:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:14px}.sidebar h1{font-size:20px}.sidebar p{color:var(--muted);margin-top:6px}.content{min-width:0}.topbar{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:20px}h1,h2,p{margin:0}h1{font-size:28px;line-height:1.15}h2{font-size:16px}.topbar p{color:var(--muted);margin-top:6px}.ghost{background:var(--forest-soft);color:var(--forest-dark)}.ghost:hover{background:#c8d8b9}.save-list{display:flex;flex-direction:column;gap:6px}.save-row{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;border-radius:8px;background:var(--surface-soft);padding:6px}.save-select{display:flex;flex-direction:column;align-items:start;justify-content:center;min-width:0;min-height:48px;background:#eee2c6;color:var(--text);text-align:left}.save-select:hover,.save-row.active .save-select{background:var(--forest);color:#fff}.save-select span{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-select small{color:var(--muted);margin-top:2px}.save-select:hover small,.save-row.active .save-select small{color:var(--forest-soft)}.save-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.icon-button,.icon-danger{min-width:0;padding:0 8px;font-size:12px}.icon-button{background:var(--forest-soft);color:var(--forest-dark)}.icon-button:hover{background:#c8d8b9}.icon-danger{background:var(--clay-soft);color:var(--clay-dark)}.icon-danger:hover{background:var(--clay);color:#fff}.reset-button{background:var(--clay-soft);color:var(--clay-dark);width:100%}.reset-button:hover{background:var(--clay);color:#fff}.recovery-shell{min-height:100vh;display:flex;align-items:center;justify-content:center}.recovery-panel{max-width:560px;padding:28px;border:1px solid var(--line);background:var(--surface);border-radius:8px}.recovery-panel h1{margin:0 0 12px}.recovery-panel p{color:var(--clay-dark);margin-bottom:18px;word-break:break-word}.error{border-left:4px solid var(--clay);background:#f8e8dc;color:var(--clay-dark);padding:12px 14px;margin-bottom:18px}.quote-card{display:grid;gap:6px;border:1px solid var(--line);border-radius:8px;background:var(--surface);margin-bottom:12px;padding:14px 16px}.quote-card p{color:var(--text);font-size:16px;font-weight:650;line-height:1.35}.quote-card span{color:var(--muted);font-size:13px}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:18px}.metric{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:16px}.metric span,.metric small{color:var(--muted)}.metric strong{display:block;font-size:28px;line-height:1.1;margin:8px 0 4px}.metric.ok strong,.pos{color:var(--moss-dark)}.metric.warn strong,.neg{color:var(--clay)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px}.tabs{display:flex;gap:4px;overflow-x:auto}.tab-section{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:8px;align-items:center;border-bottom:1px solid var(--line);padding:8px}.tab-section>span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase}.tabs button{background:transparent;color:var(--iron)}.tabs button.active{background:var(--forest);color:#fff}.tab-action{white-space:nowrap}.tab-actions{display:flex;align-items:center;justify-content:end;gap:8px}.readonly-badge{border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:12px;font-weight:700;padding:5px 8px;white-space:nowrap}.readonly-cell,.readonly-form strong{display:block;min-height:34px;padding:7px 0}.table-block{padding:14px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.section-title span{color:var(--muted);font-size:13px}.toggle-field{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.toggle-field input{width:16px;min-width:16px;min-height:16px}.table-wrap{overflow-x:auto;border:1px solid var(--line-soft);border-radius:6px}table{width:100%;border-collapse:collapse;min-width:920px}th,td{border-bottom:1px solid var(--line-soft);padding:8px;text-align:left;vertical-align:middle}th{background:var(--surface-soft);color:var(--iron);font-size:12px;font-weight:700;text-transform:uppercase}th .sort-button{background:transparent;color:inherit;border:0;border-radius:0;min-height:auto;padding:0;font-size:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit}th .sort-button:hover{background:transparent;color:var(--forest)}th .sort-button.active{color:var(--forest)}tr:last-child td{border-bottom:0}.actions{display:flex;gap:6px;min-width:152px}.danger{background:var(--clay)}.danger:hover{background:var(--clay-dark)}.editor-row,.population-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;align-items:end;margin-top:12px}.population-form{padding:14px}.population-form label span{display:block;color:var(--muted);font-size:13px;margin-bottom:5px}.summary-table{border-top:1px solid var(--line-soft)}.money-section{display:grid;gap:14px}.money-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;padding:14px 14px 0}.recipe-section{padding:14px}.recipe-toolbar{display:flex;justify-content:flex-end;margin-bottom:14px}.recipe-new{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:start}.recipe-new label{display:grid;gap:5px}.recipe-new label span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase}.recipe-grid{display:grid;grid-template-columns:1fr;gap:12px}.recipe-card{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(220px,1fr) minmax(360px,1.5fr) minmax(180px,auto);gap:14px;align-items:start;border:1px solid var(--line);border-radius:8px;background:var(--surface-raised);padding:14px}.recipe-card-head{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}.recipe-card-head small,.recipe-meta>span,.recipe-editors>span,.recipe-item-editor>span,.recipe-items>span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase}.recipe-card-head label span{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.recipe-name{border:0;background:transparent;font-size:20px;font-weight:700;min-height:30px;padding:0}.recipe-name:focus{background:var(--surface);border:1px solid var(--line);padding:4px 6px}.recipe-meta{display:grid;gap:6px}.chip-list{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid #b7c49f;border-radius:6px;background:var(--forest-soft);color:var(--forest);font-size:12px;padding:4px 8px}.chip-button{min-height:26px;width:auto}.chip-button:hover{background:var(--forest-soft);color:var(--forest-dark)}.recipe-meta em,.recipe-item-editor em{color:var(--muted);font-style:normal}.inline-editor{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px}.recipe-flow{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);gap:10px;align-items:stretch}.recipe-arrow{align-self:center;color:var(--muted);font-weight:700;text-align:center}.recipe-items{display:flex;flex-direction:column;gap:6px;padding:2px 0}.ingredient{display:flex;justify-content:space-between;gap:8px;border-radius:6px;background:var(--surface-soft);padding:7px 8px}.ingredient strong{color:var(--forest)}.recipe-items em{color:var(--muted);font-style:normal}.recipe-editors{display:grid;grid-column:1 / -1;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.recipe-card-controls{display:grid;gap:12px;align-content:start}.recipe-edit-toggle{display:grid;gap:8px}.recipe-item-editor{display:grid;gap:8px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface);padding:10px}.recipe-item-rows{display:grid;gap:6px}.recipe-item-row{display:grid;grid-template-columns:minmax(0,1fr) 96px auto;gap:6px;align-items:center}.recipe-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.recipe-delete-button{width:34px;min-width:34px;padding:0}.modal-backdrop{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:#2b241c80;padding:20px}.modal-panel{width:min(880px,100%);max-height:min(820px,calc(100vh - 40px));overflow:auto;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 18px 54px #2b241c3d;padding:16px}.modal-head,.modal-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.modal-head{margin-bottom:14px}.modal-actions{grid-column:1 / -1;justify-content:flex-end}@media(max-width:760px){.shell{width:min(100vw - 20px,1480px);padding-top:14px}.topbar{align-items:stretch;flex-direction:column}.app-layout{grid-template-columns:1fr}.sidebar{position:static}.top-actions{flex-direction:column}.summary-grid,.tab-section,.recipe-new,.recipe-card,.recipe-editors,.recipe-flow{grid-template-columns:1fr}.recipe-arrow{display:none}.recipe-item-row{grid-template-columns:1fr}}
