/* Job Forecast v2 — punch lists (punch-lists build, claude-opus-5-5, 2026-10-16). The job page section (.pl2) and the Price Book section
   (.pl2-tpl). Tokens from jf.css only. */
.pl2{display:flex;flex-direction:column;gap:10px}
.pl2 .sec-h{display:flex;align-items:baseline;gap:8px}
.pl2-line{border:1px solid var(--border);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--surface)}
.pl2-line.pl2-removed{opacity:.72;border-style:dashed}
.pl2-line.pl2-optional{background:var(--bg-sunken)}
.pl2-line-h{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}
.pl2-line-h>div:first-child{min-width:0;flex:1 1 220px;overflow-wrap:anywhere}
.pl2-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12px;margin-top:3px}
.pl2-warn{font-size:12px;color:var(--warn)}
.pl2-refs{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}
.pl2-ref{flex:0 0 132px;display:flex;flex-direction:column;gap:4px;border:1px solid var(--border);border-radius:8px;padding:4px;background:var(--surface)}
.pl2-ref.pl2-r-confirmed{border-color:var(--ok)}
.pl2-ref-f{display:flex;flex-direction:column;gap:2px;font-size:11px}
.pl2-ref-a{display:flex;gap:4px}
.pl2-ref-a .btn{min-width:32px}
.pl2-add{flex:0 0 132px;min-height:120px;border:1px dashed var(--border-2,var(--border));border-radius:8px;background:none;color:var(--text-dim);font:inherit;font-size:12px;cursor:pointer}
.pl2-photo{display:flex;flex-direction:column;gap:4px}
.pl2-box{position:relative;border-radius:6px;overflow:hidden;background:var(--bg-sunken)}
.pl2-box img{display:block;width:100%;height:auto}
.pl2-ref .pl2-box img{height:96px;object-fit:cover}
.pl2-ref .pl2-box{height:96px}
.pl2-pin{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--danger);border:2px solid #fff;box-shadow:0 1px 3px rgb(0 0 0/.5);z-index:3;font-size:9px;font-weight:700;color:#fff;display:grid;place-items:center;line-height:1}
.pl2-pin.num{width:18px;height:18px;margin:-9px 0 0 -9px}
.pl2-lead{position:absolute;height:2px;background:#fff;box-shadow:0 0 2px rgb(0 0 0/.6);transform-origin:0 50%;z-index:2;pointer-events:none}
.pl2-lab{position:absolute;left:0;top:0;z-index:4;max-width:60%;background:rgb(0 0 0/.74);color:#fff;font-size:12px;font-weight:600;line-height:1.25;padding:3px 7px;border-radius:5px;overflow-wrap:anywhere}
.pl2-legend{font-size:11.5px;color:var(--text-dim)}
.pl2-item{border-top:1px solid var(--border);padding-top:8px;display:flex;flex-direction:column;gap:5px}
.pl2-item.pl2-removed{opacity:.7}
.pl2-item-h{display:flex;gap:8px;align-items:baseline;justify-content:space-between}
.pl2-name{font-weight:600;font-size:13px;min-width:0;overflow-wrap:anywhere}
.pl2-note{font-size:12px;color:var(--warn)}
.pl2-shots{display:flex;gap:8px}
.pl2-shots a{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--text-dim);text-decoration:none;width:120px}
.pl2-shots img{width:120px;height:80px;object-fit:cover;border-radius:6px;background:var(--bg-sunken)}
.pl2-gone summary{cursor:pointer;font-size:12px;color:var(--text-dim)}
.pl2-modal-root{position:fixed;inset:0;z-index:90;background:oklch(0.2 0.01 260 / .35);display:grid;place-items:center;padding:16px}
.pl2-modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-md,0 10px 30px rgb(0 0 0/.2));width:min(560px,96vw);max-height:92vh;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:8px}
.pl2-modal.wide{width:min(900px,96vw)}
.pl2-modal-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pl2-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px}
.pl2-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;cursor:pointer;background:var(--bg-sunken)}
/* Price Book */
.pl2-steps{display:flex;flex-direction:column;gap:6px}
.pl2-step{display:flex;gap:6px;align-items:flex-start;border:1px solid var(--border);border-radius:8px;padding:6px}
.pl2-step.pl2-st-accepted{border-color:color-mix(in srgb,var(--ok) 55%,var(--border))}
.pl2-step-ord{display:flex;flex-direction:column;gap:2px}
.pl2-step-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.pl2-step-main>input.fld{width:100%}
.pl2-step-opts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:12px}
.pl2-detail summary{cursor:pointer;font-size:12px;color:var(--text-dim)}
.pl2-detail div{font-size:12px;color:var(--text-dim)}
.pl2-rules{font-size:12px}
.pl2-time{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--border);padding-top:8px}
.pl2-time-row{display:grid;grid-template-columns:minmax(90px,1.2fr) 70px minmax(120px,1.6fr) minmax(90px,1fr);gap:8px;align-items:baseline;font-size:12.5px}
.pl2-time-row>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl2-time-row.step{font-size:12px}
