:root { --c-bg: #fafafa; --c-fg: #222; --c-muted: #777; --c-accent: rgba(49, 13, 84, 0.08); --c-accent-strong: #310d54; --c-warn: #ffc107; --c-ok: #4caf50; --c-info: #2196f3; --c-danger: #e53935; --c-edit: #fff8c4; } * { box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background: var(--c-bg); color: var(--c-fg); margin: 0; padding: 1rem 2rem; } h1, h2 { margin: 0.25rem 0; } .topbar { display: flex; justify-content: space-between; align-items: baseline; border-bottom: 2px solid var(--c-accent-strong); padding-bottom: 0.5rem; margin-bottom: 1rem; } .topbar .who { color: var(--c-muted); font-size: 0.9rem; } .sync-time { color: var(--c-muted); font-size: 0.85rem; } /* ----- jobs table ----- */ .jobs-wrap { overflow-x: auto; margin-bottom: 2rem; } table.jobs { width: 100%; border-collapse: collapse; font-size: 1.3rem; } table.jobs th, table.jobs td { padding: 0.5rem 0.75rem; border-bottom: 1px solid #eee; text-align: left; } table.jobs th { background: var(--c-accent-strong); color: #fff; font-weight: 600; font-size: 1rem; text-transform: uppercase; letter-spacing: 0.05em; } table.jobs tbody tr:hover { background: var(--c-accent); } .center { text-align: center; } .right { text-align: right; } .smaller { font-size: 0.9rem; } .empty { text-align: center; color: var(--c-muted); padding: 2rem !important; } tr.status-finished { background: rgba(76, 175, 80, 0.08); } tr.status-shipped { background: rgba(33, 150, 243, 0.08); } tr.status-received { background: rgba(0, 0, 0, 0.04); color: var(--c-muted); } .status-date { font-size: 0.75rem; color: var(--c-muted); margin-top: 0.1rem; } .ack-new { background: var(--c-warn); color: #000; font-weight: 700; border-radius: 4px; } .ack-changed { background: #ff9800; color: #000; font-weight: 700; border-radius: 4px; } .editable { display: inline-block; min-width: 2rem; padding: 0.1rem 0.35rem; border-radius: 3px; cursor: pointer; } .editable:hover { background: var(--c-edit); } .editable:focus { outline: 2px solid var(--c-info); background: var(--c-edit); } .editable.saving { background: orange; } .editable.error { background: var(--c-danger); color: #fff; } input.inline-edit { font-size: inherit; padding: 0.15rem 0.35rem; border: 1px solid var(--c-info); border-radius: 3px; width: 100%; min-width: 4rem; } .actions { white-space: nowrap; } .btn { font-size: 0.9rem; padding: 0.35rem 0.7rem; border: 0; border-radius: 4px; cursor: pointer; color: #fff; font-weight: 600; margin: 0 0.15rem; } .btn-ack { background: var(--c-warn); color: #000; } .btn-finish { background: var(--c-ok); } .btn-ship { background: var(--c-info); } .btn-partial{ background: #ff9800; } .btn-undo { background: #757575; padding: 0.25rem 0.55rem; font-size: 0.8rem; } .btn-delete { background: transparent; color: var(--c-danger); border: 1px solid transparent; padding: 0.1rem 0.45rem; font-size: 1.1rem; line-height: 1; } .btn-delete:hover { background: var(--c-danger); color: #fff; border-color: var(--c-danger); } .btn-receive{ background: var(--c-accent-strong); } .btn-add { background: var(--c-accent-strong); padding: 0.5rem 1.25rem; font-size: 1rem; } .btn-post { background: var(--c-accent-strong); padding: 0.5rem 1rem; font-size: 1rem; } .btn:hover { opacity: 0.9; } .received { color: var(--c-muted); font-style: italic; } /* ----- messages ----- */ .threads-container { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-start; } .thread { border: 1px solid #ddd; border-radius: 6px; margin-bottom: 1.5rem; background: #fff; width: 100%; max-width: 720px; } /* Inside the flex row on PDQ.php, gap handles spacing. */ .threads-container > .thread { margin-bottom: 0; } .thread h2 { margin: 0; padding: 0.5rem 0.75rem; background: var(--c-accent); border-bottom: 1px solid #ddd; font-size: 1rem; } .thread-list { max-height: 280px; overflow-y: auto; padding: 0.5rem 0.75rem; display: flex; flex-direction: column; gap: 0.5rem; } .msg { padding: 0.4rem 0.6rem; border-radius: 5px; max-width: 75%; background: #f1f1f1; align-self: flex-start; } .msg-icg { background: var(--c-accent); align-self: flex-end; } .msg-author { font-weight: 700; margin-right: 0.5rem; } .msg-time { color: var(--c-muted); font-size: 0.75rem; } .msg-body { margin-top: 0.15rem; white-space: pre-wrap; word-wrap: break-word; } .msg-empty { color: var(--c-muted); font-style: italic; padding: 0.5rem; } .thread-compose { display: flex; gap: 0.5rem; padding: 0.5rem 0.75rem; border-top: 1px solid #ddd; background: #fafafa; } .thread-compose input[type="text"] { flex: 1; font-size: 1rem; padding: 0.5rem 0.75rem; border: 1px solid #ccc; border-radius: 4px; } .thread-compose input[type="text"]:focus { outline: 2px solid var(--c-info); } .add-row { margin: 0.5rem 0 1rem; display: flex; gap: 0.5rem; align-items: center; } /* ---------- print layout (vendor schedule on Letter) ---------- */ @media print { @page { size: letter portrait; margin: 0.5in; } body { padding: 0; margin: 0; background: #fff; color: #000; } /* Drop chat, action controls, sync chrome. Keep the H1 so the printed sheet says "Bill's Schedule" or similar at the top. */ .threads-container, .thread, .add-row, .topbar .who, #sync-time { display: none !important; } .topbar { border-bottom: 1pt solid #000; padding-bottom: 0.2rem; margin-bottom: 0.4rem; } .topbar h1 { font-size: 14pt; } /* Hide jobs that are out the door — print is for what still needs doing. */ tr.status-finished, tr.status-shipped, tr.status-received { display: none !important; } /* Trim to the working columns. Ack/Status/Action are always the last 3 columns on both ICG and vendor views, so :nth-last-child covers both. */ table.jobs th:nth-last-child(-n+3), table.jobs td:nth-last-child(-n+3) { display: none !important; } /* Print-friendly table: monochrome, compact, no row stripes. */ .jobs-wrap { overflow: visible; } table.jobs { font-size: 11pt; width: 100%; } table.jobs th, table.jobs td { padding: 0.2em 0.5em; border-bottom: 0.5pt solid #000; } table.jobs th { background: #fff; color: #000; font-size: 10pt; border-bottom: 1pt solid #000; } tr { page-break-inside: avoid; } thead { display: table-header-group; } /* repeat header on each page */ }