@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap";:root{--ink:#16241f;--paper:#f6f5f1;--panel:#fff;--line:#e2e0d8;--teal:#1e4d4b;--teal-dim:#2c6663;--coral:#e8734a;--amber:#c98a1f;--green:#3f7d4f;--blue:#3a63ad;--purple:#7c5cbf;--muted:#6b7570;--radius:8px;--font-display:"Space Grotesk", sans-serif;--font-body:"Inter", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;margin:0}p{margin:0}button{font-family:var(--font-body);cursor:pointer}a{color:inherit}input,select,textarea{font-family:var(--font-body);font-size:14px}::selection{background:var(--coral);color:#fff}:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--teal);color:#eef4f2;flex-direction:column;flex-shrink:0;width:220px;padding:24px 16px;display:flex}.sidebar-brand{font-family:var(--font-display);color:#eef4f2;flex-direction:column;align-items:center;gap:8px;margin-bottom:32px;padding:4px 8px 0;font-size:15px;font-weight:700;display:flex}.sidebar-mark{background:var(--coral);color:#fff;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:14px;font-weight:700;display:flex}.brand-logo{flex-shrink:0;height:44px;display:block}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.sidebar-link{border-radius:var(--radius);color:#cfe1dd;align-items:center;gap:9px;padding:9px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s;display:flex}.sidebar-link:hover{color:#fff;background:#ffffff14}.sidebar-link.active{color:#fff;background:#ffffff24}.sidebar-footer{color:#b7ccc7;border-top:1px solid #ffffff24;margin-top:auto;padding:12px 8px 0;font-size:13px}.sidebar-footer button{color:#eef4f2;text-underline-offset:2px;background:0 0;border:none;margin-top:8px;padding:0;font-size:13px;text-decoration:underline}.main{flex:1;min-width:0;padding:32px 40px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:24px;display:flex}.page-header h1{font-size:24px}.page-header .subtitle{color:var(--muted);margin-top:4px;font-size:14px}.btn{border-radius:var(--radius);border:none;align-items:center;gap:6px;padding:9px 16px;font-size:14px;font-weight:600;transition:transform .1s,box-shadow .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover{background:var(--teal-dim)}.btn-accent{background:var(--coral);color:#fff}.btn-accent:hover{filter:brightness(1.05)}.btn-ghost{color:var(--teal);border:1px solid var(--line);background:0 0}.btn-ghost:hover{border-color:var(--teal)}.btn-sm{padding:6px 12px;font-size:13px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px}.stat-grid{grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:24px;display:grid}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.stat-card .num{font-family:var(--font-display);font-size:28px;font-weight:700}.stat-card .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;font-size:12px}.ticket-filters{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.ticket-filters select,.ticket-filters input{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:7px 10px}.ticket-filters input[type=text]{min-width:220px}.ticket-table{border-collapse:collapse;width:100%}.panel:has(.ticket-table){overflow-x:auto}@media (width<=700px){.ticket-table{min-width:640px}}.ticket-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);padding:10px 14px;font-size:12px}.ticket-table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:12px 14px;font-size:14px}.ticket-table tr:last-child td{border-bottom:none}.ticket-table tr.clickable{cursor:pointer}.ticket-table tr.clickable:hover{background:#faf9f6}.ticket-num{color:var(--muted);font-variant-numeric:tabular-nums}.pill{white-space:nowrap;border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.pill-status-Open{color:var(--blue);background:#e6edf9}.pill-status-InProgress{color:var(--amber);background:#fbf1dc}.pill-status-OnHold{color:var(--muted);background:#f1ece3}.pill-status-Complete,.pill-status-Collected{color:var(--green);background:#e6f2e8}.pill-status-Closed{color:#777;background:#eee}.pill-priority-Low{color:#5c6a60;background:#eef1ee}.pill-priority-Medium{color:var(--blue);background:#e6edf9}.pill-priority-High{color:var(--coral);background:#fbeadf}.pill-priority-Urgent{color:#c23f1c;background:#fbe1db}.auth-wrap{background:var(--teal);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--paper);border-radius:14px;width:100%;max-width:380px;padding:36px 32px}.auth-brand{flex-direction:column;align-items:center;gap:10px;margin-bottom:28px;display:flex}.auth-card h1{margin-bottom:4px;font-size:20px}.auth-card .subtitle{color:var(--muted);margin-bottom:24px;font-size:14px}.field{margin-bottom:14px}.field label{margin-bottom:5px;font-size:13px;font-weight:600;display:block}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%;padding:9px 11px}.field textarea{resize:vertical;min-height:90px}.password-field-wrap{position:relative}.password-field-wrap input{padding-right:40px}.password-toggle{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:4px;display:flex;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.password-toggle:hover{color:var(--ink)}.error-banner{color:#a23a1c;border-radius:var(--radius);background:#fbe1db;margin-bottom:14px;padding:10px 12px;font-size:13px}.success-banner{color:#2b5c38;border-radius:var(--radius);background:#e6f2e8;justify-content:space-between;align-items:center;margin-bottom:18px;padding:10px 14px;font-size:13px;font-weight:600;display:flex}.success-banner button{color:#2b5c38;opacity:.6;background:0 0;border:none;font-size:16px;line-height:1}.success-banner button:hover{opacity:1}.auth-switch{color:var(--muted);text-align:center;margin-top:18px;font-size:13px}.auth-switch button{color:var(--teal);background:0 0;border:none;font-weight:600;text-decoration:underline}.role-toggle{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;display:flex;overflow:hidden}.role-toggle button{color:var(--muted);background:#fff;border:none;flex:1;padding:8px;font-size:13px;font-weight:600}.role-toggle button.active{background:var(--teal);color:#fff}.detail-grid{grid-template-columns:1fr 260px;align-items:start;gap:24px;display:grid}.thread{flex-direction:column;gap:14px;margin-top:18px;display:flex}.comment{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:14px 16px}.comment.note{background:#fbf1dc;border-color:#f0dfb6}.comment-meta{color:var(--muted);align-items:center;gap:8px;margin-bottom:6px;font-size:12px;display:flex}.comment-body{white-space:pre-wrap;font-size:14px;line-height:1.5}.side-block{margin-bottom:14px;padding:16px}.side-block h4{text-transform:uppercase;color:var(--muted);letter-spacing:.04em;margin-bottom:10px;font-size:12px}.side-row{justify-content:space-between;align-items:center;margin-bottom:10px;font-size:14px;display:flex}.side-row label{color:var(--muted);font-size:13px}.side-row select{border:1px solid var(--line);border-radius:6px;padding:5px 8px}.empty-state{text-align:center;color:var(--muted);padding:60px 20px}.empty-state h3{color:var(--ink);margin-bottom:6px}.reply-box textarea{border:1px solid var(--line);border-radius:var(--radius);resize:vertical;width:100%;min-height:90px;margin-bottom:8px;padding:10px 12px}.reply-actions{justify-content:space-between;align-items:center;display:flex}.checkbox-label{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.kb-search{border:1px solid var(--line);border-radius:var(--radius);max-width:420px;color:var(--muted);background:#fff;align-items:center;gap:8px;margin-bottom:24px;padding:9px 12px;display:flex}.kb-search input{border:none;outline:none;flex:1;font-size:14px}.kb-category-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:10px;font-size:13px}.kb-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.kb-card{cursor:pointer;padding:16px;transition:border-color .15s,transform .1s}.kb-card:hover{border-color:var(--teal)}.kb-card h4{margin-bottom:6px;font-size:15px}.kb-card p{color:var(--muted);font-size:13px;line-height:1.5}.kb-hint{color:var(--teal-dim);border-radius:var(--radius);background:#eaf2f1;border:1px solid #d3e5e3;align-items:center;gap:8px;max-width:560px;margin-bottom:18px;padding:10px 12px;font-size:13px;text-decoration:none;display:flex}.kb-hint:hover{background:#dfece9}.skeleton-row{border-bottom:1px solid var(--line);background:linear-gradient(90deg,#f4f3ef 25%,#efeee9 37%,#f4f3ef 63%) 0 0/400% 100%;height:44px;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}.form-section{margin-bottom:28px}.form-section h3{border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:10px;font-size:15px}.form-grid{grid-template-columns:1fr 1fr;gap:18px 32px;display:grid}.form-grid .span-2{grid-column:1/-1}.form-grid .field{margin-bottom:0}.field label .req{color:var(--coral);margin-left:2px}@media (width<=700px){.form-grid{grid-template-columns:1fr}}.attachment-list{flex-direction:column;gap:8px;margin-top:10px;display:flex}.attachment-row{border:1px solid var(--line);border-radius:var(--radius);background:#fff;justify-content:space-between;align-items:center;padding:9px 12px;font-size:13px;display:flex}.attachment-row .name{color:var(--ink);align-items:center;gap:8px;display:flex}.attachment-row .meta{color:var(--muted);font-size:12px}.attachment-row .actions{align-items:center;gap:10px;display:flex}.attachment-row a,.attachment-row button{color:var(--teal);background:0 0;border:none;font-size:12px;font-weight:600;text-decoration:none}.attachment-row button.danger{color:var(--coral)}.dropzone{border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;color:var(--muted);cursor:pointer;padding:20px;font-size:13px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.dragover{border-color:var(--teal);background:#f5faf9}.items-table{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}.items-table-header,.items-table-row{grid-template-columns:1fr 60px 1fr 32px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:grid}.items-table-header{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:#f4f3ef;font-size:11px;font-weight:600}.items-table-row{border-top:1px solid var(--line)}.items-table-row button{color:var(--coral);background:0 0;border:none;justify-self:end}.item-add-row{grid-template-columns:1fr 60px 1fr auto;align-items:center;gap:8px;display:grid}.item-add-row input{border:1px solid var(--line);border-radius:var(--radius);padding:7px 10px;font-size:13px}@media (width<=700px){.items-table-header,.items-table-row,.item-add-row{grid-template-columns:1fr}.items-table-header{display:none}}.modal-overlay{z-index:100;background:#16241f8c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:#fff;border-radius:14px;width:100%;max-width:480px;padding:24px}.modal-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.modal-header h3{font-size:16px}.modal-header button{color:var(--muted);background:0 0;border:none}.sign-off-card{flex-direction:column;max-height:85vh;display:flex}.sign-off-scroll{flex:1;min-height:0;overflow-y:auto}.signature-canvas-wrap{border:1.5px dashed var(--line);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}.signature-canvas{touch-action:none;width:100%;height:180px;display:block}.signature-actions{justify-content:space-between;display:flex}.signature-preview{border:1px solid var(--line);border-radius:var(--radius);background:#fff;max-width:260px;padding:8px}.signature-preview img{max-width:100%;display:block}.bar-chart{align-items:flex-end;gap:12px;height:160px;padding-top:10px;display:flex}.bar-chart-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.bar-chart-bar{background:var(--teal);border-radius:4px 4px 0 0;justify-content:center;width:100%;min-height:3px;display:flex;position:relative}.bar-chart-count{color:var(--ink);font-size:11px;font-weight:600;position:absolute;top:-18px}.bar-chart-label{color:var(--muted);white-space:nowrap;margin-top:8px;font-size:11px}.overdue-badge{color:#a23a1c;background:#fbe1db;border-radius:999px;align-items:center;gap:3px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.job-date-badge{color:var(--blue);vertical-align:middle;background:#e6edf9;border-radius:999px;align-items:center;padding:2px 10px;font-size:12px;font-weight:600;display:inline-flex}.bulk-toolbar{background:var(--teal);color:#fff;border-radius:var(--radius);align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;font-size:13px;display:flex}.bulk-toolbar select{border:none;border-radius:6px;padding:6px 10px;font-size:13px}.bulk-toolbar button{color:var(--teal);background:#fff;border:none;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:600}.bulk-toolbar .clear-selection{color:#fff;background:0 0;margin-left:auto;font-weight:400;text-decoration:underline}.attachment-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:32px;height:32px}.audit-item{color:var(--muted);border-bottom:1px solid var(--line);padding:6px 0;font-size:12.5px}.audit-item:last-child{border-bottom:none}.settings-tabs{border-bottom:1px solid var(--line);gap:4px;display:flex}.settings-tab{color:var(--muted);border-bottom:2px solid #0000;padding:8px 16px;font-size:13px;font-weight:600}.settings-tab.active{color:var(--teal);border-bottom-color:var(--teal)}.audit-item strong{color:var(--ink)}.back-link{color:var(--muted);margin-bottom:14px;font-size:13px;text-decoration:none;display:inline-block}.back-link:hover{color:var(--teal)}@media (width<=860px){.app-shell{flex-direction:column}.sidebar{flex-direction:column;align-items:center;width:100%;padding:12px 16px}.sidebar-brand{flex-direction:row;margin-bottom:10px}.sidebar-nav{flex-flow:wrap;justify-content:center;gap:6px}.sidebar-footer{display:none}.main{padding:20px}.stat-grid{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:1fr}.modal-overlay{align-items:stretch;padding:0}.modal-card{border-radius:0;flex-direction:column;width:100%;max-width:none;height:100%;padding:16px;display:flex}.signature-canvas-wrap{margin-bottom:16px}.signature-canvas{height:220px}.dashboard-recent-table th:nth-child(4),.dashboard-recent-table td:nth-child(4),.dashboard-recent-table th:nth-child(5),.dashboard-recent-table td:nth-child(5),.dashboard-recent-table th:nth-child(6),.dashboard-recent-table td:nth-child(6),.dashboard-recent-table th:nth-child(8),.dashboard-recent-table td:nth-child(8){display:none}}
