:root{--bg: #faf6ef;--surface: #ffffff;--brown: #4a3728;--brown-soft: #8a7560;--green: #6b7f63;--green-soft: #eef1e8;--accent: #c9a06a;--danger: #b0563a;--warn: #b98a2f;--border: #e7dcc9;--text: #2f2a24;--muted: #8a8177;--radius: 12px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.6}a{color:var(--green);text-decoration:none}h1,h2,h3{color:var(--brown);font-weight:600;margin:0 0 8px}h1{font-size:22px}h2{font-size:18px}h3{font-size:16px}button{font-family:inherit;font-size:14px;border:1px solid var(--border);background:var(--surface);color:var(--brown);border-radius:8px;padding:8px 14px;cursor:pointer;transition:all .15s}button:hover{border-color:var(--green)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--green);border-color:var(--green);color:#fff}button.primary:hover{background:#5b6f54}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.ghost{background:transparent;border-color:transparent;color:var(--green)}button.small{padding:4px 10px;font-size:13px}input,select,textarea{font-family:inherit;font-size:14px;border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:#fff;color:var(--text);width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green)}label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}.field{margin-bottom:14px}.row{display:flex;gap:12px;flex-wrap:wrap}.row>*{flex:1;min-width:140px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:16px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--brown-soft);font-weight:600;font-size:13px;white-space:nowrap}tr:hover td{background:#fdfbf6}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:12px;background:var(--green-soft);color:var(--green)}.badge.warn{background:#f7ecd7;color:var(--warn)}.badge.danger{background:#f7e3db;color:var(--danger)}.badge.muted{background:#eeeae2;color:var(--muted)}.muted{color:var(--muted);font-size:13px}.money{font-variant-numeric:tabular-nums}.money.positive{color:var(--green)}.money.negative{color:var(--danger)}.num{font-variant-numeric:tabular-nums}.toast{position:fixed;top:16px;right:16px;z-index:999;background:var(--brown);color:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 4px 16px #00000026;max-width:360px}.toast.error{background:var(--danger)}.toast.ok{background:var(--green)}.app{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--surface);border-right:1px solid var(--border);padding:16px 12px;flex-shrink:0;display:flex;flex-direction:column;gap:4px}.sidebar .logo{font-size:18px;font-weight:700;color:var(--brown);padding:8px 12px 16px}.sidebar a{display:block;padding:9px 12px;border-radius:8px;color:var(--brown);font-size:14px}.sidebar a.active{background:var(--green-soft);color:var(--green);font-weight:600}.sidebar a:hover{background:#f5f0e6}.sidebar .user{margin-top:auto;padding:12px;color:var(--muted);font-size:13px;border-top:1px solid var(--border)}.main{flex:1;padding:22px 26px;max-width:1100px}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap;gap:10px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat .label{color:var(--muted);font-size:13px}.stat .value{font-size:24px;font-weight:700;color:var(--brown)}.empty{text-align:center;color:var(--muted);padding:40px 20px}@media (max-width: 800px){.app{flex-direction:column}.sidebar{width:100%;flex-direction:row;flex-wrap:wrap;align-items:center;padding:8px;gap:4px;position:sticky;top:0;z-index:10}.sidebar .logo{padding:4px 8px;font-size:16px}.sidebar a{padding:6px 9px;font-size:13px}.sidebar .user{margin-top:0;padding:4px 8px;border-top:none}.main{padding:14px 12px}.row>*{min-width:100%}}@media print{.sidebar,.page-head button,.no-print{display:none!important}.main{max-width:none;padding:0}body{background:#fff}}.nutrition-panel{margin:18px 0;padding-top:14px;border-top:1px solid var(--border)}.nutrition-panel .row select{flex:0 1 180px}.nutrition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}.nutrient{text-align:center;padding:10px;border:1px solid var(--border);border-radius:12px;font-size:13px}.nutrient svg{width:100px;height:100px;display:block;margin:auto}.nutrient small,.nutrient details{font-size:11px;color:var(--muted)}.nutrient details{text-align:left}@media (max-width: 650px){.nutrition-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.card{overflow-x:auto}}.inventory-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}.inventory-tabs button{flex:0 0 auto}.table-scroll{overflow-x:auto}.inventory-alert-summary{align-self:center;color:var(--muted, #666);padding:8px}.inventory-tabs+.card td button{margin:3px}.operation-dialog{width:min(1120px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid #e3d7c7;border-radius:14px;color:inherit;background:#faf8f5;box-shadow:0 18px 70px #0004;overflow:hidden}.operation-dialog[open]{display:flex;flex-direction:column}.operation-dialog::backdrop{background:#231d1866}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;background:#fff;border-bottom:1px solid #e6ddd2;flex-shrink:0}.dialog-head h2{margin:0;font-size:19px}.dialog-head button{white-space:nowrap}.dialog-toolbar{padding:12px 20px;background:#fff;border-bottom:1px solid #e6ddd2;flex-shrink:0}.dialog-toolbar select{width:auto;max-width:100%;margin:0 0 10px 8px}.dialog-actions{display:flex;flex-wrap:wrap;gap:8px}.dialog-body{overflow:auto;padding:20px;overscroll-behavior:contain}.dialog-body>.card:last-child{margin-bottom:0}.more-rows{display:flex;align-items:center;gap:10px;padding-top:12px}.catalog-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px}@media (max-width:600px){.operation-dialog{width:calc(100vw - 12px);max-height:calc(100dvh - 12px)}.dialog-head,.dialog-body,.dialog-toolbar{padding:12px}.dialog-head h2{font-size:16px}}@media print{.operation-dialog[open]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;max-height:none;overflow:visible;border:0;box-shadow:none}.dialog-body{overflow:visible}.dialog-head button,.dialog-toolbar{display:none}body:has(.operation-dialog[open]) .sidebar{display:none}}.photo-name{display:flex;align-items:center;gap:10px}.photo-thumb{width:52px;height:52px;object-fit:contain;border-radius:8px;background:#f6f2ec;display:block}.photo-button{padding:0;border:0;background:transparent;flex-shrink:0}.photo-detail{max-width:240px;max-height:180px;width:auto;height:auto;object-fit:contain;border-radius:10px;display:block;margin:8px 0 16px}.photo-full{display:block;max-width:100%;max-height:75vh;object-fit:contain;margin:auto}.photo-picker{border:1px dashed #d9c9b5;border-radius:10px;padding:14px;margin-bottom:16px}.photo-picker-row{display:flex;flex-wrap:wrap;align-items:center;gap:18px}.photo-picker button{margin-right:8px}.picker-trigger{border:1px solid var(--border,#e7dcc9);background:var(--surface,#fff);color:var(--brown,#4a3728);padding:8px 10px;border-radius:6px;cursor:pointer;font-size:14px}.picker-pop .row{gap:6px;margin-bottom:0}.picker-pop select{flex:1 1 auto;min-width:0;padding:6px}.picker-item{display:block;width:100%;text-align:left;border:none;background:none;padding:7px 8px;cursor:pointer;border-radius:6px;color:inherit}.picker-item:hover{background:#f3ede2}.picker-item.selected{background:var(--brown-soft,#8a7560);color:#fff}.picker-item.selected .muted{color:#ffffffd1}@media (max-width:650px){.picker-pop{left:0;right:0}}.stale-banner{background:#fbf3e0;color:#7a5b1a;border:1px solid #e6d3a0;border-radius:8px;padding:8px 12px;margin-bottom:12px;font-size:13px}
