/* Production screens (web/production.js, web/production_dispatch.js), drawn in the purchase workspace. */

/* Module colours of the colourful look (web/vivid.css). */
.vivid body[data-view="production"],.vivid .nav-item[data-view="production"]{--mod:#c2410c;--mod-2:#f59e0b;--mod-soft:#fff3e8;--mod-ink:#7c2d12}
.vivid body[data-view="serial-numbers"],.vivid .nav-item[data-view="serial-numbers"]{--mod:#4f46e5;--mod-2:#818cf8;--mod-soft:#eef0ff;--mod-ink:#312e81}
.vivid body[data-view="production-qc"],.vivid .nav-item[data-view="production-qc"]{--mod:#059669;--mod-2:#34d399;--mod-soft:#e6f7f0;--mod-ink:#065f46}
.vivid body[data-view="balancing"],.vivid .nav-item[data-view="balancing"]{--mod:#9333ea;--mod-2:#e879f9;--mod-soft:#f6ecff;--mod-ink:#581c87}
.vivid body[data-view="packing-lists"],.vivid .nav-item[data-view="packing-lists"]{--mod:#0369a1;--mod-2:#38bdf8;--mod-soft:#e5f3fc;--mod-ink:#0c4a6e}

/* Status chips */
.pw-st-not_started{background:#eceff1;color:#4f5b62}
.pw-st-in_production{background:#e4ebf3;color:#3c5571}
.pw-st-in_qc{background:#fbf0d9;color:#7a5216}
.pw-st-ready,.pw-st-qc_passed{background:#e1f0e7;color:#2c6146}
.pw-st-packed,.pw-st-approved{background:#e3f1fb;color:#1f5a85}
.pw-st-part_dispatched{background:#ebe7fb;color:#4b3b8f}
.pw-st-dispatched{background:#d9efe2;color:#1d5236;font-weight:700}
.pw-st-hold,.pw-st-qc_failed{background:#f8e3df;color:#97402f}
.pw-st-outsourced,.pw-st-stock{background:#fbeee4;color:#8a4b1c}
.pw-st-scrapped{background:#e9e9e9;color:#5d5d5d;text-decoration:line-through}

/* Board: the views get most of the toolbar, so they show without scrolling on a desktop screen. */
body[data-view="production"] .pw-root .ow-toolbar,body[data-view="packing-lists"] .pw-root .ow-toolbar{grid-template-columns:minmax(220px,.5fr) minmax(0,1.5fr) auto}
body[data-view="production"] .pw-scopes,body[data-view="packing-lists"] .pw-scopes{max-width:none}
.pr-count{display:inline-block;margin-left:6px;padding:0 6px;border-radius:9px;background:rgba(0,0,0,.08);font-size:11px;font-weight:700}
.pr-team{display:inline-block;margin:0 4px 3px 0;padding:1px 7px;border-radius:9px;background:var(--mod-soft,#eef2f1);color:var(--mod-ink,#2d4b44);font-size:11.5px;white-space:nowrap}
.pr-tag{display:inline-block;margin-left:5px;padding:0 6px;border-radius:8px;font-size:10.5px;font-weight:700;vertical-align:1px}
.pr-late{background:#fde2dd;color:#a3321f}
.pr-soon{background:#fdf0d5;color:#80510f}
.pr-late-text{color:#b42318;font-weight:600}
.pr-brief{font-size:12px;color:#4a5a62}
.pw-register tr.pr-row-late td:first-child,#pw-register tr.pr-row-late td:first-child{box-shadow:inset 3px 0 0 #d6452f}

/* Board rows: one per ICO, its products listed in the row */
.pr-products{line-height:1.35}
.pr-product-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}
.pr-product-line b{color:#6b787d;font-weight:600}
.pr-product-line .pw-mono{font-size:11.5px;color:#4a5a62}

/* One ICO: a grid of its lines (full-screen like the PO and GRN dialogs); columns resize by dragging (web/columns.js) */
.pr-ico-body{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.pr-ico-body .pr-plan-wrap{flex:1;min-height:0;max-height:none}
.pr-ico-strip{display:flex;flex-wrap:wrap;gap:4px 22px;margin:0 0 8px;font-size:12.5px}
.pr-ico-strip small{color:#6b787d;font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.pr-ico-strip span{max-width:100%}
.pr-ico-strip-note{margin-top:-4px}
.pr-tabs{align-items:center}
.pr-bulk-inline{display:flex;align-items:center;gap:6px;margin-left:auto;padding-bottom:4px;font-size:12.5px;color:#4a5a62}
.pr-bulk-inline select{min-height:0;height:30px;width:auto;min-width:170px}
.pr-ico-grid-wrap{flex:1;min-height:0;overflow:auto;border:1px solid #d9e2e0;border-radius:8px;background:#fff}
.pr-ico-grid{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:12.5px}
.pr-ico-grid th{position:sticky;top:0;z-index:1;padding:7px 8px;background:var(--mod-soft,#f1f6f4);color:var(--mod-ink,#2d4b44);text-align:left;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.02em;border-bottom:2px solid var(--mod,#2f7d6c);white-space:nowrap}
.pr-ico-grid th:last-child>.col-resizer{right:0}
.pr-ico-grid td{padding:7px 8px;border-bottom:1px solid #e6ecea;vertical-align:top;overflow-wrap:anywhere}
.pr-ico-grid tbody tr:nth-child(even) td{background:#fbfcfc}
.pr-ico-grid tbody tr:hover td{background:#fffbea}
.pr-ico-grid tr.pr-row-late td:first-child{box-shadow:inset 3px 0 0 #d6452f}
.pr-ico-grid tr.pr-row-closed td{color:#7a868b}
.pr-ico-grid .pr-c-tick,.pr-ico-grid .pr-c-open{text-align:center;padding-left:2px;padding-right:2px}
.pr-ico-grid input[type=checkbox]{width:16px;height:16px;margin:0;min-height:0}
.pr-c-line{font-weight:700;color:var(--mod-ink,#2d4b44)}
.pr-c-code .pw-mono{display:block;font-size:11.5px}
.pr-c-tech .ow-tech-full{font-size:12.5px;line-height:18px}
.pr-c-extra{margin-top:3px;font-size:11.5px;color:#4a5a62}
.pr-c-qty{white-space:nowrap}
.pr-c-small{font-size:11.5px;color:#4a5a62}
.pr-c-plan{color:#78350f}
.pr-c-date .pr-tag{display:inline-block;margin:2px 0 0}
.pr-grid-status{width:100%;min-height:0;height:30px;padding:2px 22px 2px 8px;border:1px solid rgba(0,0,0,.18);border-radius:15px;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.pr-thumb.pr-thumb-small{display:block;width:64px;height:48px;margin-top:5px}
.pr-ico-pls{margin-top:8px;font-size:12.5px}
/* Comments on a line: a box to add one, then the log, newest first, with who and when */
.pr-comment-add{display:flex;align-items:flex-start;gap:4px}
.pr-comment-add textarea{flex:1;min-width:0;min-height:30px;height:30px;padding:5px 7px;border:1px solid #c5ccd4;border-radius:6px;background:var(--ow-edit,#fff);font:inherit;font-size:12px;line-height:18px;resize:none}
.pr-comment-add .ow-button{flex:none;min-height:0;height:30px;padding:0 9px;font-size:12px}
/* The comments fill the cell and scroll inside it. An unseen copy of the add box and the two newest comments, in the cell's
   flow, makes the row at least that tall (taller when the technical details need it); its list always keeps a scrollbar's
   width, so it wraps like the real list and the two comments always fit. */
.pr-ico-grid td.pr-c-comments{position:relative;padding:0}
.pr-comment-sizer{visibility:hidden;display:flex;flex-direction:column;gap:4px;padding:6px 8px}
.pr-comment-sizer-add{flex:none;height:30px}
.pr-comment-sizer .pr-comments{flex:none;overflow-y:scroll}
.pr-comment-box{position:absolute;inset:6px 8px;display:flex;flex-direction:column;gap:4px;min-height:0}
.pr-comments{flex:1;min-height:0;margin:0;padding:0 2px 0 0;overflow-x:hidden;overflow-y:auto;list-style:none}
.pr-comments li{margin-bottom:3px;padding:2px 6px;border-left:3px solid var(--mod,#2f7d6c);background:#f6f8f8;font-size:12px;line-height:17px;overflow-wrap:anywhere}
.pr-comment-who{font-weight:700;color:var(--mod-ink,#2d4b44)}
.pr-comment-text{white-space:pre-line}

/* One line (full-screen like the PO and GRN dialogs): the product and every technical on the left, the work in numbered cards on the right */
.pr-next{margin-bottom:10px;padding:9px 12px;border:1px solid #d9e2e0;border-left:4px solid var(--mod,#2f7d6c);border-radius:8px;background:var(--mod-soft,#f1f6f4);font-size:13px}
.pr-flow{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px;padding:0;list-style:none;counter-reset:pr-flow}
.pr-flow li{position:relative;flex:1 1 150px;display:flex;align-items:center;gap:8px;padding:7px 12px 9px;border:1px solid #d9e2e0;border-radius:8px;background:#fff;overflow:hidden;counter-increment:pr-flow}
.pr-flow li::before{content:counter(pr-flow);flex:none;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#e7eeec;color:#4a5a62;font-size:12px;font-weight:700}
.pr-flow li.part::before{background:var(--mod,#2f7d6c);color:#fff}
.pr-flow li.done::before{content:'\2713';background:#2e7d4f;color:#fff}
.pr-flow li span{font-size:13px;color:#3d4b51}
.pr-flow li b{margin-left:auto;font-size:17px}
.pr-flow li small{font-size:12px;color:#6b787d;font-weight:400}
.pr-flow li i{position:absolute;left:0;bottom:0;height:3px;width:var(--pr-fill,0%);background:var(--mod,#2f7d6c)}
.pr-line-columns{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}
.pr-product-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:6px}
.pr-thumb.pr-thumb-large{width:150px;height:112px}
.pr-thumb-large img{object-fit:contain}
.pr-product-name{font-size:17px;font-weight:700;line-height:22px;color:var(--mod-ink,#2d4b44)}
.pr-product-code{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:baseline;margin:4px 0 6px;font-size:14px}
.pr-product-note{margin-top:4px;font-size:13px}
.pr-product-note span{margin-right:8px;color:#6b787d;font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.pr-product-card>h3{margin-top:12px}
/* The legend table of the item and ICO screens (web/orders.css .ow-product-table), a size larger to read at the machine */
.ow-product-table.pr-legend-table>thead>tr>th{font-size:11.5px;padding:6px 9px}
.ow-product-table.pr-legend-table>tbody>tr>td,.ow-product-table.pr-legend-table>tbody>tr>th{font-size:13px;line-height:19px;padding:6px 9px}
.pr-legend-table .ow-product-detail-line{line-height:19px}
.pr-card h3{display:flex;align-items:center;gap:8px}
.pr-num{flex:none;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--mod,#2f7d6c);color:#fff;font-size:12px;font-weight:700}
.pr-hint{margin:-2px 0 10px;font-size:12.5px;color:#5c6b70}
.pr-card-actions{display:flex;justify-content:flex-end;margin-top:10px}
.pr-serial-table,.pr-fit-table{table-layout:fixed;width:100%;min-width:0!important}
.pr-serial-table th:first-child,.pr-serial-table td:first-child{width:34px;text-align:center}
.pr-dialog-check,.pr-serial-table input[type=checkbox],.pr-pack-line input[type=checkbox],.pr-check input,.pr-unit input{width:16px!important;height:16px!important;min-height:0!important;flex:none;padding:0;margin:0}
.pr-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 18px}
@media (max-width:980px){.pr-columns{grid-template-columns:1fr}}
.pr-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
.pr-facts .ow-field strong{font-weight:600}
.pr-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}
.pr-form .ow-full{grid-column:1/-1}
.pr-checks{display:flex;flex-wrap:wrap;gap:6px 14px;padding-top:4px}
.pr-check{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}
.pr-check input{width:16px;height:16px;margin:0}
.pr-make{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:10px}
.pr-make .ow-field{width:150px}
.pr-make .ow-helper{flex-basis:100%}
.pr-serial-table td small{display:block;color:#8a4b1c}
.pr-sticker-bar,.pr-pick-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.pr-sticker-bar span,.pr-pick-bar span{margin-right:auto;font-size:12.5px;color:#4a5a62}
.pr-pick-bar{margin:0 6px 0 0;padding:2px 8px;border:1px dashed rgba(255,255,255,.55);border-radius:8px;flex-wrap:nowrap}
.pr-pick-bar span{color:inherit;opacity:.9;white-space:nowrap}
.pr-pick-bar .ow-button{white-space:nowrap}
.pr-pick-cell{width:34px;text-align:center}
.pr-pick-cell input{width:16px;height:16px}
.pr-line-list{display:flex;flex-direction:column;gap:6px}
.pr-other{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:7px 10px;border:1px solid #dbe3e1;border-radius:7px;background:#fff;text-align:left;cursor:pointer;font:inherit}
.pr-other:hover{border-color:var(--mod,#2f7d6c);background:var(--mod-soft,#f1f6f5)}
.pr-other small{display:block;color:#64737a}
.pr-serial-dialog{width:min(760px,94vw)}
.pr-balancing-dialog{width:min(720px,94vw)}
.pr-settings-dialog{width:min(900px,96vw)}
.pr-settings-dialog textarea{min-height:92px}

/* Packing lists */
.pr-empty-hint{margin:14px 0}
.pr-pack-line{margin:10px 0;border:1px solid #dbe3e1;border-radius:8px;background:#fff}
.pr-pack-line.on{border-color:var(--mod,#2f7d6c);box-shadow:0 0 0 1px var(--mod-soft,#e2efeb)}
.pr-pack-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 12px;cursor:pointer}
.pr-pack-head input{width:17px;height:17px;margin:0}
.pr-pack-head small{flex-basis:100%;margin-left:27px;color:#64737a}
.pr-pack-body{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;padding:0 12px 10px 39px}
.pr-pack-body .ow-field{width:170px}
.pr-pack-body .pr-remarks{flex:1;min-width:220px}
.pr-units{display:flex;flex-wrap:wrap;gap:6px;flex-basis:100%}
.pr-unit{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid #d3dedb;border-radius:14px;background:#f7faf9;cursor:pointer;font-size:12.5px}
.pr-unit input{margin:0}
.pr-steps{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px;padding:0;list-style:none}
.pr-steps li{flex:1;min-width:160px;padding:7px 10px;border:1px solid #dbe3e1;border-radius:8px;background:#fafcfb}
.pr-steps li b{display:block;font-size:12.5px;color:#56656b}
.pr-steps li.done{border-color:#9fcdb3;background:#eef8f2}
.pr-steps li.done b{color:#1f5a3a}
.pr-steps li small{display:block;font-size:11.5px;color:#64737a}
.pr-pl-lines small{display:block}
.pr-wrap{white-space:normal;word-break:break-word}

/* Line status: a small label per product on the board, a dropdown per line in the ICO window */
.pr-mini{display:inline-block;margin-left:4px;padding:0 6px;border-radius:8px;font-style:normal;font-size:10.5px;font-weight:600;vertical-align:1px}
.pw-st-processing{background:#e4ebf3;color:#3c5571}
.pw-st-qc{background:#fbf0d9;color:#7a5216}
.pw-st-under_packing{background:#e8f1f8;color:#2b5d80}
body[data-view="production"] .pw-st-not_required,.pr-ico-dialog .pw-st-not_required,.pr-line-dialog .pw-st-not_required{background:#ececec;color:#5d5d5d}

/* Machine plan: an ICO's lines day by day (ICO MICRO PLANNING) and the day / machine register */
.vivid body[data-view="production-plan"],.vivid .nav-item[data-view="production-plan"]{--mod:#b45309;--mod-2:#f97316;--mod-soft:#fff4e5;--mod-ink:#78350f}
body[data-view="production-plan"] .pw-root .ow-toolbar{grid-template-columns:minmax(220px,.6fr) minmax(0,1.4fr) auto}
body[data-view="production-plan"] .pw-scopes{max-width:none}
.pr-tabs{display:flex;gap:4px;margin:4px 0 10px;border-bottom:2px solid var(--mod-soft,#e3ece9)}
.pr-tab{padding:7px 16px;border:0;border-radius:8px 8px 0 0;background:transparent;font:inherit;font-weight:600;color:#56656b;cursor:pointer}
.pr-tab.active{background:var(--mod,#2f7d6c);color:#fff}
.pr-plan-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:8px}
.pr-plan-bar .ow-helper{flex-basis:100%}
.pr-plan-wrap{overflow:auto;border:1px solid #d9e2e0;border-radius:8px;max-height:calc(100dvh - 330px)}
.pr-plan{border-collapse:separate;border-spacing:0;font-size:12px;min-width:100%}
.pr-plan th,.pr-plan td{border-right:1px solid #e3e9e7;border-bottom:1px solid #e3e9e7;padding:4px 5px;vertical-align:top}
.pr-plan thead th{position:sticky;top:0;z-index:2;background:var(--mod-soft,#f1f6f4);text-align:center;font-weight:600;min-width:80px}
.pr-plan thead th span{display:block;font-size:10.5px;color:#64737a;font-weight:500}
.pr-plan thead th:first-child,.pr-plan tbody th{position:sticky;left:0;z-index:1;background:#fff;text-align:left;min-width:200px;max-width:250px;font-weight:500}
.pr-plan thead th:first-child{z-index:3;background:var(--mod-soft,#f1f6f4)}
.pr-plan tbody th small{display:block;margin-top:2px;font-size:11px;color:#64737a}
.pr-plan th.today,.pr-plan td.today{background:#fff8e1}
.pr-plan th.sun,.pr-plan td.sun{background:#f4f4f4}
.pr-plan tr.closed{opacity:.55}
.pr-plan-cell{cursor:pointer;min-height:34px}
.pr-plan-cell:hover,.pr-plan-cell:focus{outline:2px solid var(--mod,#2f7d6c);outline-offset:-2px}
.pr-plan-all th{background:var(--mod-soft,#f3f8f6)!important;font-weight:600!important}
.pr-plan-all td{text-align:center;color:var(--mod,#2f7d6c);font-weight:700}
.pr-plan-chip{display:inline-block;margin:1px 2px 1px 0;padding:1px 6px;border:1px solid #c9d6d2;border-radius:9px;background:#eef4f8;color:#2b4a5e;font:inherit;font-size:10.5px;font-weight:600;line-height:1.5;white-space:nowrap}
.pr-plan-chip.done{background:#e1f0e7;border-color:#9fcdb3;color:#1f5a3a}
.pr-plan-chip.late{background:#fde2dd;border-color:#f1b2a6;color:#a3321f}
button.pr-plan-chip{cursor:pointer}
button.pr-plan-chip:hover{border-color:var(--mod,#2f7d6c)}
.pr-plan-chips{line-height:1.9}
.pr-plan-target{display:block;font-size:10px;font-weight:700;color:#a3321f}
.pr-plan-pick{width:min(760px,94vw)}
.pr-machine-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 14px}
@media (max-width:700px){.pr-machine-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Product pictures (click to enlarge) */
.pr-thumb{flex:none;width:104px;height:78px;padding:0;border:1px solid #d9e2e0;border-radius:6px;overflow:hidden;background:#fff;cursor:zoom-in}
.pr-thumb img{display:block;width:100%;height:100%;object-fit:cover}

/* Production process & times (web/production_process.js): a product type's steps, its models' and an item's times. */
.pp-dialog{width:min(1100px,96vw);height:min(860px,94vh)}
.pp-dialog .ow-dialog-body{display:flex;flex-direction:column;gap:10px;min-height:0;overflow:auto}
.pp-top{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap}
.pp-type{min-width:280px;margin:0}
.pp-tabs{margin:0;flex:1}
.pp-readonly{margin:0;padding:6px 10px;border-radius:6px;background:#fff7e6;color:#7a4a00;font-size:12.5px}
.pp-section{margin:0}
.pp-field-row{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.pp-field-row .ow-field{min-width:300px;margin:0}
.pp-field-row .ow-helper{margin:0 0 6px;max-width:560px}
.pp-steps,.pp-parts{width:100%;min-width:0!important}
.pp-steps th:nth-child(1){width:44px}
.pp-steps td{vertical-align:middle}
.pp-steps select{min-width:220px}
.pp-steps input{width:92px}
.pp-dur{margin-left:6px;color:#6b787d;font-size:11.5px;white-space:nowrap}
.pp-num{color:var(--mod-ink,#2d4b44);font-weight:700}
.pp-act{white-space:nowrap;text-align:right}
.pp-act .ow-button{margin-left:3px}
.pp-icon{min-height:0!important;height:26px;width:28px;padding:0!important;justify-content:center}
.pp-add{display:flex;gap:8px;margin-top:10px}
.pp-add select{min-width:240px}
.pp-own{margin-left:6px;background:#eef4ff;color:#1d4f91}
.pp-added td{background:#f7faff}
.pp-models{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;min-height:0;flex:1}
.pp-model-list{display:flex;flex-direction:column;gap:6px;min-height:0;padding-right:12px;border-right:1px solid #e3e8ea}
.pp-model-list ul{flex:1;min-height:0;max-height:60vh;margin:0;padding:0;overflow:auto;list-style:none}
.pp-model{display:flex;justify-content:space-between;align-items:baseline;gap:8px;width:100%;padding:6px 8px;border:0;border-radius:6px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.pp-model:hover{background:#f3f6f6}
.pp-model.active{background:var(--mod-soft,#e8f3f0);font-weight:700}
.pp-model small{color:#6b787d;font-weight:400;white-space:nowrap}
.pp-model small b{color:var(--mod-ink,#2d4b44)}
.pp-model-title{margin:0 0 8px}
.pp-model-title small,.ow-section h3 small{font-weight:400;font-size:12px;color:#6b787d}
.pp-item-head{margin:0 0 10px}
.pp-totals{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.pp-totals span{padding:4px 10px;border-radius:14px;background:var(--mod-soft,#eef5f3);font-size:12.5px}
.pp-sub{margin-top:6px;padding-left:10px;border-left:2px solid #e3e8ea}
/* Machine load: each machine's planned hours per day against its working hours. */
.pp-load-dialog{width:min(1500px,97vw);height:min(880px,94vh)}
.pp-load-dialog .ow-dialog-body{display:flex;flex-direction:column;gap:8px;min-height:0}
.pp-load-dialog .pr-plan-wrap{flex:1;min-height:0;max-height:none}
.pp-load tbody th small{display:block;font-weight:400}
.pp-cell{position:relative;text-align:center;vertical-align:middle!important;cursor:pointer}
.pp-cell b{position:relative;font-size:12px}
.pp-cell i{position:absolute;left:0;bottom:0;height:4px}
.pp-cell.ok i,.pp-key i.ok{background:#2f9e44}
.pp-cell.high i,.pp-key i.high{background:#f08c00}
.pp-cell.over i,.pp-key i.over{background:#e03131}
.pp-cell.over{background:#fff0f0!important}
.pp-cell.chosen,.pp-cell:focus{outline:2px solid var(--mod,#2f7d6c);outline-offset:-2px}
.pp-busy{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:12.5px}
.pp-busy input{width:16px;height:16px;min-height:0;margin:0}
.pp-key{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:#4a5a62}
.pp-key i{display:inline-block;width:14px;height:4px;margin-left:8px}
.pp-load-detail h3{margin:0 0 6px;font-size:14px}
.pp-load-detail ul{margin:0;padding-left:18px}
/* An ICO's Machine plan: the time each line needs on each machine, and each planned day's share of it. */
.pr-plan-needs{display:block;margin-top:3px;font-size:11px;color:#4a5a62;white-space:normal}
.pr-plan-needs .todo{color:#b45309;font-weight:600}
.pr-plan-chip small{margin-left:3px;font-weight:500;opacity:.85}
.pr-machine-grid .pp-pick-info{margin-left:auto;padding-left:8px;font-size:11px;color:#6b787d;white-space:nowrap}
.pr-machine-grid .pp-pick-info.over{color:#c92a2a;font-weight:600}
.pr-machine-grid .pr-check.needed span:first-of-type{font-weight:700}
.pp-pick-group{grid-column:1/-1;margin:6px 0 0;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--mod-ink,#2d4b44)}
.pp-dialog[open],.pp-load-dialog[open]{display:flex;flex-direction:column}
.pp-dialog .ow-dialog-body,.pp-load-dialog .ow-dialog-body{flex:1}
.pp-steps input::placeholder{color:#a3adb3;font-style:italic}
.pr-plan-needs{text-transform:none;letter-spacing:0}
.pr-machine-grid .pr-check{flex-wrap:wrap;row-gap:0}
.pr-machine-grid .pp-pick-info{flex-basis:100%;margin-left:22px;padding-left:0;white-space:normal}
.pp-inline .pp-unit{font-weight:600;white-space:nowrap}
.pp-inline .pp-saved{width:80px;color:#2b8a3e;font-size:12px;font-weight:600;white-space:nowrap}
.pp-totals-label{align-self:center;margin-right:2px;font-size:12.5px}
.pp-own-item{background:#fff4e5;color:#8a4b00}
.pp-remove-step{margin-left:6px;vertical-align:middle}
.pp-note{display:block;margin-top:2px;color:#6b787d;font-size:11.5px}
.pp-waiting td{vertical-align:top}
.pp-waiting .pp-act{white-space:nowrap}
.pp-add-item{margin:12px 0;padding:10px 12px;border:1px dashed #c9d6d2;border-radius:8px;background:#fbfcfc}
.pp-add-item h3{margin:0 0 8px}
.pp-add-grid{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px}
.pp-add-grid .ow-field{margin:0;min-width:120px}
.pp-add-grid select{min-width:200px}
.pp-add-grid input{width:110px}
.pp-add-grid .pp-add-note{flex:1;min-width:220px}
.pp-add-grid .pp-add-note input{width:100%}
.pp-item-link{padding:0;border:0;background:none;color:var(--mod-ink,#1d4f91);font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
.pp-badge{display:inline-block;min-width:18px;padding:0 6px;border-radius:9px;background:#e03131;color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}
.pp-waiting{width:100%;min-width:0!important;table-layout:auto}
.pp-waiting th,.pp-waiting td{white-space:normal}
.pp-waiting td:first-child{min-width:170px}
/* The ICO by process: one table per product, processes in rows, lines in columns, each cell its planned or suggested days. */
.pr-plan-views{display:inline-flex;margin:0 0 8px;border:1px solid #c9d6d2;border-radius:8px;overflow:hidden}
.pr-plan-views button{padding:5px 14px;border:0;background:#fff;color:#4a5a62;font:inherit;font-weight:600;cursor:pointer}
.pr-plan-views button.active{background:var(--mod,#2f7d6c);color:#fff}
.pr-pp-groups{display:flex;flex-direction:column;gap:14px;min-height:0;overflow:auto}
.pr-pp-group h3{margin:0 0 6px;font-size:14px}
.pr-pp-group h3 small{font-weight:400;color:#6b787d}
.pr-pp-wrap{max-height:none}
.pr-pp thead th{min-width:150px;text-align:left}
.pr-pp thead th small{display:block;margin-top:2px}
.pr-pp tbody th small{display:block;font-weight:400}
.pr-pp-cell{min-width:150px;vertical-align:top}
.pr-pp-cell small{display:block;margin-top:2px;color:#6b787d;font-size:11px}
.pr-pp-cell.suggested{background:#fffbeb}
.pr-pp-cell.planned{background:#f2faf6}
.pr-pp-none{color:#a0aab0;text-align:center}
.pr-pp-when{display:flex;align-items:center;gap:6px}
.pr-pp-date{padding:2px 6px;border:1px solid transparent;border-radius:6px;background:transparent;color:inherit;font:inherit;font-size:12px;text-align:left;cursor:pointer}
button.pr-pp-date:hover,button.pr-pp-date:focus{border-color:var(--mod,#2f7d6c);background:#fff}
.pr-pp-date i{color:#8a5a00}
.pr-pp-done{color:#2b8a3e;font-weight:600}
.pr-pp-machine{display:inline-flex;align-items:center;justify-content:center;width:26px;height:24px;margin-left:auto;padding:0;border:1px solid #c9d6d2;border-radius:6px;background:#fff;color:var(--mod-ink,#2d4b44);cursor:pointer}
.pr-pp-machine svg{width:14px;height:14px}
.pr-pp-machine:hover{border-color:var(--mod,#2f7d6c)}
/* The plan of one machine: a week of days; drag a line to another day. */
.pp-machine-dialog{width:min(1500px,97vw);height:min(880px,94vh)}
.pp-machine-dialog[open]{display:flex;flex-direction:column}
.pp-machine-dialog .ow-dialog-body{display:flex;flex:1;flex-direction:column;gap:8px;min-height:0}
.pp-board{display:grid;flex:1;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;min-height:0}
.pp-day{display:flex;flex-direction:column;min-height:0;border:1px solid #d9e2e0;border-radius:8px;background:#fff}
.pp-day.sun{background:#f6f6f6}
.pp-day.today{border-color:#f0c040;box-shadow:inset 0 3px 0 #f0c040}
.pp-day.drop{outline:2px dashed var(--mod,#2f7d6c);outline-offset:-3px;background:#f2faf6}
.pp-day header{padding:7px 8px 6px;border-bottom:1px solid #e3e9e7}
.pp-day header b{display:block;font-size:13px}
.pp-day header small{display:block;color:#6b787d;font-size:11.5px}
.pp-day-bar{display:block;height:4px;margin-top:4px;border-radius:2px;background:#eef2f1;overflow:hidden}
.pp-day-bar i{display:block;height:100%}
.pp-day-bar.ok i{background:#2f9e44}.pp-day-bar.high i{background:#f08c00}.pp-day-bar.over i{background:#e03131}
.pp-day-cards{flex:1;min-height:60px;padding:6px;overflow:auto}
.pp-day-empty{margin:6px 0;color:#a0aab0;text-align:center}
.pp-card{margin-bottom:6px;padding:6px 7px;border:1px solid #c9d6d2;border-radius:7px;background:#f8fbfa;font-size:12px;cursor:grab}
.pp-card.mine{border-color:var(--mod,#2f7d6c);background:#eef7f3;box-shadow:inset 3px 0 0 var(--mod,#2f7d6c)}
.pp-card.done{cursor:default;opacity:.7}
.pp-card.dragging{opacity:.4}
.pp-card-body{margin:2px 0;color:#4a5a62;overflow-wrap:anywhere}
.pp-card-foot{display:flex;align-items:center;justify-content:space-between;gap:6px}
.pp-card-done{color:#2b8a3e}
.pp-nudge{width:24px;height:22px;margin-left:3px;padding:0;border:1px solid #c9d6d2;border-radius:5px;background:#fff;cursor:pointer}
.pp-nudge:hover{border-color:var(--mod,#2f7d6c)}
.pr-pp tbody th small,.pr-pp thead th small{text-transform:none;letter-spacing:0}
.pr-plan-views{align-self:flex-start;flex:none}
.pr-pp{width:auto;min-width:0!important}
.pr-pp thead th:first-child,.pr-pp tbody th{width:210px;min-width:210px;max-width:230px}
.pr-pp thead th:not(:first-child),.pr-pp-cell{width:230px;min-width:190px;max-width:280px}
.pr-pp-wrap{width:fit-content;max-width:100%}
/* A line's time on a machine, and the month calendar beside a machine's week. */
.pp-time{padding:1px 6px;border:1px dashed transparent;border-radius:5px;background:transparent;color:inherit;font:inherit;font-weight:700;cursor:pointer}
.pp-time:hover,.pp-time:focus{border-color:var(--mod,#2f7d6c);background:#fff}
.pp-time.none{border-color:#e8a33d;background:#fff8e6;color:#8a4b00;font-weight:600}
.pp-time-fields{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.pp-time-fields .ow-field{margin:0}
.pp-time-fields input{width:120px}
.pp-time-x{padding-bottom:9px;color:#4a5a62}
.pp-time-show{padding-bottom:9px;font-weight:700}
.pp-machine-layout{display:flex;flex:1;gap:10px;min-height:0}
.pp-machine-layout .pp-board{flex:1;min-width:0}
.pp-machine-dialog .pr-plan-bar .ow-button svg{width:14px;height:14px;vertical-align:-2px}
.pp-machine-dialog .pr-plan-bar .ow-button.active{background:var(--mod-soft,#e8f3f0);border-color:var(--mod,#2f7d6c)}
.pp-month{flex:none;width:300px;padding:10px;border:1px solid #d9e2e0;border-radius:8px;background:#fff;overflow:auto}
.pp-month header{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.pp-month header b{flex:1;text-align:center}
.pp-month-close{position:static;width:26px;height:26px}
.pp-month-hint{margin:0 0 8px;font-size:12px;color:#4a5a62}
.pp-month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:8px}
.pp-month-grid>span{font-size:10.5px;font-weight:700;color:#6b787d;text-align:center;text-transform:uppercase}
.pp-mday{display:flex;flex-direction:column;align-items:center;justify-content:center;height:40px;padding:0;border:1px solid #e3e9e7;border-radius:6px;background:#fff;color:inherit;font:inherit;cursor:pointer}
.pp-mday b{font-size:13px}
.pp-mday small{height:12px;font-size:10px;color:#4a5a62}
.pp-mday.other{opacity:.45}
.pp-mday.sun{background:#f4f4f4}
.pp-mday.week{background:var(--mod-soft,#eef6f3)}
.pp-mday.today{border-color:#f0c040;box-shadow:inset 0 -3px 0 #f0c040}
.pp-mday.ok{box-shadow:inset 0 -3px 0 #2f9e44}.pp-mday.high{box-shadow:inset 0 -3px 0 #f08c00}.pp-mday.over{box-shadow:inset 0 -3px 0 #e03131;background:#fff0f0}
.pp-mday.from{outline:2px solid var(--mod,#2f7d6c);outline-offset:-2px}
.pp-mday:hover,.pp-mday.drop{border-color:var(--mod,#2f7d6c);background:#f2faf6}
.pp-card.moving{outline:2px dashed var(--mod,#2f7d6c);outline-offset:1px}
.pr-pp-time{padding:0;border:0;background:none;color:inherit;font:inherit;font-size:11px;text-decoration:underline dotted;cursor:pointer}
.pr-pp-time.none{color:#8a4b00;font-weight:600}
.pp-card-foot{flex-wrap:wrap;row-gap:4px}
.pp-card-foot>span{display:inline-flex;flex:none;margin-left:auto}
.pp-time-dialog{width:min(620px,94vw)}
.pp-time-mode{display:flex;align-items:flex-start;gap:8px;margin:10px 0 6px;cursor:pointer}
.pp-time-mode input{width:16px;height:16px;min-height:0;margin:2px 0 0;flex:none}
.pp-time-mode small{display:block;margin-top:2px;color:#6b787d;font-size:11.5px}
.pp-time-fields{margin-left:24px}
.pp-time-fields.off{opacity:.5}
.pp-time-drop{display:flex;align-items:center;gap:6px;margin:10px 0 0 24px;font-size:12.5px}
.pp-time-drop input{width:16px;height:16px;min-height:0;margin:0}
/* Moving a line's day: units, next steps, delivery. */
.pp-move-dialog{width:min(640px,94vw)}
.pp-move-dialog #pp-move-qty{width:80px;margin:0 4px;padding:3px 6px}
.pp-move-next{margin-top:12px;padding:8px 10px;border:1px solid #f1d39b;border-radius:8px;background:#fffaf0}
.pp-move-next p{margin:0 0 4px}
.pp-move-next ul{margin:0 0 4px;padding-left:18px}
.pp-move-next .pp-time-drop{margin-left:0}
.pp-move-late{margin-top:12px;padding:8px 10px;border:1px solid #f1b2a6;border-radius:8px;background:#fff0f0;color:#8a1f12}
.pr-pp-due{color:#4a5a62}
.pr-pp-due.late{color:#c92a2a;font-weight:700}
.pr-pp-cell.past-due{box-shadow:inset 0 -3px 0 #e03131}
.pr-pp-cell.past-due .pr-pp-date{color:#a3321f}
.pp-next-date{padding:2px 6px;font:inherit;font-size:12.5px}
.pp-next-state,.pr-pp-unscheduled{color:#b45309;font-weight:600}
/* Board: BOM, material, indent and machine schedule of the lines still to make (erp/production_bom.py) */
.pr-board-facts{font-size:12px;line-height:17px}
.pr-board-facts>span,.pr-board-facts .pr-cell-link>span{display:block}
.pr-ok-text{color:#15803d;font-weight:600}
.pr-tag.pr-ok{background:#dcfce7;color:#166534}
.pr-cell-link .pr-tag{margin:0 0 2px}
.pr-cell-action{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:3px 8px;border:1px solid var(--mod,#2f7d6c);border-radius:6px;background:#fff;color:var(--mod-ink,#2d4b44);font:inherit;font-size:11.5px;font-weight:600;line-height:16px;cursor:pointer}
.pr-cell-action svg{width:12px;height:12px}
.pr-cell-action:hover:not(:disabled),.pr-cell-action:focus-visible{background:var(--mod,#2f7d6c);color:#fff}
.pr-cell-action:disabled{opacity:.5;cursor:not-allowed}
.pr-cell-link{display:block;width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.pr-cell-link:hover .ow-secondary,.pr-cell-link:focus-visible .ow-secondary{text-decoration:underline}
.pr-indent{display:block;font-size:11.5px;font-weight:600}
.pr-indent small{font-weight:400;color:#6b7a8c}
/* BOM and material windows (web/production_bom.js) */
.pb-dialog{width:min(1120px,calc(100vw - 16px));height:auto;max-height:calc(100dvh - 16px);margin:auto}
.pb-lead{margin:0 0 6px;font-size:13px}
.pb-title{margin:16px 0 6px;font-size:13.5px}
.pb-title small{font-weight:400;color:#6b7a8c}
.pb-wrap{overflow-x:auto}
.pb-table{width:100%;min-width:640px;border-collapse:collapse;table-layout:fixed;font-size:12.5px}
.pb-table th{padding:6px 8px;border-bottom:2px solid #dfe5ea;background:#f6f8fa;color:#4a5a62;font-size:11px;letter-spacing:.02em;text-align:left;text-transform:uppercase}
.pb-table td{padding:6px 8px;border-bottom:1px solid #edf0f3;vertical-align:top;overflow-wrap:anywhere}
.pb-table td small{display:block;color:#6b7a8c;font-size:11px}
.pb-table input{width:100%;min-height:0;height:28px;padding:3px 6px;font:inherit;font-size:12.5px}
.pb-table tr.pb-fixed td{background:#f8fafc}
.pb-table tr.pb-short td{background:#fff5f4}
.pb-table tr.pb-done td{color:#8a969c}
.pb-numbers th:nth-child(n+4){text-align:right}
.pb-ok{color:#15803d;font-weight:600}
.pb-missing{color:#b45309;font-weight:600}
.pb-part-add{margin-top:8px;max-width:520px}
.pb-part-add input{width:100%}
.pb-actions{display:flex;align-items:center;gap:10px;margin-top:12px}
.pb-indent{display:inline-block;margin-right:12px;font-weight:600}
.pb-indent small{font-weight:400;color:#6b7a8c}
.pb-status{margin:4px 0 10px;padding:8px 12px;border-radius:8px;border:1px solid #d5dde6;background:#f8fafc;font-size:12.5px}
.pb-status-incomplete{border-color:#f5c27a;background:#fff8eb;color:#7a4b06}
.pb-status-complete{border-color:#9fd8b1;background:#f0fbf3;color:#14532d}
.pb-status-none{border-color:#f0b7ad;background:#fff4f2;color:#8a2a1a}
.pb-table tr.pb-unmapped td{background:#fffaf0}
.pb-general-actions{white-space:nowrap}
.pb-general-actions .ow-remove{margin-left:6px}
.pb-counts{margin:0 0 10px;font-size:12.5px}
.pb-move{white-space:nowrap}
.pb-move .pw-mini{min-width:26px;padding:0 6px}
.pb-table select{width:100%;min-height:0;height:28px;padding:2px 6px;font:inherit;font-size:12.5px}
.pb-map-code{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px}
.pb-map-code .pw-picker{flex:1;min-width:260px;max-width:460px}
.pb-map-code .pw-picker input{width:100%}
.pb-map-qty{display:inline-flex;align-items:center;gap:6px;font-size:12.5px}
.pb-map-qty input{width:80px;height:30px}
.pb-map-note{margin:6px 0;padding:8px 12px;border:1px solid #f5c27a;border-radius:8px;background:#fff8eb;font-size:12.5px}
.pb-map-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px}
.pb-map-tools input{flex:1;min-width:220px;max-width:420px;height:30px;padding:3px 8px}
.pb-map-tools select{height:30px}
.pb-map-table tbody tr{cursor:pointer}
.pb-map-table tbody tr:hover td{background:#f4f8ff}
.pb-map-table tr.pb-ticked td{background:#eaf2ff}
.pb-map-table input[type=checkbox]{width:16px;height:16px;margin:0}
/* Multi-level BOMs: a tree, an SFG's own parts indented under it, opened and closed with ▾ / ▸ */
.pb-tree{display:flex;align-items:baseline;gap:2px;padding-left:calc(var(--level, 0) * 20px)}
.pb-twist{flex:none;width:20px;height:20px;padding:0;border:0;border-radius:4px;background:none;color:#2d6cdf;font-size:15px;line-height:20px;cursor:pointer}
.pb-twist:hover{background:#e7edf3}
.pb-twist[aria-expanded=true]::before{content:'\25BE'}
.pb-twist[aria-expanded=false]::before{content:'\25B8'}
.pb-twist-gap{flex:none;display:inline-block;width:20px}
.pb-arrow{flex:none;margin-right:4px;color:#9aa7b2}
.pb-levels{margin:0 0 10px}
.pb-levels-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px}
.pb-levels-tools{font-size:12px;white-space:nowrap}
.pb-table tr.pb-node-root td{background:#eef3f8;font-weight:600}
.pb-table tr.pb-level-part td{background:#f6f9fd}
.pb-table tr.pb-expected td{background:#fbfcfd;color:#8a969c;font-style:italic}
.pb-table tr.pb-sub td{padding-top:3px;padding-bottom:3px;border-bottom-style:dashed;background:#fbfcfd;color:#4a5a62}
.pb-general-table .pb-next{display:block;margin-top:4px}
.pb-gl-part{display:flex;align-items:center;gap:2px}
.pb-gl-part input{flex:1;min-width:0}
/* The item's technical details on the BOM window's header line (white on the coloured bar) */
#pb-bom-dialog>.ow-dialog-head{align-items:flex-start}
.pb-head{min-width:0}
.pb-head .pb-head-tech{margin-top:3px;font-size:12.5px;line-height:18px;color:#fff}
.pb-head .pb-head-tech .ow-tech-part em{color:#ffffffc7}
.pb-head .pb-head-tech .ow-tech-part::before{color:#ffffff99}
/* SFG item codes (web/production_sfg.js) */
.sfg-level{display:inline-block;min-width:26px;padding:1px 6px;border-radius:9px;font-size:11px;font-weight:700;text-align:center;color:#fff;background:#6b7a8c;vertical-align:middle}
.sfg-level-3{background:#2d6cdf}.sfg-level-4{background:#7a4bd1}.sfg-level-5{background:#c26a12}
.sfg-dialog{width:min(1180px,calc(100vw - 24px))}
.sfg-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.sfg-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;border:2px solid #dfe5ea;border-radius:10px;background:#fff;text-align:left;cursor:pointer;font:inherit}
.sfg-card:hover{border-color:#9db4d6}.sfg-card.active{border-color:#2d6cdf;background:#f2f7ff}
.sfg-card b{font-size:14px}.sfg-card small{color:#4a5a62;font-size:12px;line-height:16px}.sfg-card em{color:#6b7a8c;font-size:11.5px}
.sfg-details{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.sfg-detail{padding:8px 10px;border:1px solid #dfe5ea;border-radius:8px;background:#fbfcfd}
.sfg-detail.chosen{border-color:#9fd8b1;background:#f4fbf6}.sfg-detail.needed{border-color:#f5c27a}
.sfg-detail label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600}
.sfg-detail label small{font-weight:400;color:#6b7a8c}
.sfg-detail select,.sfg-extra select,.sfg-extra input{height:30px;padding:3px 6px;font:inherit;font-size:12.5px}
.sfg-hint{display:block;margin-top:3px;color:#6b7a8c;font-size:11px;line-height:14px}
.sfg-add-link{margin-top:4px;font-size:11.5px}
.sfg-add{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.sfg-add input{flex:1;min-width:70px;height:28px;padding:3px 6px}.sfg-add select{height:28px}
.sfg-preview{margin-top:12px;padding:10px 12px;border:1px solid #c9d6e8;border-radius:10px;background:#f6f9fd}
.sfg-chips{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px}
.sfg-chip{display:flex;flex-direction:column;align-items:center;min-width:44px;padding:4px 6px;border:1px solid #c9d6e8;border-radius:6px;background:#fff}
.sfg-chip b{font-size:16px}.sfg-chip small{font-size:10px;color:#6b7a8c;white-space:nowrap}
.sfg-chip.missing{border-color:#e5a14a;background:#fff8eb}.sfg-chip.missing b{color:#b4580c}.sfg-chip.empty b{color:#a7b1bf}
.sfg-equals{font-size:18px;color:#6b7a8c;padding:0 4px 12px}
.sfg-code{font-size:22px;letter-spacing:.04em;padding-bottom:10px}
.sfg-name{margin:8px 0;display:flex;gap:8px;align-items:baseline}.sfg-name span{color:#6b7a8c;font-size:12px}.sfg-name b{font-size:14px}
.sfg-extra{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.sfg-extra label{display:flex;align-items:center;gap:6px;font-size:12.5px}
.sfg-extra input[data-sfg-remarks],.sfg-extra input[data-sfg-item="remarks"]{min-width:260px}
.sfg-state{margin:8px 0 0;padding:6px 10px;border-radius:6px;font-size:12.5px}
.sfg-state.ready{background:#f0fbf3;color:#14532d}.sfg-state.waiting{background:#fff8eb;color:#7a4b06}.sfg-state.exists{background:#fff4f2;color:#8a2a1a}
.sfg-top{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px}
.sfg-detail-table{min-width:0;margin-top:8px}.sfg-detail-table th{width:38%;text-transform:none;font-size:12px;letter-spacing:0}
.sfg-parents{display:flex;flex-wrap:wrap;gap:6px}
.sfg-parent{display:flex;flex-direction:column;align-items:flex-start;padding:5px 9px;border:1px solid #dfe5ea;border-radius:8px;background:#fff;cursor:pointer;font:inherit}
.sfg-parent small{color:#6b7a8c;font-size:11px}
.sfg-active{font-weight:400}
.sfg-bom{margin-top:14px;border-top:1px solid #dfe5ea;padding-top:8px}
.sfg-detail-head{display:block}.sfg-detail.own{border-style:dashed}.sfg-scoped{margin-left:6px;font-style:normal;font-weight:400;font-size:11px;color:#0f766e}
.sfg-more{margin:8px 0 0;font-size:12.5px;color:#4a5a62}
.sfg-param-tabs{margin-bottom:10px}
.sfg-format-row{align-items:center}.sfg-format{min-width:70px}.sfg-format b{font-size:13px}.sfg-format.own{border-color:#5eead4;background:#effcf9}
.sfg-plus{color:#6b7a8c;font-weight:700}
.sfg-param-table{margin-top:12px}.sfg-param-table td{vertical-align:top;font-size:12.5px}.sfg-param-table td:first-child{width:28px;color:#6b7a8c}
.sfg-param-table .sfg-hint{max-width:320px}.sfg-param-table tr.sfg-editing td{background:#fff8db}
.sfg-tag{display:inline-block;margin-left:4px;padding:0 6px;border-radius:8px;background:#eef1f5;color:#4a5a62;font-size:10.5px;font-weight:600}
.sfg-tag.own{background:#d9f7f0;color:#0f5f58}
.sfg-param-form{margin-top:14px;padding:12px 14px;border:1px solid #9fd8cc;border-radius:10px;background:#f6fdfb}
.sfg-lock{margin:0 0 8px;padding:6px 10px;border-radius:6px;background:#fff8eb;color:#7a4b06;font-size:12.5px}
.sfg-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
.sfg-field{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600}.sfg-field small{font-weight:400;color:#6b7a8c}
.sfg-field input,.sfg-field select{height:30px;padding:3px 8px;font:inherit;font-size:12.5px;font-weight:400}
.sfg-choice{margin:0;padding:6px 10px 8px;border:1px solid #dfe5ea;border-radius:8px;background:#fff}.sfg-choice legend{padding:0 4px;font-size:12.5px;font-weight:600}
.sfg-choice[disabled]{opacity:.65}
.sfg-option{display:flex;gap:6px;align-items:flex-start;padding:3px 0;font-size:12.5px;cursor:pointer}.sfg-option.active b{color:#0f766e}
.sfg-wide{grid-column:1 / -1}
.sfg-parts{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:2px 10px;margin:6px 0 0 22px;max-height:170px;overflow:auto}
.sfg-part{display:flex;gap:6px;align-items:center;font-size:12.5px;font-weight:400}
.sfg-values{display:flex;flex-wrap:wrap;gap:4px}.sfg-value{padding:1px 7px;border:1px solid #dfe5ea;border-radius:10px;background:#fff;font-weight:400;font-size:12px}
.sfg-value-rows{display:flex;flex-wrap:wrap;gap:6px 14px}.sfg-value-row{display:flex;gap:4px}
.sfg-value-row input{height:28px;padding:3px 6px;font:inherit;font-size:12.5px;font-weight:400;width:150px}.sfg-value-row input.pw-mono{width:90px}
.sfg-format-line{margin:10px 0 0;font-size:12.5px;color:#4a5a62}.sfg-format-line b{color:#0f766e}
.sfg-form-actions{justify-content:flex-end;margin-top:10px}.sfg-remove{margin-right:auto;color:#a32a1a}
.pb-table tr.pb-group td{background:#eef3f8;font-size:11.5px;font-weight:700;color:#33465e;text-transform:uppercase;letter-spacing:.03em}
tr.pw-inactive td{color:#8a969c}
@media (max-width:800px){.sfg-cards,.sfg-top,.sfg-form-grid{grid-template-columns:1fr}}
