:root{--sidebar-w: 220px;--header-h: 56px;--banner-h: 36px;--green-900: #0f1f0e;--green-800: #1a2e1a;--green-700: #1e3d1b;--green-600: #2d7a24;--green-500: #3a9b2e;--green-400: #5bc04e;--green-100: #e6f4e4;--amber-500: #d4a843;--amber-100: #fef3d1;--amber-700: #8a6d1b;--red-500: #c44d4d;--red-100: #fde8e8;--red-700: #7f2d2d;--blue-500: #3b82f6;--blue-100: #dbeafe;--blue-700: #1e40af;--gray-50: #faf8f5;--gray-100: #f0ede7;--gray-200: #e5e0d8;--gray-300: #ccc5b9;--gray-400: #9a938a;--gray-500: #7a7a7a;--gray-700: #444444;--gray-900: #1a1a1a;--surface: #ffffff;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .1);--max-width: 1440px}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--gray-50);color:var(--gray-900);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.9375rem;line-height:1.5}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.demo-banner{align-items:center;background:var(--green-900);color:var(--gray-300);display:flex;font-size:.8rem;gap:.5rem;height:var(--banner-h);justify-content:center;padding:0 1rem}.demo-banner a{color:var(--green-400);font-weight:600}.shell-main{display:flex;min-height:calc(100vh - var(--banner-h))}.sidebar{background:var(--green-800);color:#c8d6c0;display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;width:var(--sidebar-w)}.sidebar-brand{align-items:center;border-bottom:1px solid rgba(255,255,255,.08);display:flex;gap:.6rem;padding:1.25rem 1rem}.sidebar-brand svg{color:var(--green-400);flex-shrink:0;height:28px;width:28px}.sidebar-brand .name{color:#e8e8e8;font-size:.95rem;font-weight:700}.sidebar-brand .sub{color:var(--gray-400);font-size:.7rem}.sidebar-nav{display:flex;flex:1;flex-direction:column;padding:.75rem 0}.nav-item{align-items:center;border-radius:6px;color:#a8b8a0;display:flex;gap:.75rem;margin:2px .5rem;padding:.65rem 1rem;transition:all .15s}.nav-item:hover{background:#ffffff0f;color:#d0dcc8}.nav-item.active{background:var(--green-700);color:#fff;font-weight:600}.nav-item svg,.mobile-nav svg,.icon{flex-shrink:0;height:18px;width:18px}.nav-item .badge,.pill{background:var(--amber-500);border-radius:999px;color:var(--green-900);font-size:.7rem;font-weight:700;margin-left:auto;padding:.1rem .45rem}.sidebar-user{align-items:center;border-top:1px solid rgba(255,255,255,.08);display:flex;gap:.6rem;padding:1rem}.sidebar-user .avatar{align-items:center;background:var(--green-600);border-radius:50%;color:#fff;display:flex;font-size:.8rem;font-weight:700;height:32px;justify-content:center;width:32px}.sidebar-user .uname{color:#e8e8e8;font-weight:600}.sidebar-user .urole{color:var(--gray-400);font-size:.7rem}.main-column{display:flex;flex:1;flex-direction:column;min-width:0}.topbar{align-items:center;background:var(--surface);border-bottom:1px solid var(--gray-200);display:flex;flex-shrink:0;gap:1rem;height:var(--header-h);padding:0 1.5rem}.topbar h1,.topbar h2{font-size:1.1rem;font-weight:700;margin:0}.topbar .spacer{flex:1}.topbar .today{color:var(--gray-500);font-size:.8rem}.content{flex:1;overflow-y:auto;padding:1.5rem}.page-stack{display:flex;flex-direction:column;gap:1.5rem}.page-section{display:flex;flex-direction:column;gap:1rem}.page-header{align-items:center;display:flex;gap:1rem;justify-content:space-between}.page-header h2,.page-header h3,.page-header h4{margin:0}.page-header p,.muted{color:var(--gray-500);margin:0}.stats,.inv-stats{display:grid;gap:1rem}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.inv-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.card,.stat-card,.dash-panel,.surface-panel,.inv-stat{background:var(--surface);border:1px solid var(--gray-200);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card,.inv-stat{padding:1rem 1.25rem}.stat-card .label,.inv-stat .inv-label,.section-label,.table-head{color:var(--gray-500);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.stat-card .value,.inv-stat .inv-value{font-size:1.75rem;font-weight:800;letter-spacing:-.02em;margin-top:.2rem}.inv-stat .inv-value{font-size:2rem}.stat-card .sub,.inv-stat .inv-sub{color:var(--gray-400);font-size:.75rem;margin-top:.2rem}.value-green{color:var(--green-600)}.value-blue{color:var(--blue-500)}.value-amber{color:var(--amber-700)}.dash-grid{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.panel-head,.table-panel-header{align-items:center;border-bottom:1px solid var(--gray-100);display:flex;justify-content:space-between;padding:.875rem 1.25rem}.panel-head strong,.table-panel-header strong{font-size:.95rem}.panel-body{padding:0}.toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.search-box,.text-input,.select-input,.textarea-input{background:var(--surface);border:1px solid var(--gray-200);border-radius:6px;color:var(--gray-900);outline:none;padding:.55rem .75rem;transition:border-color .15s}.search-box:focus,.text-input:focus,.select-input:focus,.textarea-input:focus{border-color:var(--green-600)}.search-box{flex:1;max-width:360px}.textarea-input{min-height:96px;resize:vertical;width:100%}.btn,.filter-btn{align-items:center;border:1px solid transparent;border-radius:6px;display:inline-flex;font-size:.8rem;font-weight:600;gap:.35rem;justify-content:center;padding:.5rem .85rem;transition:all .15s}.btn-primary{background:var(--green-600);border-color:var(--green-600);color:#fff}.btn-primary:hover{background:var(--green-700)}.btn-outline,.filter-btn{background:transparent;border-color:var(--gray-200);color:var(--gray-700)}.btn-outline:hover,.filter-btn:hover{background:var(--gray-50);border-color:var(--gray-300)}.filter-btn.active{background:var(--green-100);border-color:var(--green-600);color:var(--green-600)}.table-shell{overflow:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{border-bottom:1px solid var(--gray-100);padding:.7rem 1rem;text-align:left;vertical-align:top}.data-table th{background:var(--gray-50);border-bottom-color:var(--gray-200);color:var(--gray-500);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.data-table tr:last-child td{border-bottom:none}.data-table.clickable tbody tr{cursor:pointer;transition:background .1s}.data-table.clickable tbody tr:hover{background:var(--gray-50)}.tag{border-radius:4px;display:inline-flex;font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.15rem .45rem;text-transform:uppercase}.tag-vip{background:var(--amber-100);color:var(--amber-700)}.tag-dnr{background:var(--red-100);color:var(--red-700)}.status-dot{align-items:center;display:inline-flex;font-size:.8rem;font-weight:500;gap:.35rem}.status-dot:before{border-radius:999px;content:"";height:8px;width:8px}.status-lead:before,.status-scheduled:before{background:var(--blue-500)}.status-active:before,.status-in-progress:before{background:var(--green-500)}.status-maintenance:before,.status-punch-list:before,.status-sent:before{background:var(--amber-500)}.status-completed:before,.status-complete:before,.status-paid:before{background:var(--gray-300)}.status-draft:before,.status-todo:before{background:var(--gray-500)}.status-overdue:before{background:var(--red-500)}.kanban{display:grid;gap:1rem;grid-template-columns:repeat(4,minmax(0,1fr))}.kanban-col{background:var(--gray-100);border-radius:var(--radius);min-height:240px}.kanban-col-head{align-items:center;display:flex;font-size:.8rem;font-weight:700;justify-content:space-between;letter-spacing:.05em;padding:.75rem 1rem;text-transform:uppercase}.kanban-col-head .count{background:#0000001a;border-radius:999px;font-size:.7rem;padding:.1rem .4rem}.col-scheduled .kanban-col-head{color:var(--blue-700)}.col-in-progress .kanban-col-head{color:var(--green-600)}.col-punch-list .kanban-col-head{color:var(--amber-700)}.col-complete .kanban-col-head{color:var(--gray-500)}.kanban-cards{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}.job-card{background:var(--surface);border:1px solid var(--gray-200);border-radius:6px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:.35rem;padding:.75rem;transition:box-shadow .15s}.job-card:hover{box-shadow:var(--shadow-lg)}.job-card .job-title{font-size:.9rem;font-weight:600}.job-card .job-client,.job-card .job-addr,.meta-copy{color:var(--gray-500);font-size:.8rem}.job-card .job-addr{color:var(--gray-400);font-size:.75rem}.job-card .job-meta,.inline-meta{align-items:center;display:flex;gap:.5rem;justify-content:space-between}.job-value,.money{color:var(--green-600);font-weight:700}.crew-badge,.cadence-badge,.invoice-status{border-radius:999px;display:inline-flex;font-size:.7rem;font-weight:600;padding:.15rem .5rem;white-space:nowrap}.crew-a{background:#dbeafe;color:#1e40af}.crew-b{background:#fce7f3;color:#9d174d}.crew-tbd,.cadence-badge{background:var(--gray-100);color:var(--gray-700)}.invoice-status.draft{background:var(--gray-100);color:var(--gray-500)}.invoice-status.sent{background:var(--blue-100);color:var(--blue-700)}.invoice-status.paid{background:var(--green-100);color:var(--green-600)}.visit-row,.activity-item,.task-row,.note-row{border-bottom:1px solid var(--gray-100);display:flex;gap:.75rem;padding:.7rem 1.25rem}.visit-row:last-child,.activity-item:last-child,.task-row:last-child,.note-row:last-child{border-bottom:none}.visit-row.today-row{background:var(--green-100)}.task-row.overdue{background:var(--red-100)}.visit-date,.task-date{color:var(--gray-700);flex-shrink:0;font-weight:600;width:72px}.visit-client{flex:1;font-weight:500}.activity-item{display:block}.activity-item .time,.note-meta,.subcopy{color:var(--gray-400);font-size:.75rem}.detail-layout{display:grid;gap:1.5rem;grid-template-columns:minmax(0,2fr) minmax(320px,1fr)}.detail-card{display:flex;flex-direction:column;gap:1rem;padding:1.25rem}.detail-grid{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}.detail-item .dl{color:var(--gray-400);font-size:.75rem}.detail-item .dv{font-size:.9rem;font-weight:500}.stack,.note-list,.action-group,.field-grid,.field-stack{display:flex;flex-direction:column;gap:.75rem}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid{display:grid}.field-stack label,.field-grid label{color:var(--gray-700);display:flex;flex-direction:column;font-size:.8rem;gap:.35rem;font-weight:600}.note-card{background:var(--gray-50);border-radius:6px;padding:.7rem .8rem}.note-card p{margin:0}.photo-grid{display:grid;gap:.5rem;grid-template-columns:repeat(4,minmax(0,1fr))}.photo-thumb{align-items:center;aspect-ratio:1;background:var(--gray-100);border-radius:6px;color:var(--gray-400);display:flex;font-size:.7rem;justify-content:center;text-transform:uppercase}.empty-state{color:var(--gray-500);padding:1.25rem}.metric-grid{display:grid;gap:1rem;grid-template-columns:repeat(2,minmax(0,1fr))}.modal-backdrop{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;padding:1.5rem;position:fixed;z-index:200}.modal-card{background:var(--surface);border-radius:12px;box-shadow:0 20px 60px #0003;max-height:80vh;max-width:640px;overflow-y:auto;width:100%}.modal-head{align-items:center;border-bottom:1px solid var(--gray-200);display:flex;justify-content:space-between;padding:1rem 1.25rem;position:sticky;top:0;background:var(--surface)}.modal-body{padding:1.25rem}.mobile-nav{background:var(--surface);border-top:1px solid var(--gray-200);bottom:0;display:none;left:0;padding:.25rem 0 env(safe-area-inset-bottom,.25rem);position:fixed;right:0;z-index:50}.mobile-nav a{align-items:center;color:var(--gray-400);display:flex;flex:1;flex-direction:column;font-size:.65rem;gap:.15rem;padding:.4rem 0}.mobile-nav a.active{color:var(--green-600)}.print-only{display:none}@media(max-width:1024px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.dash-grid,.detail-layout{grid-template-columns:1fr}.kanban{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.sidebar{display:none}.mobile-nav{display:flex}.content{padding:1rem 1rem 5rem}.topbar{padding:0 1rem}.stats,.inv-stats,.kanban,.detail-grid,.metric-grid,.field-grid{grid-template-columns:1fr}.data-table th.hide-mobile,.data-table td.hide-mobile{display:none}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{.demo-banner,.sidebar,.topbar,.mobile-nav,.action-group,.btn,.filter-btn{display:none!important}.shell-main,.main-column,.content,.page-stack{display:block;min-height:auto;padding:0}.print-only{display:block}.card,.surface-panel,.detail-card{border:none;box-shadow:none}}
