/* Scoped styles: import once; no reset or changes to the game's existing DOM. */
.zfui { --ink:#f2f4e7; --muted:#a3b2a8; --surface:#172521; --line:#384b42; --lime:#d1ed78; font:14px/1.45 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; color:var(--ink); position:relative; z-index:60; }
.zfui [hidden] { display:none !important; }
.zfui *, .zfui *::before, .zfui *::after { box-sizing:border-box; }
.zfui button,.zfui select { font:inherit; color:inherit; }
.zfui button { cursor:pointer; border:1px solid var(--line); background:#20332b; border-radius:9px; }
.zfui button:hover:not(:disabled) { border-color:var(--lime); filter:brightness(1.08); }
.zfui button:disabled { cursor:default; opacity:.45; }
.zfui button:focus-visible,.zfui select:focus-visible,.zfui [tabindex]:focus-visible { outline:3px solid #e9ffb4; outline-offset:3px; }
.zfui h2,.zfui h3,.zfui p { margin:0; }
.zfui .is-goo { --item-color:#b8f35a; }
.zfui .is-crunch { --item-color:#ffc273; }
.zfui .is-spice { --item-color:#bda0ff; }
.zfui .is-meal { --item-color:#f1dfab; }
.zfui-eyebrow { font-size:10px; letter-spacing:.14em; font-weight:800; color:var(--muted); }
.zfui-hud { position:fixed; left:20px; top:20px; padding:13px 15px 9px; width:276px; background:#13241eef; border:1px solid #506247; border-radius:14px; box-shadow:0 5px 24px #0003; backdrop-filter:blur(8px); }
.zfui-hud .zfui-eyebrow { display:flex; justify-content:space-between; }
.zfui-hud .zfui-eyebrow span { letter-spacing:0; font-weight:500; }
.zfui-counters { display:flex; justify-content:space-between; margin:8px 0; }
.zfui-counter { display:flex; align-items:center; gap:7px; position:relative; }
.zfui-glyph { color:var(--item-color); font-size:25px; text-shadow:0 0 14px color-mix(in srgb,var(--item-color),transparent 50%); }
.zfui-counter b { display:block; font-size:22px; line-height:1; font-variant-numeric:tabular-nums; }
.zfui-counter small { font-size:10px; color:var(--muted); }
.zfui-counter small { display:block; white-space:nowrap; }
.zfui-counter i { position:absolute; top:-3px; right:-10px; color:#edd37b; font-size:10px; font-style:normal; }
.zfui .zfui-hud-link { width:100%; padding:6px 0 0; border:0; border-top:1px solid #425341; border-radius:0; background:transparent; font-size:11px; color:var(--muted); text-align:left; }
.zfui-hud-link span { float:right; }
.zfui-book-button { position:fixed; top:145px; left:auto; right:20px; padding:10px 17px; box-shadow:0 4px 20px #0003; }
.zfui-backdrop { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; padding:20px; background:#06120ee6; backdrop-filter:blur(7px); }
.zfui-panel { width:min(1180px,100%); max-height:calc(100dvh - 40px); display:flex; flex-direction:column; background:var(--surface); border:1px solid #53664e; border-radius:22px; overflow:hidden; box-shadow:0 20px 80px #0008; }
.zfui-header { padding:22px 26px 17px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--line); background:linear-gradient(120deg,#263b2e,#172521); }
.zfui-header h2 { font-size:29px; font-weight:700; letter-spacing:-.03em; margin-top:2px; }
.zfui .zfui-close { background:#101e18; width:44px; height:44px; font-size:29px; line-height:1; }
.zfui-body { padding:20px 24px 24px; overflow:auto; overscroll-behavior:contain; min-height:0; }
.zfui-footer { border-top:1px solid var(--line); padding:12px 24px; font-size:11px; color:var(--muted); }
.zfui-tabs { display:flex; align-items:center; flex-wrap:wrap; gap:7px; margin-bottom:19px; }
.zfui-tabs button { padding:9px 13px; font-size:12px; }
.zfui-tabs .is-active { border-color:var(--lime); color:var(--lime); background:#33452a; }
.zfui-tabs button:last-child { margin-left:auto; }
.zfui-storage-layout { display:grid; grid-template-columns:minmax(0,1fr) 210px; gap:20px; align-items:start; }
.zfui-grids { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.zfui-container { min-width:0; }
.zfui-container > header { display:flex; align-items:center; gap:12px; justify-content:space-between; }
.zfui-container h3 { font-size:17px; }
.zfui-container small { color:var(--muted); font-size:11px; }
.zfui-usage { width:63px; height:5px; background:#0c1712; border-radius:3px; overflow:hidden; }
.zfui-usage i { display:block; height:100%; background:var(--lime); }
.zfui-storage-hint { min-height:37px; color:var(--muted); font-size:11px; padding:6px 0 11px; }
.zfui-grid-scroll { overflow:auto; padding:3px; margin:-3px; }
.zfui-grid { --cell:42px; display:grid; grid-template-columns:repeat(var(--cols),var(--cell)); grid-template-rows:repeat(var(--rows),var(--cell)); gap:4px; width:max-content; min-width:calc(var(--cols)*var(--cell) + (var(--cols) - 1)*4px); isolation:isolate; }
.zfui .zfui-cell { width:100%; aspect-ratio:1; padding:0; border:1px solid #3c4a3e; border-radius:5px; background:#0f1a16; opacity:1; }
.zfui-cell:disabled { visibility:hidden; }
.zfui .zfui-item { position:relative; padding:0; border-radius:5px; border:1px solid color-mix(in srgb,var(--item-color),transparent 40%); background:linear-gradient(130deg,color-mix(in srgb,var(--item-color),#11241c 18%),#1b2c23); z-index:2; min-width:0; overflow:hidden; }
.zfui-item-symbol { color:var(--item-color); font-size:clamp(17px,2vw,26px); display:block; filter:drop-shadow(0 2px 5px #0007); }
.zfui-item b { position:absolute; right:4px; bottom:4px; font-size:11px; line-height:1; color:#fff; text-shadow:1px 1px #000; }
.zfui-item-lock { position:absolute; left:3px; top:1px; font-size:10px; color:#fff7b5; }
.zfui .zfui-item.is-selected { border:2px solid #faffd3; box-shadow:0 0 0 1px #d7f19a,0 0 15px #d7f19a44; }
.zfui .zfui-item.is-reserved { background:repeating-linear-gradient(45deg,#4b4938,#4b4938 4px,#242b23 4px,#242b23 9px); }
.zfui-item-life { position:absolute; left:2px; bottom:2px; width:40%; height:2px; border-radius:2px; background:#c3d390; }
.zfui-item-life.is-urgent { background:#ffad74; width:17%; }
.zfui-item-detail { background:#101e18; border:1px solid var(--line); border-radius:13px; padding:17px; position:sticky; top:0; }
.zfui-detail-symbol { font-size:44px; line-height:1.3; color:var(--item-color,var(--lime)); }
.zfui-item-detail h3 { font-size:20px; margin:5px 0 9px; }
.zfui-item-detail p { font-size:12px; color:var(--muted); margin:9px 0 13px; }
.zfui-shelf-life { padding:8px 10px; background:#2a3d26; border-radius:7px; font-size:12px; color:#d9eea8; margin-top:12px; }
.zfui-shelf-life.is-urgent,.zfui-warning { color:#ffbd90 !important; }
.zfui-legend { font-size:11px; line-height:2; color:var(--muted); margin-top:12px; }
.zfui-legend i { display:inline-block; width:15px; height:3px; background:#ffad74; vertical-align:middle; margin-right:4px; }
.zfui .zfui-primary { padding:11px 14px; background:var(--lime); color:#1a2817; font-weight:750; border:1px solid var(--lime); font-size:12px; min-height:42px; }
.zfui .zfui-primary:disabled { background:#32452d; color:#a7b398; border-color:#4c6044; opacity:1; }
.zfui-item-detail .zfui-primary,.zfui-item-detail .zfui-secondary { width:100%; }
.zfui .zfui-secondary { font-size:11px; background:transparent; padding:8px; margin-top:8px; }
.zfui-menu-intro { display:flex; gap:20px; align-items:center; justify-content:space-between; margin-bottom:19px; }
.zfui-menu-intro > p { color:var(--muted); font-size:13px; max-width:310px; }
.zfui-menu-intro > div:first-child { color:var(--muted); font-size:12px; max-width:360px; }
.zfui-tray-note { color:#dbe5bd; font-size:11px; margin-top:8px !important; }
.zfui-serving { display:flex; gap:8px; }
.zfui-serving button { padding:9px 13px; text-align:left; min-width:170px; }
.zfui-serving b,.zfui-serving small { display:block; }
.zfui-serving b { font-size:12px; }
.zfui-serving small { font-size:10px; color:var(--muted); }
.zfui-serving button.is-active { background:#35432b; border-color:var(--lime); }
.zfui-serving button.is-active b { color:var(--lime); }
.zfui-recipes { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.zfui-recipe { padding:17px; border:1px solid var(--line); border-radius:13px; background:#203229; }
.zfui-recipe > header { display:flex; align-items:center; gap:12px; }
.zfui-recipe-icon { color:var(--item-color); font-size:27px; width:40px; height:40px; background:#101e18; border-radius:10px; display:grid; place-items:center; flex-shrink:0; }
.zfui-recipe h3 { font-size:16px; }
.zfui-recipe header p { color:var(--muted); font-size:11px; }
.zfui-recipe-state { color:#bbd38a; font-size:10px; margin-left:auto; text-align:right; width:90px; }
.zfui-recipe.is-locked { background:#1a2821; }
.zfui-recipe.is-locked .zfui-recipe-state { color:var(--muted); }
.zfui-composition { display:flex; flex-wrap:wrap; gap:6px; margin:13px 0; }
.zfui-composition > span { padding:4px 8px; background:#132119; border:1px solid #3b5140; color:var(--item-color); border-radius:6px; font-size:11px; }
.zfui-composition > span small { display:block; color:#ffb590; font-size:10px; }
.zfui-composition .is-missing { border-color:#94654a; }
.zfui-effects { display:flex; gap:5px 10px; flex-wrap:wrap; align-items:center; font-size:12px; color:#e3eacb; min-height:38px; }
.zfui-effects b { margin-left:auto; padding:3px 6px; border:1px solid #51644b; border-radius:5px; font-size:10px; white-space:nowrap; }
.zfui-planning { font-size:10px; color:var(--muted); margin-top:9px !important; }
.zfui-recommended { color:#c5dca4; font-size:10px; margin-top:8px !important; }
.zfui-steps { display:flex; gap:6px; list-style:none; padding:12px 0 0; margin:12px 0 14px; border-top:1px solid #415141; counter-reset:step; }
.zfui-steps li { counter-increment:step; flex:1; font-size:10px; color:#c2cfc0; }
.zfui-steps li::before { content:counter(step) ". "; color:var(--lime); }
.zfui-steps li small { display:block; font-size:9px; color:var(--muted); }
.zfui-recipe > .zfui-primary { width:100%; }
.zfui-experiment { margin-top:19px; padding:18px; border:1px dashed #718160; border-radius:13px; background:#1b2b22; }
.zfui-experiment h3 { font-size:19px; margin-top:4px; }
.zfui-experiment p { font-size:11px; color:var(--muted); margin-top:4px; }
.zfui-experiment-controls { display:flex; flex-wrap:wrap; gap:10px; margin:15px 0; }
.zfui-stepper { display:flex; align-items:center; gap:7px; color:var(--item-color); padding:5px 7px; border:1px solid var(--line); border-radius:8px; }
.zfui-stepper > span { font-size:12px; margin-right:4px; }
.zfui-stepper button { width:30px; height:30px; padding:0; font-size:18px; }
.zfui-stepper b { width:12px; text-align:center; font-size:13px; }
.zfui-experiment-controls label { display:flex; gap:8px; align-items:center; margin-left:auto; font-size:11px; color:var(--muted); }
.zfui-experiment-controls select { padding:9px; border:1px solid #506347; background:#112018; border-radius:7px; }
.zfui-experiment-result { display:flex; align-items:center; justify-content:space-between; gap:15px; flex-wrap:wrap; }
.zfui-experiment-result p { color:#dee8c4; max-width:700px; }
.zfui-experiment-result .zfui-experiment-steps { width:100%; font-size:10px; color:var(--muted); }
.zfui-reservation { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:11px 24px; background:#3e4225; border-bottom:1px solid #6e784a; font-size:11px; }
.zfui-reservation b { margin-right:9px; color:#edfab0; }
.zfui-reservation small { display:block; color:#d1d5b3; font-size:10px; }
.zfui-reservation button { padding:8px 12px; background:#2d3420; white-space:nowrap; font-size:11px; }
.zfui-toast { position:fixed; left:50%; bottom:22px; transform:translateX(-50%); width:max-content; max-width:calc(100% - 32px); background:#dae99b; color:#1c2c1b; padding:12px 19px; border-radius:10px; box-shadow:0 6px 30px #0006; font-size:12px; z-index:100; }
.zfui-toast.is-error { background:#eabda1; color:#372218; }
@media (min-width:1400px) { .zfui-panel { width:1240px; } }
@media (max-width:1050px) {
  .zfui-storage-layout { grid-template-columns:1fr; }
  .zfui-item-detail { position:static; display:block; }
  .zfui-item-detail .zfui-primary,.zfui-item-detail .zfui-secondary { width:auto; margin-right:9px; }
  .zfui-detail-symbol { float:left; margin-right:17px; }
  .zfui-item-detail p { margin:7px 0; }
}
@media (max-width:640px) {
  .zfui-hud { top:12px; left:12px; width:256px; }
  .zfui-book-button { top:135px; left:12px; right:auto; }
  .zfui-backdrop { padding:8px; }
  .zfui-panel { border-radius:16px; max-height:calc(100dvh - 16px); }
  .zfui-header { padding:15px 16px 13px; }
  .zfui-header h2 { font-size:25px; }
  .zfui-body { padding:14px 14px 18px; }
  .zfui-footer { padding:9px 15px; font-size:10px; }
  .zfui-grids { grid-template-columns:1fr; gap:23px; }
  .zfui-grid { --cell:32px; }
  .zfui-storage-hint { min-height:0; }
  .zfui-tabs { gap:5px; margin-bottom:14px; }
  .zfui-tabs button { padding:8px 10px; font-size:11px; min-height:38px; }
  .zfui-tabs button:last-child { margin-left:0; }
  .zfui-menu-intro { display:block; }
  .zfui-menu-intro > p { font-size:12px; margin-bottom:12px; max-width:none; }
  .zfui-serving { gap:6px; }
  .zfui-serving button { min-width:0; flex:1; padding:9px; }
  .zfui-serving small { font-size:9px; }
  .zfui-recipes { grid-template-columns:1fr; gap:12px; }
  .zfui-recipe { padding:14px; }
  .zfui-recipe h3 { font-size:15px; }
  .zfui-recipe-state { font-size:9px; width:75px; }
  .zfui-experiment { padding:14px; }
  .zfui-experiment-controls { gap:6px; }
  .zfui-stepper { flex:1 1 100%; justify-content:space-between; }
  .zfui-stepper button { width:38px; height:36px; }
  .zfui-stepper > span { flex:1; }
  .zfui-experiment-controls label { margin-left:0; width:100%; justify-content:space-between; }
  .zfui-experiment-result .zfui-primary { width:100%; }
  .zfui-reservation { padding:10px 15px; align-items:start; flex-direction:column; gap:7px; }
  .zfui-reservation b { display:block; }
}
@media (prefers-reduced-motion:reduce) { .zfui * { scroll-behavior:auto; } }
