/* ================================================================================================
   VENDOR PORTAL — THE TICKET (Kyle, 2026-09-07: "Go with option 3, the ticket").

   One run reads like the work ticket on the press: a band with the number, status and due date;
   the proof beside the spec; the orders as one size grid with sizes ACROSS; the documents as tiles
   at the foot. Phone first: below 760px the grid becomes one card per order and the two actions
   sit in a bar that stays at the bottom.

   Every color is a token from portal.css. The portal is dark throughout (index.html pins
   data-theme="dark"), so the light values there are never used here.
   ================================================================================================ */

.vh{font-family:var(--display);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 8px;font-weight:500}
.lnk{background:none;border:0;padding:0;font:inherit;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* ---- the list of runs: plain, sorted ---- */
.vlist{display:flex;flex-direction:column;gap:8px}
.vrun{display:grid;grid-template-columns:1fr auto;gap:2px 14px;width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit;
      background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.vrun:hover{border-color:var(--ink-3)}
.vrun .n{font-family:var(--display);font-size:18px;letter-spacing:.04em}
.vrun .d{font-size:13px;color:var(--ink-2);grid-column:1}
.vrun .m{font-size:12.5px;color:var(--ink-3);grid-column:1;font-variant-numeric:tabular-nums}
.vrun .side{grid-column:2;grid-row:1/4;display:flex;flex-direction:column;align-items:flex-end;gap:4px;justify-content:center}
.vrun .side .due{font-family:var(--display);font-size:16px;letter-spacing:.03em;font-variant-numeric:tabular-nums}
.vrun .side .due.soon{color:var(--warn)}
.chip{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap;line-height:1.6}
.chip.warm{background:rgba(222,128,85,.16);color:var(--warn)}
.chip.good{background:rgba(127,176,140,.16);color:var(--good)}
.chip.blue{background:rgba(143,166,192,.16);color:var(--accent)}

/* ---- the ticket ---- */
.ticket{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.t-band{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;padding:16px 20px;background:var(--surface-2);border-bottom:1px solid var(--line)}
.t-band .pp{font-family:var(--display);font-size:32px;letter-spacing:.05em;line-height:1;font-variant-numeric:tabular-nums}
.t-band .pp small{display:block;font-size:11px;letter-spacing:.2em;color:var(--ink-3);margin-bottom:2px}
.t-band .st{display:flex;flex-direction:column;gap:8px;min-width:0}
.t-band .chips{display:flex;gap:6px;flex-wrap:wrap}
.t-band .due{text-align:right}
.t-band .due b{font-family:var(--display);font-size:22px;display:block;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.stepper{display:flex;align-items:center;gap:0}
.stepper span{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.stepper span i{width:10px;height:10px;border-radius:50%;background:var(--line);display:inline-block;flex:none}
.stepper span.done{color:var(--ink-2)}.stepper span.done i{background:var(--good)}
.stepper span.now{color:var(--ink);font-weight:600}.stepper span.now i{background:var(--warn);box-shadow:0 0 0 3px rgba(222,128,85,.25)}
.stepper hr{flex:1;border:0;border-top:1px solid var(--line);margin:0 8px;min-width:10px}
.t-msg .msg{margin:8px 20px 0}

.t-spec{display:grid;grid-template-columns:170px 1fr;gap:18px;padding:18px 20px;border-bottom:1px solid var(--line)}
.vproof{aspect-ratio:3/4;border:1px solid var(--line);border-radius:8px;background:linear-gradient(160deg,var(--surface-2),var(--bg));display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;color:var(--ink-3);font-size:12px;cursor:pointer;font:inherit;padding:10px;text-align:center}
.vproof b{font-family:var(--display);color:var(--accent);letter-spacing:.1em;font-size:12px}
.vproof .art{width:70%;height:38%;border:1px dashed var(--line);border-radius:6px}
.vproof.none{cursor:default}
.spec{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 18px;align-content:start}
.spec .f span{display:block;font-size:14px;margin-top:2px;overflow-wrap:anywhere}
.spec .wide{grid-column:1/-1}
.spec .mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;letter-spacing:.02em}
.spec .act{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.spec .act .btn{width:auto;min-height:var(--tap)}

.t-orders{padding:14px 20px 6px}
.t-orders .vh{display:block}
.vtblwrap{overflow-x:auto}
.vtbl{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.vtbl th{font-family:var(--display);font-weight:500;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);text-align:left;padding:8px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.vtbl td{padding:10px 8px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.vtbl .vsz{text-align:center;min-width:44px}
.vtbl .r{text-align:right}
.vtbl .o b{display:block;font-family:var(--display);font-size:15px;letter-spacing:.03em}
.vtbl .o span{font-size:12px;color:var(--ink-2)}
.vtbl .fin{font-size:12px;color:var(--ink-2);max-width:200px}
.vtbl .inp{min-width:140px;padding:6px 8px;font-size:12.5px;width:auto}
.vtbl .btn{width:auto;min-height:36px;padding:6px 10px;font-size:11.5px}
.vtbl tr.sub td{padding:0 8px 12px;border-bottom:1px solid var(--line-soft);background:var(--surface-2)}
.vtbl tr.sub td .in{padding:12px 0 0}
.shipped-of{font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.shipped-of.all{color:var(--good);font-weight:600}
.vships{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink-2)}
.vships li{padding-left:12px;border-left:3px solid var(--good)}
.vship{margin-top:6px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.vship-h{font-weight:700;font-size:14px;margin-bottom:10px}
.vsz-in{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin-bottom:10px}
.vsz-in .field{margin:0}
.vsz-in .field span em{font-style:normal;font-weight:400;color:var(--ink-3);text-transform:none;letter-spacing:0}
.vsz-in .inp{text-align:right;font-variant-numeric:tabular-nums}
.vrow3{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.vrow3 .field{margin:0}
.vship .btn-row{margin-top:10px}
.line-msg .msg{margin-top:8px}

.t-docs{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;padding:16px 20px 20px;border-top:1px solid var(--line)}
.vtile{border:1px solid var(--line);border-radius:10px;padding:14px 12px;background:var(--surface-2);text-align:center;cursor:pointer;font:inherit;color:inherit;min-height:var(--tap)}
.vtile:hover{border-color:var(--accent)}
.vtile i{display:block;width:26px;height:32px;margin:0 auto 8px;border:1.5px solid var(--accent);border-radius:4px;position:relative}
.vtile i:after{content:"";position:absolute;left:5px;right:5px;top:8px;height:1.5px;background:var(--accent);box-shadow:0 5px 0 var(--accent),0 10px 0 var(--accent)}
.vtile b{display:block;font-size:12.5px;font-weight:600}
.vtile span{font-size:11px;color:var(--ink-3)}
.t-docs .none{grid-column:1/-1;margin:0;font-size:14px;color:var(--ink-2)}
.t-docs-msg .msg{margin:0 20px 16px}
.t-blanks{padding:0 20px 16px}
.t-blanks .vtbl{font-size:12.5px}
.sizes{display:flex;flex-wrap:wrap;gap:4px}
.sizes .sz{font-size:11px;background:var(--surface-2);border-radius:5px;padding:3px 6px;color:var(--ink-2)}
.sizes .sz b{font-size:11px;color:var(--ink);margin-right:3px}

/* ---- phone: one card per order and the bar at the bottom ---- */
.vcards{display:none}
.p-bar{display:none}
@media (max-width:760px){
  .t-band{grid-template-columns:1fr auto;gap:10px 14px}
  .t-band .st{grid-column:1/-1}
  .t-band .pp{font-size:26px}
  .t-band .due b{font-size:18px}
  .stepper span{font-size:0}
  .stepper span i{width:100%;height:5px;border-radius:3px}
  .stepper span{flex:1}
  .stepper hr{display:none}
  .stepper{gap:4px}
  .t-spec{grid-template-columns:1fr}
  .vproof{max-width:200px;margin:0 auto}
  .spec{grid-template-columns:1fr 1fr}
  .t-orders .vtblwrap{display:none}
  .vcards{display:flex;flex-direction:column;gap:8px}
  .vcard{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px}
  .vcard .n{font-family:var(--display);font-size:16px;letter-spacing:.03em;display:flex;align-items:baseline;gap:8px}
  .vcard .n .shipped-of{margin-left:auto}
  .vcard .s{font-size:12.5px;color:var(--ink-2);margin:2px 0 8px}
  .vcard .row{display:flex;gap:8px;align-items:flex-end;margin-top:10px}
  .vcard .row .field{margin:0;flex:1}
  .vcard .row .btn{width:auto;min-height:var(--tap)}
  .vcard .btn-row{margin-top:10px}
  .vcard .vships{margin-top:10px}
  .t-docs{grid-template-columns:1fr 1fr}
  main{padding-bottom:84px}
  .p-bar{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 12px;background:var(--surface);border-top:1px solid var(--line);z-index:5}
  .p-bar .btn{min-height:var(--tap)}
  .p-bar .btn:only-child{grid-column:1/-1}
}
