*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1a1a}a{color:inherit}nav a{text-decoration:none}nav a.active{font-weight:600}input,select,button{font:inherit}input,select{padding:.4rem .5rem;border:1px solid #ccc;border-radius:6px}button{padding:.45rem .9rem;border:1px solid #1a1a1a;border-radius:6px;background:#1a1a1a;color:#fff;cursor:pointer}button:disabled{opacity:.6;cursor:default}.measurement-toolbar button{padding:.6rem 1rem;min-height:38px}.measurement-toolbar-lines-toggle,.measurement-mobile-search-toggle,.measurement-toolbar-delete-text-mobile,.jobs-cards{display:none}@media(max-width:760px){.jobs-table{display:none}.jobs-cards{display:grid}}.measurement-page-root{display:flex;flex-direction:column;height:100vh;height:100dvh}.measurement-page-header{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1rem;border-bottom:1px solid #ddd;flex-shrink:0}.measurement-page-back-text-mobile{display:none}.measurement-page-customer-name{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.measurement-page-save-state{margin-left:auto;font-size:.9rem;white-space:nowrap}.measurement-page-loaded-label{color:#666;font-size:.85rem;white-space:nowrap}.measurement-page-body{flex:1;min-height:0;display:flex;flex-direction:row}.measurement-page-map-area{flex:3;min-width:0;position:relative}.roof-summary-sheet{flex:1;min-width:280px;max-width:380px;border-left:1px solid #ddd;overflow-y:auto}.roof-summary-sheet-handle{display:none}@media(max-width:639px){.measurement-page-header{gap:.75rem;padding:.5rem .75rem}.measurement-page-back-text-desktop{display:none}.measurement-page-back-text-mobile{display:inline}.measurement-page-loaded-label{display:none}.measurement-page-body{flex-direction:column}.measurement-page-map-area{flex:1;min-width:0}.roof-summary-sheet{flex:none;min-width:0;max-width:none;border-left:none;border-top:1px solid #ddd;overflow-y:visible;position:fixed;left:0;right:0;bottom:0;z-index:20;background:#fff}.roof-summary-sheet-handle{display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem 1rem;border:none;border-radius:0;background:#fff;color:#1a1a1a;text-align:left;cursor:pointer}.roof-summary-sheet-handle-bar{display:block;width:36px;height:4px;border-radius:2px;background:#ccc;flex-shrink:0}.roof-summary-sheet-headline{display:flex;align-items:center;justify-content:space-between;flex:1;min-width:0;gap:.75rem}.roof-summary-sheet-headline-metrics{display:flex;gap:.75rem;font-size:.85rem;color:#444;white-space:nowrap}.roof-summary-sheet-body{max-height:0;overflow:hidden;transition:max-height .25s ease}.roof-summary-sheet--expanded .roof-summary-sheet-body{max-height:70vh;overflow-y:auto}.measurement-search-container{display:none!important}.measurement-search-container--open{display:block!important;width:auto!important;right:.75rem!important}.measurement-mobile-search-toggle{display:flex;align-items:center;gap:.35rem;position:absolute;top:.75rem;left:.75rem;right:.75rem;z-index:10;background:#fff;color:#333;border:1px solid #ddd;justify-content:flex-start}.measurement-property-banner{top:.75rem!important;left:.75rem!important;right:.75rem!important;max-width:none!important}.measurement-property-banner--search-open{display:none!important}.measurement-property-banner-search-icon{margin-left:auto}.measurement-toolbar{top:3.75rem!important;left:.75rem!important;right:.75rem!important;flex-direction:row!important;flex-wrap:wrap;align-items:center;gap:.4rem!important}.measurement-toolbar-lines-label{display:none}.measurement-toolbar-lines-toggle{display:inline-flex}.measurement-toolbar-lines-row{display:none;flex-direction:row;flex-wrap:wrap;gap:.4rem;width:100%}.measurement-toolbar-lines-row--expanded{display:flex}.measurement-toolbar-delete-text-desktop{display:none}.measurement-toolbar-delete-text-mobile{display:inline}}@media(min-width:640px)and (max-width:900px){.roof-summary-sheet{min-width:240px}.measurement-property-banner{max-width:260px!important}}@media print{.app-header,.print-hide{display:none!important}.measurement-report-print-root{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}.measurement-report-print-root svg{width:100%!important;max-width:none!important;height:auto!important}.measurement-report-print-root header{padding-bottom:.3rem!important;margin-bottom:.4rem!important}.measurement-report-print-root header div:first-child{font-size:1.15rem!important}.measurement-report-print-root header h1{font-size:1rem!important;margin-top:.25rem!important}.measurement-report-print-root section{margin-bottom:.4rem!important;break-inside:avoid}.measurement-report-summary{gap:.35rem 1.5rem!important;padding:.5rem .75rem!important}.measurement-report-summary-row div:first-child{font-size:.7rem!important}.measurement-report-summary-row div:last-child{font-size:.95rem!important}.measurement-report-print-root table,.measurement-report-print-root tr{break-inside:avoid}.measurement-report-print-root *{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@page{size:letter;margin:.5in}:root{--color-text: #1e293b;--color-text-secondary: #4b5563;--color-border: #d7dbe0;--color-surface: #f8fafc;--color-surface-alt: #eef1f4;--color-primary: #1e293b;--color-primary-hover: #0f172a;--color-primary-contrast: #ffffff;--color-secondary-bg: #ffffff;--color-secondary-border: #d7dbe0;--color-secondary-text: #1e293b;--color-danger: #b91c1c;--color-danger-hover: #991b1b;--color-danger-contrast: #ffffff;--radius: 6px;--focus-ring: 0 0 0 3px rgba(30, 41, 59, .35)}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast);border:1px solid var(--color-primary);border-radius:var(--radius);padding:.45rem .9rem;cursor:pointer}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--color-secondary-bg);color:var(--color-secondary-text);border:1px solid var(--color-secondary-border);border-radius:var(--radius);padding:.45rem .9rem;cursor:pointer}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt)}.btn-danger{background:var(--color-danger);color:var(--color-danger-contrast);border:1px solid var(--color-danger);border-radius:var(--radius);padding:.45rem .9rem;cursor:pointer}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover)}.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled{opacity:.6;cursor:default}.btn-primary:focus-visible,.btn-secondary:focus-visible,.btn-danger:focus-visible{outline:none;box-shadow:var(--focus-ring)}.text-secondary{color:var(--color-text-secondary)}.empty-state{border:1px dashed var(--color-border);border-radius:var(--radius);padding:1.5rem;text-align:center;color:var(--color-text-secondary)}.empty-state-title{font-weight:600;font-size:1.05rem;color:var(--color-text);margin:0 0 .5rem}.app-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.75rem 1rem;border-bottom:1px solid var(--color-border)}.app-header-logo{order:1;color:inherit;text-decoration:none;font-weight:700;white-space:nowrap}.app-header-nav{order:2;display:flex;flex-wrap:wrap;gap:1rem}.app-header-nav a{text-decoration:none;color:var(--color-text-secondary);padding:.35rem .6rem;border-radius:var(--radius)}.app-header-nav a:focus-visible{outline:none;box-shadow:var(--focus-ring)}.app-header-nav a.active{color:var(--color-primary);background:var(--color-surface-alt);font-weight:600}.app-header-user{order:3;display:flex;align-items:center;gap:.75rem}.app-header-user-email{color:var(--color-text-secondary);font-size:.9rem;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-main{padding:1rem}@media(max-width:759px){.app-header-nav{order:4;flex-basis:100%}.app-header-user-email{max-width:110px}}.dashboard-container{max-width:1200px;margin:0 auto}.dashboard-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem}.dashboard-title{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text)}.dashboard-section-heading{margin-top:2rem;margin-bottom:.75rem;font-size:1.1rem;font-weight:600;color:var(--color-text)}.dashboard-welcome{margin-top:1.5rem}.dashboard-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin-top:1rem}.metric-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:.9rem}.metric-card-value{font-size:1.6rem;font-weight:700;color:var(--color-text)}.metric-card-label{color:var(--color-text-secondary);font-size:.85rem}.dashboard-row-list{display:grid;gap:.5rem;margin-top:.75rem}.dashboard-row-link{display:flex;justify-content:space-between;align-items:center;gap:.75rem;border:1px solid var(--color-border);border-radius:var(--radius);padding:.6rem .8rem;text-decoration:none;color:inherit}.dashboard-row-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.dashboard-row-static{cursor:default}.dashboard-row-primary{min-width:0;flex:1}.dashboard-row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-row-subtitle{color:var(--color-text-secondary);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-row-secondary{display:flex;gap:.75rem;align-items:center;flex-shrink:0}.dashboard-row-secondary-right{text-align:right}.dashboard-row-meta{color:var(--color-text-secondary);font-size:.85rem;white-space:nowrap}.jobs-page-container{max-width:1200px;margin:0 auto}.jobs-page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem}.jobs-page-title{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text)}.jobs-empty-state{margin-top:1.5rem}.jobs-empty-message{margin-top:2rem}.jobs-toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-top:.5rem}.jobs-toolbar-search{flex:1 1 220px}.jobs-table-styled{width:100%;border-collapse:collapse;margin-top:1rem}.jobs-table-styled thead tr{text-align:left;border-bottom:1px solid var(--color-border)}.jobs-table-styled th{padding:.6rem .5rem;font-size:.85rem;font-weight:600;color:var(--color-text-secondary)}.jobs-table-styled td{padding:.6rem .5rem}.jobs-table-styled tbody tr{border-bottom:1px solid var(--color-surface-alt)}.jobs-table-name-link{color:var(--color-primary);font-weight:600;text-decoration:none}.jobs-table-name-link:hover{text-decoration:underline}.jobs-table-name-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.jobs-table-truncate{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jobs-cards-styled{margin-top:1rem;display:grid;gap:.75rem}.jobs-card-link{display:block;border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem;text-decoration:none;color:inherit}.jobs-card-link:focus-visible{outline:none;box-shadow:var(--focus-ring)}.jobs-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.jobs-card-name{overflow-wrap:break-word;min-width:0}.jobs-card-address{color:var(--color-text-secondary);margin-top:.25rem;overflow-wrap:break-word}.jobs-card-meta{color:var(--color-text-secondary);font-size:.85rem;margin-top:.25rem}.job-form-fields{display:grid;gap:.9rem;max-width:480px}.job-form-city-state-zip{display:grid;grid-template-columns:2fr 1fr 1fr;gap:.6rem}.job-form-field{display:block}.job-form-field-label{display:block;margin-bottom:.25rem;font-size:.9rem;color:var(--color-text-secondary)}.job-form-field input,.job-form-field select{width:100%}.job-form-field-error{display:block;color:var(--color-danger);font-size:.8rem;margin-top:.25rem}.job-form-submit-error{margin-top:.75rem}.job-form-submit{margin-top:1rem}.job-detail-container{max-width:1200px;margin:0 auto}.job-detail-back-link{margin-bottom:.5rem}.job-detail-title{font-size:1.5rem;font-weight:700;color:var(--color-text)}.job-detail-title-truncate{overflow-wrap:break-word}.job-detail-cards{display:grid;gap:1.25rem;max-width:640px;margin-top:1rem}.job-detail-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem}.job-detail-card-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem}.job-detail-card-title{font-size:1.05rem;font-weight:600;margin:0;color:var(--color-text)}.job-detail-dl{margin:0}.job-detail-row{display:flex;gap:.5rem;padding:.2rem 0}.job-detail-row-label{color:var(--color-text-secondary);min-width:140px;flex-shrink:0}.job-detail-row-value{margin:0;overflow-wrap:break-word;min-width:0}.job-detail-field{display:block;max-width:260px}.job-detail-field-spaced{margin-top:.75rem}.job-detail-field-label{display:block;margin-bottom:.25rem;font-size:.9rem;color:var(--color-text-secondary)}.job-detail-select{width:100%}.job-detail-status-badge-row{margin-bottom:.75rem}.job-detail-unassigned-note{margin-top:.5rem}.job-detail-measurement-status{font-weight:600;margin:0 0 .25rem;color:var(--color-text)}.job-detail-measurement-summary{color:var(--color-text-secondary);margin:0 0 .75rem}.job-detail-no-measurement{margin-bottom:.5rem}.job-detail-action-row{display:flex;gap:.5rem;flex-wrap:wrap}.calendar-page-container{max-width:1200px;margin:0 auto}.calendar-page-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1rem}.calendar-page-title{margin:0;font-size:1.5rem;font-weight:700;color:var(--color-text)}.calendar-form-wrap{margin:1rem 0;border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;max-width:460px}.calendar-empty-state,.calendar-date-group{margin-top:1.5rem}.calendar-date-heading{font-size:1rem;font-weight:600;color:var(--color-text-secondary);margin:0}.calendar-event-list{display:grid;gap:.5rem;margin-top:.5rem}.calendar-event-row{display:block;border:1px solid var(--color-border);border-radius:var(--radius);padding:.6rem .8rem;text-decoration:none;color:inherit}.calendar-event-row:focus-visible{outline:none;box-shadow:var(--focus-ring)}.calendar-event-row-static{cursor:default}.calendar-event-content{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.calendar-event-primary{min-width:0;flex:1}.calendar-event-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-event-meta{color:var(--color-text-secondary);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-event-delete{flex-shrink:0}.calendar-form-fields{display:grid;gap:.75rem;max-width:420px}.calendar-form-time-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.calendar-form-field{display:block}.calendar-form-field-label{display:block;margin-bottom:.2rem;font-size:.9rem;color:var(--color-text-secondary)}.calendar-form-field input,.calendar-form-field select,.calendar-form-field textarea{width:100%}.calendar-form-field-error{display:block;color:var(--color-danger);font-size:.8rem;margin-top:.2rem}.calendar-form-submit-error{margin-top:.5rem}.calendar-form-actions{margin-top:.75rem;display:flex;gap:.5rem;flex-wrap:wrap}.calendar-job-events-empty{margin:0}.calendar-job-events-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.calendar-job-event-row{border-bottom:1px solid var(--color-surface-alt);padding-bottom:.5rem}.calendar-job-event-actions{display:flex;gap:.4rem;flex-shrink:0;flex-wrap:wrap}.calendar-job-events-form-wrap{margin-top:1rem}.calendar-job-events-add-btn{margin-top:.75rem}@media(max-width:639px){.calendar-form-time-row{grid-template-columns:1fr}.calendar-event-content{flex-direction:column;align-items:stretch}.calendar-event-delete,.calendar-job-event-actions{align-self:flex-start}}.team-page-container{max-width:1200px;margin:0 auto}.team-page-title{margin:0 0 1rem;font-size:1.5rem;font-weight:700;color:var(--color-text)}.team-empty-state{margin-top:1rem}.team-table{width:100%;border-collapse:collapse}.team-table thead tr{text-align:left;border-bottom:1px solid var(--color-border)}.team-table th{padding:.5rem;font-size:.85rem;color:var(--color-text-secondary)}.team-table td{padding:.5rem}.team-table tbody tr{border-bottom:1px solid var(--color-surface-alt)}.team-table-role{text-transform:capitalize}.team-table-email{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-cards{display:none}@media(max-width:760px){.team-table{display:none}.team-cards{display:grid;gap:.5rem}}.team-card{border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem}.team-card-name{font-weight:600}.team-card-email{color:var(--color-text-secondary);overflow-wrap:break-word;margin-top:.15rem}.team-card-role{color:var(--color-text-secondary);font-size:.85rem;text-transform:capitalize;margin-top:.15rem}.team-invite-panel{border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-top:1.5rem}.team-invite-title{font-size:1.05rem;margin-top:0;color:var(--color-text)}.team-invite-form{display:flex;gap:.5rem;flex-wrap:wrap}.team-invite-email-input{flex:1 1 240px}.team-invite-link-wrap{margin-top:.75rem}.team-invite-link-hint{margin-bottom:.25rem}.team-invite-link-row{display:flex;gap:.5rem;flex-wrap:wrap}.team-invite-link-input{flex:1 1 200px}.team-invite-pending-title{font-size:.95rem;margin-top:1.5rem;color:var(--color-text)}.team-invite-pending-list{padding-left:1.2rem;color:var(--color-text-secondary)}.accept-invite-container{max-width:400px;margin:4rem auto}.accept-invite-field{margin-bottom:.75rem}.accept-invite-field label{display:block;margin-bottom:.25rem}.accept-invite-field input{width:100%}.accept-invite-mode-toggle{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.team-invite-email-input:focus-visible,.team-invite-link-input:focus-visible,.accept-invite-field input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.notes-textarea{width:100%}.notes-textarea:focus-visible{outline:none;box-shadow:var(--focus-ring)}.notes-submit-error,.notes-submit-btn{margin-top:.5rem}.notes-list-wrap{margin-top:1rem}.notes-empty-state{margin-top:.5rem}.notes-list{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}.notes-item{border-bottom:1px solid var(--color-surface-alt);padding-bottom:.5rem}.notes-item-body{overflow-wrap:break-word}.notes-item-meta{color:var(--color-text-secondary);font-size:.8rem;margin-top:.2rem}.files-upload-input{max-width:100%}.files-upload-input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.files-list-wrap{margin-top:1rem}.files-empty-state{margin-top:.5rem}.files-list{list-style:none;padding:0;margin:0}.file-row{display:flex;align-items:center;gap:.75rem;border-bottom:1px solid var(--color-surface-alt);padding:.5rem 0;flex-wrap:wrap}.file-row-thumbnail{width:48px;height:48px;object-fit:cover;border-radius:4px;flex-shrink:0}.file-row-thumbnail-placeholder{display:flex;align-items:center;justify-content:center;background:var(--color-surface-alt);font-size:.7rem;color:var(--color-text-secondary)}.file-row-info{flex:1;min-width:0}.file-row-name{overflow-wrap:break-word}.file-row-meta{color:var(--color-text-secondary);font-size:.8rem}.file-row-error{font-size:.8rem}.file-row-actions{display:flex;gap:.5rem;flex-shrink:0;flex-wrap:wrap}
