/* ============================================================
   ProjectTelemetry — Production Tracking module
   assets/production.css   ·   Dashboard + Targets + Log
   Shares the app tokens (--accent, --ink, --bd …) and echoes the
   Cost Codes dashboard so the two read as one family.
   ============================================================ */

.pr-load, .pr-empty { text-align:center; padding:48px 20px; color:var(--ink-faint); }
.pr-load i { animation:spin 1s linear infinite; margin-right:6px; }
.pr-empty i { font-size:40px; opacity:.5; }
.pr-empty h3 { margin:12px 0 4px; color:var(--ink-soft); font-size:16px; }
.pr-empty p { margin:0 auto 14px; font-size:13px; max-width:480px; line-height:1.5; }

/* ── Header ────────────────────────────────────────────────────── */
.pr-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.pr-title { font-size:19px; font-weight:800; letter-spacing:-.01em; color:var(--ink); }
.pr-sub { font-size:12.5px; color:var(--ink-faint); margin-top:2px; }
.pr-head-r { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.pr-seg { display:inline-flex; background:var(--bg2); border:1px solid var(--bd); border-radius:9px; padding:3px; gap:2px; }
.pr-seg-b { display:inline-flex; align-items:center; gap:6px; border:none; background:transparent; color:var(--ink-soft);
  font-size:12.5px; font-weight:600; padding:6px 12px; border-radius:7px; cursor:pointer; white-space:nowrap; }
.pr-seg-b:hover { color:var(--ink); }
.pr-seg-b.active { background:var(--white); color:var(--ink); box-shadow:0 1px 2px rgba(0,0,0,.10); }
.pr-seg-b i { font-size:15px; }

/* ── KPI tiles ─────────────────────────────────────────────────── */
.pr-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:14px; }
.pr-kpi { position:relative; border:1px solid var(--bd); border-radius:12px; background:var(--white); padding:14px 16px; overflow:hidden; box-shadow:var(--shadow); }
.pr-kpi-i { position:absolute; top:12px; right:12px; font-size:18px; color:var(--ink-faint); opacity:.6; }
.pr-kpi-v { font-size:26px; font-weight:800; letter-spacing:-.02em; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1.05; }
.pr-kpi-l { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); margin-top:5px; }
.pr-kpi.accent { border-color:color-mix(in srgb,var(--accent) 40%,var(--bd)); }
.pr-kpi.accent .pr-kpi-v, .pr-kpi.accent .pr-kpi-i { color:var(--accent); }
.pr-kpi.neg .pr-kpi-v, .pr-kpi.neg .pr-kpi-i { color:#DC2626; }
.pr-kpi.neg { border-color:color-mix(in srgb,#DC2626 35%,var(--bd)); }
.pr-kpi.pos .pr-kpi-v { color:#16A34A; }

/* ── Banner ────────────────────────────────────────────────────── */
.pr-banner { display:flex; align-items:center; gap:8px; font-size:12.5px; font-weight:600; padding:9px 14px; border-radius:9px; margin-bottom:14px; }
.pr-banner i { font-size:16px; }
.pr-banner.neg { background:color-mix(in srgb,#DC2626 10%,transparent); color:#B91C1C; }
.pr-banner.pos { background:color-mix(in srgb,#16A34A 11%,transparent); color:#15803D; }
.pr-banner.ok  { background:var(--accent-bg); color:var(--accent); }

/* ── Trend sparkline ───────────────────────────────────────────── */
.pr-trend { border:1px solid var(--bd); border-radius:12px; background:var(--white); padding:12px 14px 6px; margin-bottom:14px; box-shadow:var(--shadow); }
.pr-trend-hd { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:4px; }
.pr-trend-t { font-size:12.5px; font-weight:700; color:var(--ink); display:inline-flex; align-items:center; gap:6px; }
.pr-trend-t i { color:var(--accent); }
.pr-trend-meta { font-size:11.5px; color:var(--ink-faint); font-variant-numeric:tabular-nums; }
.pr-trend-seg { margin-left:auto; display:inline-flex; gap:2px; background:var(--bg2); border:1px solid var(--bd); border-radius:7px; padding:2px; }
.pr-tp { border:none; background:transparent; color:var(--ink-soft); font-size:11px; font-weight:600; padding:3px 9px; border-radius:5px; cursor:pointer; }
.pr-tp:hover { color:var(--ink); }
.pr-tp.active { background:var(--white); color:var(--ink); box-shadow:0 1px 2px rgba(0,0,0,.10); }
.pr-spark { display:block; width:100%; height:90px; overflow:visible; }
.pr-spark-area { fill:color-mix(in srgb,var(--accent) 12%,transparent); stroke:none; }
.pr-spark-line { fill:none; stroke:var(--accent); stroke-width:2; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; }

/* ── Code cards (dashboard) ────────────────────────────────────── */
.pr-list { display:flex; flex-direction:column; gap:9px; }
.pr-card { border:1px solid var(--bd); border-radius:11px; background:var(--white); padding:12px 15px; box-shadow:var(--shadow); }
.pr-card.behind { border-color:color-mix(in srgb,#DC2626 45%,var(--bd)); }
.pr-card-top { display:flex; align-items:center; gap:10px; margin-bottom:9px; }
.pr-code { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:13px; font-weight:700; color:var(--ink);
  background:var(--bg2); border-radius:6px; padding:3px 8px; white-space:nowrap; }
.pr-desc { flex:1; min-width:0; font-size:13.5px; font-weight:600; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pr-trade { font-size:11px; font-weight:600; color:var(--ink-faint); background:var(--bg2); border-radius:20px; padding:2px 8px; margin-left:6px; }
.pr-chip { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; padding:3px 9px; border-radius:20px; white-space:nowrap; }
.pr-chip.ok { background:color-mix(in srgb,#16A34A 14%,transparent); color:#15803D; }
.pr-chip.accent { background:var(--accent-bg); color:var(--accent); }
.pr-chip.neg { background:color-mix(in srgb,#DC2626 13%,transparent); color:#B91C1C; }
.pr-chip.muted { background:var(--bg2); color:var(--ink-faint); }
.pr-pf { font-size:10.5px; font-weight:700; font-variant-numeric:tabular-nums; padding:2px 8px; border-radius:20px; white-space:nowrap; }
.pr-pf.ok { background:color-mix(in srgb,#16A34A 13%,transparent); color:#15803D; }
.pr-pf.accent { background:var(--accent-bg); color:var(--accent); }
.pr-pf.neg { background:color-mix(in srgb,#DC2626 12%,transparent); color:#B91C1C; }

.pr-bars { display:flex; flex-direction:column; gap:7px; }
.pr-barrow { display:grid; grid-template-columns:56px 1fr auto; align-items:center; gap:10px; }
.pr-barlbl { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); }
.pr-bar { height:9px; background:var(--bg2); border-radius:6px; overflow:hidden; position:relative; }
.pr-bar-fill { height:100%; border-radius:6px; background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 78%,#fff),var(--accent));
  transition:width .3s ease; min-width:2px; }
.pr-bar-fill.over { background:linear-gradient(90deg,#F87171,#DC2626); }
.pr-bar-fill.prog { background:linear-gradient(90deg,#5EEAD4,#0D9488); }
.pr-barval { font-size:12px; color:var(--ink-soft); white-space:nowrap; font-variant-numeric:tabular-nums; text-align:right; }
.pr-barval b { color:var(--ink); font-weight:700; }
.pr-soft { color:var(--ink-faint); }

.pr-card-foot { margin-top:9px; padding-top:8px; border-top:1px dashed var(--bd); display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; }
.pr-metric { font-size:11.5px; color:var(--ink-soft); font-variant-numeric:tabular-nums; display:inline-flex; align-items:center; gap:4px; }
.pr-metric i { font-size:13px; color:var(--ink-faint); }
.pr-metric.pos { color:#15803D; font-weight:700; } .pr-metric.neg { color:#B91C1C; font-weight:700; }

.pr-foot { margin-top:14px; font-size:11.5px; color:var(--ink-faint); text-align:center; }

/* ── Targets / recent tables ───────────────────────────────────── */
.pr-hint { display:flex; align-items:flex-start; gap:8px; font-size:12px; color:var(--ink-soft); background:var(--bg2);
  border:1px solid var(--bd); border-radius:9px; padding:9px 12px; margin-bottom:14px; line-height:1.5; }
.pr-hint i { color:var(--accent); font-size:15px; margin-top:1px; flex-shrink:0; }
.pr-manage { border:1px solid var(--bd); border-radius:11px; overflow:hidden; box-shadow:var(--shadow); }
.pr-table { width:100%; border-collapse:collapse; font-size:13px; }
.pr-table thead th { text-align:left; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
  color:var(--ink-faint); background:var(--bg2); padding:9px 14px; border-bottom:1px solid var(--bd); }
.pr-table tbody td { padding:11px 14px; border-bottom:1px solid var(--bd); color:var(--ink); vertical-align:middle; }
.pr-table tbody tr:last-child td { border-bottom:none; }
.pr-table tbody tr:hover { background:var(--bg2); }
.pr-table tbody tr.pr-has .pr-mono { color:var(--accent); }
.pr-mono { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-weight:700; }
.pr-r { text-align:right; font-variant-numeric:tabular-nums; }
.pr-actions { text-align:right; white-space:nowrap; }
.pr-actions .btn-icon { width:28px; height:28px; font-size:14px; }

/* ── Target modal ──────────────────────────────────────────────── */
.pr-modal-desc { font-size:13px; color:var(--ink-soft); margin-bottom:12px; }
.pr-rate-live { font-size:11.5px; color:var(--accent); font-weight:600; margin-top:5px; min-height:14px; font-variant-numeric:tabular-nums; }

/* ── Log production ────────────────────────────────────────────── */
.pr-log-head { display:flex; align-items:flex-end; gap:18px; margin-bottom:14px; flex-wrap:wrap; }
.pr-log-head .field label { display:block; font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); margin-bottom:4px; }
.pr-log-head input[type=date] { padding:7px 10px; border:1px solid var(--bd); border-radius:7px; background:var(--white); color:var(--ink); font-size:13px; }
.pr-log-hint { flex:1; min-width:220px; font-size:12px; color:var(--ink-faint); line-height:1.5; }

.pr-log-grid { border:1px solid var(--bd); border-radius:11px; overflow:hidden; box-shadow:var(--shadow); }
.pr-log-ghead, .pr-log-row { display:grid; grid-template-columns:2fr 1.2fr 1.8fr 34px; gap:8px; align-items:center; padding:8px 12px; }
.pr-log-ghead { background:var(--bg2); border-bottom:1px solid var(--bd); }
.pr-log-ghead span { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-faint); }
.pr-log-row { border-bottom:1px solid var(--bd); }
.pr-log-row:last-child { border-bottom:none; }
.pr-log-row select, .pr-log-row input { width:100%; padding:7px 8px; border:1px solid var(--bd); border-radius:6px; background:var(--white); color:var(--ink); font-size:12.5px; box-sizing:border-box; }
.pr-lr-qtywrap { position:relative; display:flex; align-items:center; }
.pr-lr-qty { text-align:right; padding-right:36px !important; }
.pr-lr-unit { position:absolute; right:9px; font-size:11px; font-weight:600; color:var(--ink-faint); pointer-events:none; }
.pr-lr-rm { width:28px; height:28px; font-size:14px; }
.pr-lr-rm:hover { color:#DC2626; background:color-mix(in srgb,#DC2626 12%,transparent); }

.pr-log-actions { display:flex; align-items:center; gap:12px; margin-top:12px; }
.pr-log-actions .btn-accent { margin-left:auto; }

.pr-recent { margin-top:22px; border:1px solid var(--bd); border-radius:11px; overflow:hidden; box-shadow:var(--shadow); }
.pr-recent-t { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint);
  padding:10px 14px; background:var(--bg2); border-bottom:1px solid var(--bd); }
.pr-del:hover { color:#DC2626; background:color-mix(in srgb,#DC2626 12%,transparent); }

@media (max-width:700px){
  .pr-log-ghead { display:none; }
  .pr-log-row { grid-template-columns:1fr 1fr; gap:6px; padding:12px; position:relative; }
  .pr-lr-rm { position:absolute; top:8px; right:8px; }
  .pr-table thead th:nth-child(4), .pr-table tbody td:nth-child(4) { display:none; }
}
@media (max-width:640px){
  .pr-barrow { grid-template-columns:52px 1fr; grid-template-areas:'lbl bar' '. val'; row-gap:3px; }
  .pr-barrow .pr-barlbl { grid-area:lbl; } .pr-barrow .pr-bar { grid-area:bar; } .pr-barrow .pr-barval { grid-area:val; }
}

/* ── Forecast / Earned Value ─────────────────────────────────── */
.pr-fc-card { border:1px solid var(--bd); border-radius:12px; background:var(--white); padding:12px 14px 8px; margin-bottom:14px; box-shadow:var(--shadow); }
.pr-fc-hd { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:6px; }
.pr-fc-t { font-size:12.5px; font-weight:700; color:var(--ink); display:inline-flex; align-items:center; gap:6px; }
.pr-fc-t i { color:var(--accent); }
.pr-fc-meta { font-size:11.5px; color:var(--ink-faint); font-variant-numeric:tabular-nums; margin-left:auto; }
.pr-fc-meta.pos { color:#16A34A; } .pr-fc-meta.neg { color:#DC2626; } .pr-fc-meta.accent { color:var(--accent); }
.pr-fc-legend { margin-left:auto; display:inline-flex; gap:12px; flex-wrap:wrap; }
.pr-lg { font-size:11px; color:var(--ink-soft); display:inline-flex; align-items:center; gap:5px; font-weight:600; }
.pr-lg::before { content:''; width:14px; height:0; border-top-width:2.5px; border-top-style:solid; }
.pr-lg.earned::before { border-top-color:#16A34A; }
.pr-lg.actual::before { border-top-color:var(--accent); }
.pr-lg.plan::before   { border-top-color:var(--ink-faint); border-top-style:dashed; }
.pr-lg.budget::before { border-top-color:#DC2626; border-top-style:dotted; }
.pr-fc-svg { display:block; width:100%; overflow:visible; }
.pr-ev-earned { fill:none; stroke:#16A34A; stroke-width:2.5; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; }
.pr-ev-actual { fill:none; stroke:var(--accent); stroke-width:2.5; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; }
.pr-ev-plan   { fill:none; stroke:var(--ink-faint); stroke-width:1.5; stroke-dasharray:5 4; vector-effect:non-scaling-stroke; }
.pr-ev-budget { stroke:#DC2626; stroke-width:1; stroke-dasharray:2 3; vector-effect:non-scaling-stroke; opacity:.7; }
.pr-ev-projx  { stroke:var(--ink-faint); stroke-width:1; stroke-dasharray:3 3; vector-effect:non-scaling-stroke; opacity:.6; }
.pr-pf-base { stroke:var(--ink-faint); stroke-width:1; stroke-dasharray:3 3; vector-effect:non-scaling-stroke; opacity:.7; }
.pr-pf-line { fill:none; stroke-width:2.5; vector-effect:non-scaling-stroke; stroke-linejoin:round; stroke-linecap:round; }
.pr-pf-line.pos { stroke:#16A34A; } .pr-pf-line.neg { stroke:#DC2626; } .pr-pf-line.accent { stroke:var(--accent); }
.pr-fc-note { font-size:12px; color:var(--ink-soft); background:var(--bg2); border:1px solid var(--bd); border-radius:10px; padding:12px 14px; margin-bottom:14px; display:flex; gap:8px; align-items:flex-start; }
.pr-fc-note i { color:var(--accent); margin-top:1px; }

/* ── Earned production by crew ───────────────────────────────── */
.pr-crew { border:1px solid var(--bd); border-radius:12px; background:var(--white); padding:12px 14px; margin-bottom:14px; box-shadow:var(--shadow); }
.pr-crew-hd { font-size:12.5px; font-weight:700; color:var(--ink); display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.pr-crew-hd i { color:var(--accent); }
.pr-crew-hd .pr-soft { font-weight:400; }
.pr-crew-row { display:grid; grid-template-columns:140px 1fr auto; align-items:center; gap:10px; padding:5px 0; }
.pr-crew-name { font-size:12.5px; font-weight:600; color:var(--ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pr-crew-bar { height:10px; background:var(--bg2); border-radius:6px; overflow:hidden; }
.pr-crew-fill { height:100%; background:#16A34A; border-radius:6px; }
.pr-crew-val { font-size:12px; color:var(--ink); font-variant-numeric:tabular-nums; white-space:nowrap; }

/* ── Field-friendly logging ──────────────────────────────────── */
.pr-opt { font-weight:400; color:var(--ink-faint); font-size:11px; }
.pr-log-row .pr-lr-qty, .pr-log-row .pr-lr-code { min-height:44px; font-size:15px; }
.pr-log-head { flex-wrap:wrap; gap:12px; }
@media (max-width:640px){
  .pr-crew-row { grid-template-columns:96px 1fr; }
  .pr-crew-val { grid-column:1 / -1; padding-left:0; }
}

/* Production portfolio dashboard — green "earned" series over the shared cd-* styles */
.cd-line.earned  { stroke:#16A34A; }
.cd-dot.earned   { fill:#16A34A; }
.cd-sline.earned { stroke:#16A34A; }
.cd-sw.earned.line { border-top-color:#16A34A; }
.cd-card.over { box-shadow:inset 3px 0 0 #DC2626; }

/* ── Unallocated-hours note (project + portfolio) ────────────── */
.pr-unalloc, .pd-unalloc { display:flex; align-items:flex-start; gap:9px; margin:14px 0; padding:11px 14px;
  border:1px solid color-mix(in srgb,#D97706 40%,var(--bd)); border-radius:10px;
  background:color-mix(in srgb,#D97706 9%,transparent); color:var(--ink); font-size:12.5px; line-height:1.5; }
.pr-unalloc i, .pd-unalloc i { color:#D97706; font-size:16px; margin-top:1px; flex:0 0 auto; }
.pr-unalloc b, .pd-unalloc b { font-variant-numeric:tabular-nums; }

/* ── Inline setup surface (project Production empty state) ────── */
.pr-setup { border:1px solid var(--bd); border-radius:12px; padding:20px; background:var(--bg); margin-top:4px; }
.pr-setup-hd { display:flex; gap:14px; align-items:flex-start; margin-bottom:16px; }
.pr-setup-ic { flex:0 0 auto; width:40px; height:40px; border-radius:10px; display:flex; align-items:center; justify-content:center;
  background:var(--accent-bg); color:var(--accent); font-size:20px; }
.pr-setup-t { font-size:16px; font-weight:700; color:var(--ink); font-family:Raleway,sans-serif; }
.pr-setup-s { font-size:12.5px; color:var(--ink-soft); line-height:1.55; margin-top:3px; max-width:640px; }
.pr-setup-none { display:flex; align-items:flex-start; gap:8px; font-size:12.5px; color:var(--ink-soft); line-height:1.5;
  background:var(--bg2); border-radius:8px; padding:11px 13px; margin-bottom:12px; }
.pr-setup-none i { color:var(--accent); margin-top:1px; }
.pr-setup-tblwrap { overflow-x:auto; border:1px solid var(--bd); border-radius:10px; }
.pr-setup-tbl { width:100%; border-collapse:collapse; font-size:13px; }
.pr-setup-tbl th { text-align:left; font-size:11px; font-weight:700; letter-spacing:.02em; text-transform:uppercase;
  color:var(--ink-faint); padding:9px 12px; border-bottom:1px solid var(--bd); background:var(--bg2); white-space:nowrap; }
.pr-setup-tbl td { padding:8px 12px; border-bottom:1px solid var(--bd); vertical-align:middle; }
.pr-setup-tbl tr:last-child td { border-bottom:none; }
.pr-setup-tbl tr.pr-has td { background:color-mix(in srgb,#16A34A 6%,transparent); }
.pr-setup-tbl th.pr-r, .pr-setup-tbl td.pr-r { text-align:right; }
.pr-in { padding:6px 9px; border:1.5px solid var(--bd); border-radius:7px; background:var(--bg); color:var(--ink);
  font-size:13px; font-family:inherit; min-height:34px; }
.pr-in:focus { outline:none; border-color:var(--accent); }
.pr-setup-tbl .pr-s-qty, .pr-setup-tbl .pr-s-bh { width:92px; text-align:right; }
.pr-setup-tbl .pr-s-unit { width:104px; }
.pr-s-ok { font-size:11px; margin-left:8px; font-weight:600; color:var(--ink-faint); white-space:nowrap; }
.pr-s-ok.done { color:#16A34A; } .pr-s-ok.err { color:#DC2626; }
.pr-setup-foot { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:14px; flex-wrap:wrap; }
/* .btn-xs sizing now in design-system.css */

/* Add-a-cost-code inline form */
.pr-addcode { margin-top:14px; border:1px dashed var(--bd); border-radius:10px; padding:14px; background:var(--bg2); }
.pr-addcode[hidden] { display:none; }
.pr-addcode-hd { font-size:12px; font-weight:700; color:var(--ink-soft); margin-bottom:10px; text-transform:uppercase; letter-spacing:.02em; }
.pr-addcode-row { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.pr-addcode-row .pr-in { flex:1 1 auto; min-width:96px; }
.pr-addcode-row .pr-nc-c { max-width:130px; } .pr-addcode-row .pr-nc-d { flex:2 1 220px; } .pr-addcode-row .pr-nc-t { max-width:140px; }
.pr-addcode-row #pr-nc-bh, .pr-addcode-row #pr-nc-qty { max-width:120px; } .pr-addcode-row .pr-nc-unit { max-width:120px; }
.pr-nc-err { color:#DC2626; font-size:12px; min-height:14px; }

/* ── Portfolio launchpad (empty-state + needs-setup strip) ───── */
.cd-empty.sm { padding:28px 16px; }
.cd-lp { max-width:820px; margin:0 auto; }
.pd-lp-intro { display:flex; gap:14px; align-items:flex-start; padding:18px 4px 20px; }
.pd-lp-ic { flex:0 0 auto; width:44px; height:44px; border-radius:11px; display:flex; align-items:center; justify-content:center;
  background:color-mix(in srgb,#16A34A 15%,transparent); color:#16A34A; font-size:22px; }
.pd-lp-t { font-size:17px; font-weight:700; color:var(--ink); font-family:Raleway,sans-serif; }
.pd-lp-s { font-size:13px; color:var(--ink-soft); line-height:1.55; margin-top:4px; }
.pd-lp-listhd { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-faint); margin:6px 4px 8px; }
.pd-lp-list { display:flex; flex-direction:column; gap:8px; }
.pd-lp-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px;
  border:1px solid var(--bd); border-radius:10px; background:var(--bg); }
.pd-lp-row-l { display:flex; align-items:center; gap:8px; flex-wrap:wrap; min-width:0; }
.pd-lp-name { font-weight:700; color:var(--ink); font-size:13.5px; }
.pd-lp-meta { font-size:11.5px; color:var(--ink-faint); }
.pd-needsetup { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:18px; padding:11px 14px;
  border:1px dashed var(--bd); border-radius:10px; font-size:12px; }
.pd-ns-lbl { font-weight:600; color:var(--ink-soft); display:inline-flex; align-items:center; gap:6px; }
.pd-ns-lbl i { color:var(--accent); }
.pd-ns-chip { border:1px solid var(--bd); background:var(--bg); border-radius:20px; padding:4px 11px; font-size:11.5px;
  font-weight:600; color:var(--ink-soft); cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.pd-ns-chip:hover { border-color:var(--accent); color:var(--accent); }
.cd-soft { color:var(--ink-faint); }
@media (max-width:640px){
  .pd-lp-row { flex-direction:column; align-items:stretch; }
  .pd-lp-row .btn-accent { width:100%; justify-content:center; }
}
