:root{--pbx-bg:#f4f7fb;--pbx-primary:#2563eb;--pbx-secondary:#0f766e;--pbx-dark:#0b1220;--pbx-card:#ffffff;--pbx-ink:#0f172a;--pbx-muted:#64748b;--pbx-line:#dbe4ef}
:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#17243b;background:var(--pbx-bg)}.pbx-pwa{max-width:1100px;margin:0 auto;padding:18px;box-sizing:border-box}.pbx-head{background:var(--pbx-dark);color:#fff;border-radius:18px;padding:20px;display:flex;justify-content:space-between;align-items:center;gap:12px}.pbx-head h1{font-size:22px;margin:0}.pbx-head small{opacity:.75}.pbx-card{background:#fff;border-radius:16px;padding:18px;margin-top:16px;box-shadow:0 8px 30px rgba(24,42,71,.08)}.pbx-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.pbx-form{display:grid;gap:12px}.pbx-form label{display:grid;gap:5px;font-weight:650}.pbx-form input,.pbx-form select,.pbx-form textarea{font:inherit;border:1px solid #c7d0dc;border-radius:10px;padding:12px;min-height:44px;box-sizing:border-box}.pbx-btn{border:0;border-radius:10px;padding:12px 16px;background:var(--pbx-primary);color:#fff;font:inherit;font-weight:700;cursor:pointer}.pbx-btn.secondary{background:#e8edf4;color:#17243b}.pbx-btn.danger{background:#b42318}.pbx-actions{display:flex;flex-wrap:wrap;gap:8px}.pbx-task{border:1px solid #e1e7ef;border-radius:13px;padding:14px}.pbx-task h3{margin:0 0 6px}.pbx-status{display:inline-block;border-radius:99px;background:#edf2ff;padding:4px 9px;font-size:12px}.pbx-message{padding:12px;border-radius:10px;margin-top:12px;background:#e9f7ec}.pbx-message.error{background:#fdecec;color:#8a1c1c}.pbx-offline{position:fixed;right:14px;bottom:14px;background:#fff2cc;padding:8px 12px;border-radius:999px;box-shadow:0 4px 18px rgba(0,0,0,.15)}.pbx-table{width:100%;border-collapse:collapse}.pbx-table th,.pbx-table td{text-align:left;padding:9px;border-bottom:1px solid #e6e9ee}.pbx-loading{text-align:center;padding:60px}.pbx-hidden{display:none!important}@media(max-width:600px){.pbx-pwa{padding:10px}.pbx-head{border-radius:12px}.pbx-card{border-radius:12px}.pbx-table{font-size:13px}}
.pbx-head-actions{display:flex;align-items:center;gap:8px}.pbx-head-actions select,.pbx-actions select{font:inherit;border:1px solid #c7d0dc;border-radius:10px;padding:10px;background:#fff;color:#17243b}.pbx-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.pbx-card.metric{margin-top:16px;display:grid;gap:4px}.pbx-card.metric span{font-size:28px;font-weight:800;color:var(--pbx-dark)}.pbx-card.metric small{color:#59677a}.pbx-dialog{border:2px solid #cbd6e4}.pbx-dialog.wide{max-width:100%}.pbx-readonly{background:#f7f9fc;border-radius:12px;padding:14px}.pbx-separator{text-align:center;color:#6b7788;font-weight:700;position:relative}.pbx-separator:before,.pbx-separator:after{content:"";display:inline-block;width:36%;border-top:1px solid #d8dee7;vertical-align:middle;margin:0 8px}.pbx-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:8px!important}.pbx-check input{min-height:auto!important;width:auto}.pbx-check-list{display:grid;gap:8px;border:1px solid #dfe5ed;border-radius:10px;padding:12px;max-height:300px;overflow:auto}.pbx-worker-line{border:1px solid #dfe5ed;border-radius:12px;padding:12px}.pbx-worker-line legend{font-weight:800;padding:0 6px}.pbx-inline-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}.pbx-table-wrap{overflow:auto}.pbx-form textarea{min-height:100px}.pbx-dialog video{width:100%;max-height:360px;background:#000;border-radius:12px}.pbx-status{font-weight:750}.pbx-task p{line-height:1.55}.pbx-btn:focus-visible,.pbx-form input:focus-visible,.pbx-form select:focus-visible,.pbx-form textarea:focus-visible{outline:3px solid #7aa7ff;outline-offset:2px}@media(max-width:600px){.pbx-head{align-items:flex-start}.pbx-head-actions{flex-direction:column;align-items:flex-end}.pbx-actions .pbx-btn{flex:1 1 auto}.pbx-inline-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* CSP-safe utility classes: visual spacing without inline style attributes. */
.pbx-mt-12{margin-top:12px}
.pbx-mt-14{margin-top:14px}
.pbx-break{word-break:break-all;overflow-wrap:anywhere}

.pbx-brand-block{display:flex;align-items:center;gap:12px;min-width:0}.pbx-brand-logo{display:block;max-width:144px;max-height:42px;width:auto;height:auto;object-fit:contain}.pbx-brand-block h1{margin:0}.pbx-brand-block small{display:block;max-width:680px}

/* v17.11.0 structured shop-floor data entry */
.pbx-structured-block{border:1px solid var(--pbx-line,#d9e1ec);border-radius:14px;padding:12px;background:#fbfdff;display:grid;gap:10px}.pbx-structured-block legend{font-weight:850;padding:0 6px}.pbx-hint{margin:0;color:var(--pbx-muted,#667085);font-size:.78rem}.pbx-material-row,.pbx-downtime-row{padding:10px;border:1px solid var(--pbx-line,#e3e8ef);border-radius:12px;background:#fff}.pbx-material-row+.pbx-material-row,.pbx-downtime-row+.pbx-downtime-row{margin-top:4px}

/* v17.14.0 — shop-floor achievement and delivery visibility */
.pbx-task-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.pbx-risk{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:850;background:#edf2f7;color:#475569;white-space:nowrap}.pbx-risk.good{background:#dcfce7;color:#166534}.pbx-risk.warning{background:#ffedd5;color:#9a3412}.pbx-risk.danger{background:#fee2e2;color:#b91c1c}.pbx-progress-line{display:grid;gap:5px;margin:10px 0}.pbx-progress-label{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--pbx-muted)}.pbx-progress-label strong{color:var(--pbx-ink);font-size:13px}.pbx-progress-track{height:10px;background:#e6ecf4;border-radius:999px;overflow:hidden}.pbx-progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--pbx-primary),var(--pbx-secondary))}.pbx-progress-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:9px 0}.pbx-progress-facts span{display:grid;gap:2px;padding:7px;background:#f7f9fc;border-radius:9px;color:#64748b;font-size:9px}.pbx-progress-facts b{color:#17243b;font-size:11px}.pbx-forecast{font-size:10px;color:#59677a;border-top:1px solid #e8edf3;padding-top:8px;margin-top:8px}.pbx-readonly .pbx-progress-line{margin:12px 0}.pbx-card.metric .pbx-mini-progress{height:5px;background:#e6ecf4;border-radius:999px;overflow:hidden;margin-top:5px}.pbx-card.metric .pbx-mini-progress span{display:block;height:100%;background:var(--pbx-primary)}@media(max-width:600px){.pbx-progress-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.pbx-task-head{align-items:center}}

/* PRINTBOX percentage utilities - CSP-safe dynamic progress */
.pbx-pct-0{width:0%}
.pbx-pct-1{width:1%}
.pbx-pct-2{width:2%}
.pbx-pct-3{width:3%}
.pbx-pct-4{width:4%}
.pbx-pct-5{width:5%}
.pbx-pct-6{width:6%}
.pbx-pct-7{width:7%}
.pbx-pct-8{width:8%}
.pbx-pct-9{width:9%}
.pbx-pct-10{width:10%}
.pbx-pct-11{width:11%}
.pbx-pct-12{width:12%}
.pbx-pct-13{width:13%}
.pbx-pct-14{width:14%}
.pbx-pct-15{width:15%}
.pbx-pct-16{width:16%}
.pbx-pct-17{width:17%}
.pbx-pct-18{width:18%}
.pbx-pct-19{width:19%}
.pbx-pct-20{width:20%}
.pbx-pct-21{width:21%}
.pbx-pct-22{width:22%}
.pbx-pct-23{width:23%}
.pbx-pct-24{width:24%}
.pbx-pct-25{width:25%}
.pbx-pct-26{width:26%}
.pbx-pct-27{width:27%}
.pbx-pct-28{width:28%}
.pbx-pct-29{width:29%}
.pbx-pct-30{width:30%}
.pbx-pct-31{width:31%}
.pbx-pct-32{width:32%}
.pbx-pct-33{width:33%}
.pbx-pct-34{width:34%}
.pbx-pct-35{width:35%}
.pbx-pct-36{width:36%}
.pbx-pct-37{width:37%}
.pbx-pct-38{width:38%}
.pbx-pct-39{width:39%}
.pbx-pct-40{width:40%}
.pbx-pct-41{width:41%}
.pbx-pct-42{width:42%}
.pbx-pct-43{width:43%}
.pbx-pct-44{width:44%}
.pbx-pct-45{width:45%}
.pbx-pct-46{width:46%}
.pbx-pct-47{width:47%}
.pbx-pct-48{width:48%}
.pbx-pct-49{width:49%}
.pbx-pct-50{width:50%}
.pbx-pct-51{width:51%}
.pbx-pct-52{width:52%}
.pbx-pct-53{width:53%}
.pbx-pct-54{width:54%}
.pbx-pct-55{width:55%}
.pbx-pct-56{width:56%}
.pbx-pct-57{width:57%}
.pbx-pct-58{width:58%}
.pbx-pct-59{width:59%}
.pbx-pct-60{width:60%}
.pbx-pct-61{width:61%}
.pbx-pct-62{width:62%}
.pbx-pct-63{width:63%}
.pbx-pct-64{width:64%}
.pbx-pct-65{width:65%}
.pbx-pct-66{width:66%}
.pbx-pct-67{width:67%}
.pbx-pct-68{width:68%}
.pbx-pct-69{width:69%}
.pbx-pct-70{width:70%}
.pbx-pct-71{width:71%}
.pbx-pct-72{width:72%}
.pbx-pct-73{width:73%}
.pbx-pct-74{width:74%}
.pbx-pct-75{width:75%}
.pbx-pct-76{width:76%}
.pbx-pct-77{width:77%}
.pbx-pct-78{width:78%}
.pbx-pct-79{width:79%}
.pbx-pct-80{width:80%}
.pbx-pct-81{width:81%}
.pbx-pct-82{width:82%}
.pbx-pct-83{width:83%}
.pbx-pct-84{width:84%}
.pbx-pct-85{width:85%}
.pbx-pct-86{width:86%}
.pbx-pct-87{width:87%}
.pbx-pct-88{width:88%}
.pbx-pct-89{width:89%}
.pbx-pct-90{width:90%}
.pbx-pct-91{width:91%}
.pbx-pct-92{width:92%}
.pbx-pct-93{width:93%}
.pbx-pct-94{width:94%}
.pbx-pct-95{width:95%}
.pbx-pct-96{width:96%}
.pbx-pct-97{width:97%}
.pbx-pct-98{width:98%}
.pbx-pct-99{width:99%}
.pbx-pct-100{width:100%}
