/* TD Industry — Mining Fleet · the Belt tab.
   What the survey scanner says is still in the rocks, sat next to what the ledger says
   the fleet is pulling out of them. The panel, tabs, tables and notes are the existing
   Mining Fleet components; what's new here is a bar for "how much of this rock is left",
   an urgency treatment for time-to-empty, and the scan strip. */

  /* A second, tighter stat row INSIDE the panel. The op's own four figures already own the
     full-width band at the top of the page; these belong to the belt, not the op. */
  .mn-belt-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
  .mn-belt-stats .stat{padding:14px 16px;background:var(--void2)}
  .mn-belt-stats .stat .v{font-size:1.24rem;margin-top:6px}
  .mn-belt-stats .stat .v small{font-size:.6rem;margin-left:4px;color:var(--slate);letter-spacing:.06em}
  .mn-belt-stats .stat .d{margin-top:6px;font-size:.62rem}

  /* Same vocabulary as the job board's .pbar, sized to sit inside a table cell. */
  .mn-barcell{display:flex;align-items:center;gap:10px;min-width:148px}
  .mn-barcell b{font-family:var(--mono);font-size:.72rem;font-weight:500;color:var(--slate);width:46px;text-align:right}
  .mn-bar{flex:1;height:6px;background:var(--void2);border:1px solid var(--line-soft);border-radius:3px;overflow:hidden}
  .mn-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-dim))}
  .mn-bar.low span{background:linear-gradient(90deg,var(--crit),#8e4356)}

  /* Urgency rides on time-to-empty rather than on the bar: a rock that's still 60% full
     but gone within the hour is the one an FC needs to see. Past a day it's not news. */
  .mn-tte.soon{color:var(--crit);font-weight:600}
  .mn-tte.far{color:var(--slate-dim)}
  .mn-idle{font-family:var(--mono);font-size:.54rem;letter-spacing:.1em;text-transform:uppercase;
    color:var(--slate-dim);border:1px solid var(--line);border-radius:3px;padding:2px 6px}

  /* Refine yield belongs on the section header it changes, not in a settings panel. */
  .mn-subrow{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:26px 0 10px}
  .mn-subrow .mn-subh{margin:0}
  .mn-yield{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-size:.6rem;
    letter-spacing:.14em;text-transform:uppercase;color:var(--slate)}
  .mn-yield .input{width:88px;padding:6px 9px;font-size:.76rem;text-align:right}
  .mn-cat{font-family:var(--mono);font-size:.54rem;letter-spacing:.1em;text-transform:uppercase;
    padding:2px 7px;border-radius:3px;border:1px solid var(--line);color:var(--slate-dim)}
  .mn-cat.r4{color:var(--blueprint);border-color:var(--blueprint-dim)}
  .mn-cat.r8{color:var(--gold);border-color:var(--gold-dim)}
  .mn-cat.r16,.mn-cat.r32,.mn-cat.r64{color:var(--crit);border-color:var(--crit)}

  /* The scan strip. Once a scan exists this is a footer, not the point of the page. */
  .mn-scan{display:flex;align-items:flex-start;gap:14px;margin-top:22px;padding-top:16px;border-top:1px solid var(--line-soft)}
  .mn-scan textarea{flex:1;min-height:52px;resize:vertical;line-height:1.5;font-size:.76rem}
  .mn-scan-side{flex:0 0 auto;display:flex;flex-direction:column;gap:8px;width:176px}
  .mn-scan-side .cbtn{width:100%}
  .mn-scan-meta{font-family:var(--mono);font-size:.6rem;line-height:1.6;color:var(--slate-dim)}

  /* First run: no scan yet, so the paste box IS the panel. */
  .mn-scan-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;
    padding:36px 24px;border:1px dashed var(--line);border-radius:var(--mn-r)}
  .mn-scan-empty svg{width:32px;height:32px;stroke:var(--slate-dim);fill:none;stroke-width:1.4;
    stroke-linecap:round;stroke-linejoin:round;opacity:.75}
  .mn-scan-empty b{font-family:var(--display);font-size:1.02rem;color:var(--slate);font-weight:600}
  .mn-scan-empty p{font-size:.85rem;color:var(--slate-dim);max-width:52ch;line-height:1.55}
  .mn-scan-empty textarea{width:100%;max-width:560px;min-height:104px;resize:vertical;
    font-size:.78rem;line-height:1.5;text-align:left}

  /* Lines the parser had to drop. Shown verbatim — a quietly short scan makes every number
     downstream quietly wrong, so this is never collapsed away. */
  .mn-scan-drop{margin-top:12px;padding:11px 14px;border:1px solid var(--gold-dim);border-radius:6px;
    background:rgba(212,175,55,.05)}
  .mn-scan-drop b{display:block;font-size:.8rem;color:var(--parchment);font-weight:500;margin-bottom:6px}
  .mn-scan-drop ul{list-style:none;display:flex;flex-direction:column;gap:3px}
  .mn-scan-drop li{font-family:var(--mono);font-size:.68rem;color:var(--slate);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mn-scan-ok{margin-top:10px;font-family:var(--mono);font-size:.66rem;color:var(--emerald)}

  /* The standing caveat about what a scan can and cannot see. */
  .mn-belt-caveat{margin-top:22px;margin-bottom:0;color:var(--slate-dim)}

  /* The fleet-chat block, shown as well as copied — some pilots want to see what they're
     about to paste, and it's the fallback when the clipboard is refused. wrap="off" keeps
     the frame from folding in half in a narrow panel. */
  .mn-share{margin-top:14px}
  .mn-share-h{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;
    color:var(--gold);margin-bottom:8px}
  .mn-share-h.ok{color:var(--emerald)}
  .mn-share textarea{width:100%;font-family:var(--mono);font-size:.74rem;line-height:1.5;
    resize:vertical;overflow-x:auto;white-space:pre;color:var(--parchment)}

  @media (max-width:1180px){ .mn-belt-stats{grid-template-columns:repeat(2,1fr)} }
  @media (max-width:720px){
    .mn-belt-stats{grid-template-columns:1fr}
    .mn-scan{flex-direction:column}
    .mn-scan-side{width:100%;flex-direction:row}
  }
