:root{--plym-black: #1a1c20;--plym-orange: #f26a1b;--plym-sky: #35b6e9;--plym-magenta: #e8336e;--plym-white: #fafafa;--status-scheduled: var(--plym-sky);--status-in-progress: var(--plym-orange);--status-completed: #22c55e;--status-invoiced: #9ca3af;--status-cancelled: #6b7280;--bg: #f4f5f7;--surface: #ffffff;--text: #1a1c20;--text-muted: #6b7280;--radius: 10px;--shadow: 0 1px 3px rgb(0 0 0 / .12);--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text)}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}.plym-header{display:flex;align-items:center;justify-content:space-between;background:var(--plym-black);color:var(--plym-white);padding:.75rem 1rem}.plym-wordmark{display:flex;align-items:baseline;gap:.6rem}.plym-wordmark strong{font-size:1.4rem;letter-spacing:.05em;color:var(--plym-white);border-left:6px solid var(--plym-orange);padding-left:.6rem}.plym-wordmark span{font-size:.8rem;color:var(--plym-sky)}.plym-main{padding:1rem;max-width:1400px;margin:0 auto}.plym-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.plym-modal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:480px;max-height:90vh;overflow-y:auto;padding:1rem}.plym-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.plym-modal-head h3{margin:0}.plym-modal-close{border:none;background:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--text-muted)}.plym-nav{display:flex;gap:.25rem;padding:.25rem 1rem 0;background:var(--plym-black);overflow-x:auto}.plym-nav a{color:var(--plym-white);text-decoration:none;padding:.4rem .7rem;border-radius:6px 6px 0 0;opacity:.75;white-space:nowrap}.plym-nav a.active{background:var(--bg);color:var(--text);opacity:1}.plym-header-right{display:flex;gap:.5rem;align-items:center}.board-toolbar{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem}.board-range{font-weight:600;text-transform:capitalize}.board-error,.form-error{color:var(--plym-magenta)}.board-scroll{overflow-x:auto}.board-grid{display:grid;gap:2px;min-width:900px}@media(max-width:700px){.board-grid{min-width:0}}.board-corner,.board-day,.board-rowlabel,.board-cell{background:var(--surface);padding:.4rem}.board-day{font-weight:600;text-transform:capitalize}.board-day.is-today{color:var(--plym-orange)}.board-rowlabel{font-weight:600}.board-cell{min-height:64px;cursor:pointer;display:flex;flex-direction:column;gap:.35rem}.job-card{border-left:4px solid;border-radius:6px;background:var(--bg);padding:.35rem .5rem;box-shadow:var(--shadow);cursor:pointer;font-size:.85rem;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.job-card.status-scheduled{border-color:var(--status-scheduled)}.job-card.status-in_progress{border-color:var(--status-in-progress)}.job-card.status-completed{border-color:var(--status-completed)}.job-card.status-invoiced{border-color:var(--status-invoiced);color:var(--text-muted)}.job-card.status-cancelled{border-color:var(--status-cancelled)}.job-card.status-cancelled .job-prop,.job-card.status-cancelled .job-services{text-decoration:line-through}.job-card-top{display:flex;justify-content:space-between;align-items:center}.job-wo{font-weight:700}.job-menu-btn{border:none;background:none;cursor:pointer;font-size:1rem;padding:0 .2rem}.job-prop{font-weight:600}.job-services,.job-unit{color:var(--text-muted)}.card-menu{display:flex;flex-direction:column;gap:.4rem}.card-menu button{text-align:left;padding:.6rem .7rem;border:1px solid #e5e7eb;background:var(--surface);border-radius:6px;cursor:pointer;font-size:1rem}.form-field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.6rem}.form-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}.check-row{display:flex;gap:.5rem;align-items:center;padding:.25rem 0}.crud-toolbar{display:flex;gap:.75rem;align-items:center;margin-bottom:.75rem}.crud-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius)}.crud-table th,.crud-table td{text-align:left;padding:.5rem .6rem;border-bottom:1px solid #e5e7eb}.crud-table tr.archived{opacity:.55}.crud-scroll{overflow-x:auto}.job-log summary{cursor:pointer;font-weight:600;margin:.5rem 0}.pay-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.pay-week{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:.75rem}.pay-week>summary{cursor:pointer;padding:.75rem 1rem;font-weight:600}.pay-group{padding:0 1rem .75rem}.pay-group-head{display:flex;justify-content:space-between;gap:.5rem;margin:.75rem 0 .25rem}.pay-group-meta{font-weight:400;color:var(--text-muted)}.pay-rows{list-style:none;margin:0;padding:0}.pay-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem 0;border-top:1px solid var(--bg)}.pay-row-main{display:flex;flex-wrap:wrap;gap:.5rem;align-items:baseline}.pay-row-actions{display:flex;align-items:center;gap:.25rem}.pay-cell{min-width:6rem;text-align:right}.pay-cell:not(.pay-cell-off):not(.pay-cell-edit){text-decoration:underline dotted;border-bottom:1px dotted var(--text-muted)}.pay-cell:not(.pay-cell-off):not(.pay-cell-edit):hover{color:var(--plym-orange)}.pay-row-actions button,.pay-toolbar button,.pay-cell{border:none;background:none;cursor:pointer;font-size:1rem;padding:0 .2rem}.form-error{color:var(--plym-magenta)}.pay-cell-off{color:var(--text-muted)}.pay-cell-edit input{width:6rem}.pay-more{margin-top:.75rem}@media(max-width:640px){.pay-row{flex-direction:column;align-items:stretch}.pay-row-actions{justify-content:flex-end}}.crew-list{display:flex;flex-direction:column;gap:.6rem;max-width:480px}.crew-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem;text-decoration:none;color:var(--text)}.crew-card-top{display:flex;justify-content:space-between;align-items:center}.crew-card-prop{font-weight:600;margin-top:.25rem}.crew-card-meta{color:var(--text-muted);text-transform:capitalize}.status-chip{font-size:.78rem;font-weight:700;padding:.15rem .5rem;border-radius:999px;color:#fff;background:var(--text-muted)}.status-chip.status-scheduled{background:var(--status-scheduled)}.status-chip.status-in_progress{background:var(--status-in-progress)}.status-chip.status-completed{background:var(--status-completed)}.status-chip.status-invoiced{background:var(--status-invoiced)}.status-chip.status-cancelled{background:var(--status-cancelled)}.crew-job-head{display:flex;align-items:center;gap:.75rem}.crew-instructions{background:var(--surface);border-left:4px solid var(--plym-sky);border-radius:6px;padding:.6rem;white-space:pre-wrap}.crew-big-btn{display:block;width:100%;max-width:480px;padding:1rem;font-size:1.15rem;font-weight:700;border:none;border-radius:var(--radius);background:var(--plym-orange);color:#fff;cursor:pointer;margin-top:1rem}.crew-big-btn:disabled{opacity:.6}.crew-big-btn.crew-complete{background:var(--status-completed)}.crew-sections{display:flex;flex-direction:column;gap:1rem;max-width:480px;margin-top:1rem}.crew-section{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem}.crew-section h3{margin-top:0}.crew-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}.crew-row select,.crew-row input[type=text],.crew-row textarea{flex:1}.crew-qty{width:4.5rem}.crew-item-list{list-style:none;padding:0;margin:.5rem 0 0}.crew-item-list li{padding:.35rem 0;border-bottom:1px solid #e5e7eb}.crew-pending{color:var(--plym-orange);font-weight:600}.sync-badge{display:inline-block;padding:.25rem .6rem;border-radius:999px;font-size:.85rem;font-weight:600}.sync-badge.ok{background:#dcfce7;color:#166534}.sync-badge.pending{background:#ffedd5;color:#9a3412}.job-photos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;margin-top:.5rem}.job-photos-grid img{width:100%;border-radius:6px;display:block}.crew-week{margin-top:.75rem}.crew-card-pay{font-weight:600}
