:root{
    --bg:#16181D; --panel:#1D2026; --panel2:#222630; --cell:#22252D; --cellhover:#2A2E38;
    --line:#2E323B; --ink:#E9E7E0; --mut:#8D93A0; --accent:#E3A23C; --accent-ink:#1A1508;
    --c-infra:#5FA8D3; --c-station:#D96A4A; --c-utensil:#E0C060; --c-machine:#B58BDB;
    --c-ingredient:#82C06B; --warn:#E06060; --ok:#6FBF8F;
    --mono:"Cascadia Code",Consolas,"Roboto Mono",monospace;
    --ui:"Segoe UI Variable Text","Segoe UI",system-ui,sans-serif;
  }
  *{box-sizing:border-box}
  html,body{height:100%}
  body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.45 var(--ui);overflow:hidden}
  button{font:inherit;color:inherit;background:var(--panel2);border:1px solid var(--line);
    border-radius:4px;padding:4px 10px;cursor:pointer}
  button:hover{border-color:var(--mut)}
  button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}
  button.tool.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
  input[type=text],input[type=number],select,textarea{background:var(--bg);border:1px solid var(--line);
    color:var(--ink);border-radius:4px;padding:4px 7px;font:inherit}
  input[type=number]{width:64px;font-family:var(--mono)}
  label{color:var(--mut)}
  #app{display:grid;grid-template-rows:auto 1fr auto;height:100%}

  /* ---------- header ---------- */
  #hdr{display:flex;align-items:center;gap:14px;padding:8px 14px;background:var(--panel);
    border-bottom:1px solid var(--line);flex-wrap:wrap}
  #wordmark{font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:-.5px;white-space:nowrap}
  #wordmark b{color:var(--accent)}
  #wordmark small{color:var(--mut);font-weight:400;margin-left:8px;letter-spacing:0}
  #hdr .grp{display:flex;align-items:center;gap:6px}
  #hdr .sep{width:1px;height:22px;background:var(--line)}
  #lvlname{width:180px}

  /* ---------- main ---------- */
  #main{display:grid;grid-template-columns:250px 1fr 300px;min-height:0}
  .pane{background:var(--panel);border-right:1px solid var(--line);display:flex;
    flex-direction:column;min-height:0}
  #inspector{border-right:none;border-left:1px solid var(--line)}

  /* palette */
  #tabs{display:flex;border-bottom:1px solid var(--line)}
  #tabs button{flex:1;border:none;border-radius:0;background:none;padding:7px 2px;font-size:12px;color:var(--mut)}
  #tabs button.on{color:var(--ink);box-shadow:inset 0 -2px var(--accent)}
  #search{margin:8px;padding:5px 8px}
  #palette{overflow-y:auto;flex:1;padding:0 8px 8px}
  .pitem{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:4px;cursor:pointer;
    border:1px solid transparent}
  .pitem:hover{background:var(--panel2)}
  .pitem.on{border-color:var(--accent);background:var(--panel2)}
  .dot{width:8px;height:8px;border-radius:2px;flex:none}
  .pitem .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
  .pitem .w2{font-family:var(--mono);font-size:10px;color:var(--mut)}

  /* grid */
  #gridwrap{overflow:auto;background:var(--bg);position:relative}
  #gridpad{padding:18px}
  table#grid{border-collapse:collapse;font-family:var(--mono)}
  #grid th{color:var(--mut);font-weight:400;font-size:10px;padding:2px 4px}
  #grid td{border:1px solid var(--line);width:58px;height:58px;min-width:58px;vertical-align:top;
    background:var(--cell);cursor:crosshair;padding:1px}
  #grid td:hover{background:var(--cellhover)}
  #grid td.covered{background:repeating-linear-gradient(45deg,var(--cell),var(--cell) 4px,#1B1E24 4px,#1B1E24 8px)}
  #grid td.err{outline:2px solid var(--warn);outline-offset:-2px}
  #grid td.sel{outline:2px solid var(--accent);outline-offset:-2px}
  .chip{display:block;font-size:9.5px;line-height:1.25;padding:1px 3px 1px 5px;margin-bottom:1px;border-radius:2px;
    background:var(--panel2);border-left:3px solid var(--mut);white-space:nowrap;overflow:hidden;
    text-overflow:ellipsis;max-width:52px;font-family:var(--ui)}
  .chip.ghost{opacity:.45;border-left-style:dotted}

  /* inspector */
  #inspector{overflow-y:auto;padding:12px;gap:12px}
  #inspector h3{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--mut)}
  .card{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:10px;margin-bottom:12px}
  .frow{display:flex;align-items:center;gap:8px;margin:6px 0;flex-wrap:wrap}
  .frow label{min-width:86px;font-size:12px}
  .rotbtns button{padding:2px 8px;font-family:var(--mono)}
  .rotbtns button.on{background:var(--accent);color:var(--accent-ink)}
  .mini{font-family:var(--mono);font-size:11px;color:var(--mut);word-break:break-all}
  #recipesearch{width:100%;margin-bottom:6px}
  .ritem{display:flex;align-items:center;gap:6px;padding:2px 0;font-size:12.5px}
  .ritem input[type=number]{width:56px;padding:2px 4px}
  .ritem .nm{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ritem.mo .nm{color:var(--mut)}
  #recipelist{max-height:320px;overflow-y:auto;border:1px solid var(--line);border-radius:4px;padding:4px 8px;background:var(--bg)}
  .bulk{display:flex;gap:6px;margin:6px 0}
  .bulk button{font-size:11px;padding:2px 8px}

  /* footer */
  #ftr{display:flex;gap:18px;align-items:center;padding:5px 14px;background:var(--panel);
    border-top:1px solid var(--line);font-size:12px;color:var(--mut);font-family:var(--mono)}
  #warnings{color:var(--warn)}
  #okmsg{color:var(--ok)}

  /* dialog */
  dialog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;
    width:min(680px,90vw);padding:16px}
  dialog::backdrop{background:#0009}
  dialog textarea{width:100%;height:300px;font-family:var(--mono);font-size:11.5px;white-space:pre;
    overflow:auto}
  dialog .frow{justify-content:flex-end}
  @media (prefers-reduced-motion: no-preference){
    .pitem,button,.chip{transition:background .12s,border-color .12s}
  }
