:root{--color-primary:#4a63b8;--color-primary-hover:#3f56a2;--color-primary-soft:#4a63b814;--color-primary-soft-strong:#4a63b81f;--color-primary-border:#4a63b847;--color-primary-border-strong:#4a63b86b;--color-primary-outline:#4a63b829;--color-primary-focus:#4a63b824;--color-secondary:#66758a;--color-secondary-hover:#546277;--color-success:#16a34a;--color-warning:#ea580c;--color-danger:#dc2626;--color-bg:#f7f9fc;--color-surface:#fff;--color-border:#dde4ef;--color-surface-muted:#f5f7fb;--color-border-soft:#67769a29;--color-text:#0f172a;--color-text-muted:#67748c;--color-status-info-bg:#eef2fb;--color-status-info-text:#43578f;--color-status-success-bg:#edf7f0;--color-status-success-text:#35674a;--color-status-warning-bg:#fbf4e8;--color-status-warning-text:#8a5d1f;--color-status-danger-bg:#fbecec;--color-status-danger-text:#9a4a4a;--color-status-neutral-bg:#f2f4f8;--color-status-neutral-text:#5f6d82;--radius:8px;--radius-lg:calc(var(--radius) + 4px);--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #0000001a;--surface-gradient-hero:linear-gradient(180deg, #f4f7fcfa, #fffffff5);--surface-gradient-soft:linear-gradient(180deg, #f5f7fbf0, #fffffff5);--header-height:56px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{background:var(--color-bg);color:var(--color-text);min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}#root{min-height:100vh}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.auth-card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-md);width:100%;max-width:400px;padding:2rem}.onboarding-card{max-width:480px}.auth-title{text-align:center;color:var(--color-primary);margin-bottom:.25rem;font-size:1.375rem;font-weight:600}.auth-subtitle{text-align:center;color:var(--color-text-muted);margin-bottom:1.5rem;font-size:.8125rem}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-forgot{text-align:center;margin-top:.75rem;font-size:.875rem}.auth-toggle{text-align:center;color:var(--color-text-muted);margin-top:1rem;font-size:.875rem}.form-group{flex-direction:column;gap:.25rem;display:flex}.form-group label{font-size:.875rem;font-weight:500}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);outline:none;padding:.4375rem .75rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-focus)}.form-row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.form-error{color:var(--color-danger);font-size:.8rem}.btn{border-radius:var(--radius);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:.375rem;padding:.4375rem .875rem;font-size:.8125rem;font-weight:500;line-height:1.25;text-decoration:none;transition:all .15s;display:inline-flex}.btn:hover,.btn:focus-visible{text-decoration:none}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff;box-shadow:0 1px 2px #2563eb33}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:0 1px 3px #2563eb40}.btn-secondary{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:#f3f4f6;border-color:#d1d5db}.btn-success{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0}.btn-success:hover:not(:disabled){background:#dcfce7;border-color:#86efac}.btn-danger{background:var(--color-surface);border:1px solid var(--color-border);color:#dc2626}.btn-danger:hover:not(:disabled){background:#fef2f2;border-color:#fecaca}.btn-outline{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);box-shadow:var(--shadow-sm)}.btn-outline:hover:not(:disabled){background:var(--color-bg);border-color:#d1d5db}.btn-ghost{color:var(--color-text-muted);background:0 0;border:1px solid #0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.btn-full{width:100%}.btn-lg{padding:.625rem 1.25rem;font-size:.875rem}.btn-icon{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;align-items:center;padding:.25rem;display:inline-flex}.btn-icon:hover{color:var(--color-text)}.btn-link{color:var(--color-primary);cursor:pointer;font-size:inherit;background:0 0;border:none;text-decoration:underline}.alert{border-radius:var(--radius);padding:.75rem 1rem;font-size:.875rem}.alert-error{color:var(--color-danger);background:#fef2f2;border:1px solid #fecaca}.alert-success{color:var(--color-success);background:#f0fdf4;border:1px solid #bbf7d0}.app-layout{background:var(--color-bg);flex-direction:column;min-height:100vh;display:flex}.app-header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);z-index:100;justify-content:space-between;align-items:center;padding:0 1rem;display:flex;position:sticky;top:0}.header-left,.header-right{align-items:center;gap:.75rem;display:flex}.app-title{color:var(--color-primary);font-size:.9375rem;font-weight:600}.user-name{color:var(--color-text-muted);font-size:.8125rem}.menu-toggle{cursor:pointer;color:var(--color-text);border-radius:calc(var(--radius) - 2px);background:0 0;border:none;padding:.375rem;transition:background-color .15s,color .15s;display:none}.menu-toggle:hover{background:var(--color-bg)}.owner-layout{position:relative}.owner-header{padding:0}.owner-header-shell{width:100%;max-width:1280px;height:var(--header-height);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:0 1rem;display:flex}.owner-header-left,.owner-header-right{align-items:center;gap:.75rem;display:flex}.owner-header-left{flex:1;min-width:0}.owner-brand{color:inherit;flex-shrink:0;align-items:center;gap:.625rem;text-decoration:none;display:inline-flex}.owner-brand-mark{border-radius:calc(var(--radius) + 1px);background:var(--color-primary);color:#fff;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:inline-flex}.owner-brand-text{letter-spacing:-.02em;color:var(--color-text);font-size:.9375rem;font-weight:600}.owner-nav{align-items:center;gap:.25rem;min-width:0;display:flex}.owner-nav-link{border-radius:var(--radius);color:var(--color-text-muted);white-space:nowrap;justify-content:center;align-items:center;padding:.375rem .625rem;font-size:.8125rem;font-weight:500;text-decoration:none;transition:background-color .15s,color .15s;display:inline-flex}.owner-nav-link:hover{background:var(--color-bg);color:var(--color-text)}.owner-nav-link.active{background:var(--color-primary-soft);color:var(--color-text);font-weight:600}.owner-user-chip{background:var(--color-surface-muted);border-radius:9999px;align-items:center;gap:.5rem;padding:.1875rem .375rem .1875rem .1875rem;display:inline-flex}.owner-user-avatar{background:var(--color-primary-soft-strong);width:1.75rem;height:1.75rem;color:var(--color-primary);letter-spacing:.02em;border-radius:9999px;justify-content:center;align-items:center;font-size:.6875rem;font-weight:600;display:inline-flex}.owner-signout-btn{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text-muted);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:.375rem;padding:.375rem .625rem;font-size:.8125rem;font-weight:500;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.owner-signout-btn:hover{background:var(--color-bg)}.owner-signout-label{white-space:nowrap}.app-nav{display:none}.app-nav a{color:var(--color-text-muted);white-space:nowrap;border-bottom:2px solid #0000;align-items:center;gap:.5rem;padding:.75rem 1rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:color .15s,border-color .15s;display:flex}.owner-mobile-nav{background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-md);z-index:99}.app-nav a:hover{color:var(--color-text)}.app-nav a.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.app-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1.5rem}.owner-main{max-width:1280px;padding:1.75rem 1rem 2rem}.owner-page-frame{margin-bottom:1.5rem}.owner-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.owner-page-intro{flex-direction:column;gap:.25rem;min-width:0;display:flex}.owner-page-title{letter-spacing:-.025em;color:var(--color-text);font-size:1.375rem;font-weight:600;line-height:1.15}.owner-page-subtitle{color:var(--color-text-muted);font-size:.8125rem}.owner-page-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.owner-page-toolbar{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow-sm);margin-top:.875rem;padding:.75rem .875rem}.owner-page-toolbar-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.owner-page-toolbar-row--end{justify-content:flex-end}.owner-page-toolbar .search-bar,.owner-page-toolbar .filter-bar,.owner-page-toolbar .page-actions{margin-bottom:0}.owner-page-toolbar .search-bar{flex:18rem}.owner-page-toolbar .search-input{width:100%}.owner-list-surface{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow-sm);overflow:hidden}.owner-detail-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow-sm);padding:1.25rem}.owner-detail-section+.owner-detail-section{margin-top:1rem}.owner-detail-section-header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.owner-detail-section-title{letter-spacing:0;color:var(--color-text);font-size:.875rem;font-weight:600}.owner-detail-section-actions{align-items:center;gap:.5rem;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1.5rem;display:flex}.page-header h2{font-size:1.375rem;font-weight:600}.text-muted{color:var(--color-text-muted);font-size:.875rem}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem;margin:1rem 0 1.5rem;display:grid}.dashboard-hero{margin-bottom:1rem}.dashboard-hero-card{background:var(--surface-gradient-hero);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;padding:1.35rem 1.4rem;display:flex}.dashboard-hero-copy{flex:18rem;min-width:0}.dashboard-eyebrow{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:.375rem;font-size:.6875rem;font-weight:600;display:inline-block}.dashboard-hero-title{letter-spacing:-.025em;color:var(--color-text);font-size:1.375rem;line-height:1.1}.dashboard-hero-subtitle{color:var(--color-text-muted);margin-top:.375rem;font-size:.8125rem}.dashboard-hero-stats{flex:0 360px;grid-template-columns:repeat(2,minmax(140px,1fr));gap:.75rem;display:grid}.dashboard-hero-stat{border:1px solid var(--color-border-soft);border-radius:calc(var(--radius) + 2px);background:#ffffffb8;flex-direction:column;gap:.2rem;padding:.85rem .95rem;display:flex}.dashboard-hero-stat-label{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.6875rem;font-weight:600}.dashboard-hero-stat-value{color:var(--color-text);font-size:1rem;font-weight:700}.kpi-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow-sm);padding:1.25rem}.kpi-card-top{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.kpi-icon{background:var(--color-primary-soft-strong);width:2rem;height:2rem;color:var(--color-primary);border-radius:.9rem;justify-content:center;align-items:center;display:inline-flex}.kpi-value{color:var(--color-text);font-size:1.75rem;font-weight:700}.kpi-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.6875rem;font-weight:500}.kpi-caption{color:var(--color-text-muted);margin-top:.25rem;font-size:.8125rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-body{padding:1rem}.empty-state{text-align:center;color:var(--color-text-muted);padding:3rem 1rem}.empty-state h3{color:var(--color-text);margin-bottom:.5rem;font-size:1.1rem}.loading-screen{min-height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;display:flex}.invited-list{border-radius:var(--radius);background:#f0fdf4;border:1px solid #bbf7d0;margin-bottom:1rem;padding:.75rem}.invited-list h3{text-transform:uppercase;letter-spacing:.05em;color:var(--color-success);margin-bottom:.5rem;font-size:.8rem}.invited-item{padding:.25rem 0;font-size:.875rem}.badge{text-transform:capitalize;letter-spacing:.01em;border-radius:9999px;align-items:center;padding:.125rem .5rem;font-size:.7rem;font-weight:500;line-height:1.5;display:inline-flex}.badge-scheduled,.badge-assigned{background:var(--color-status-info-bg);color:var(--color-status-info-text)}.badge-in-progress{background:var(--color-status-warning-bg);color:var(--color-status-warning-text)}.badge-completed{background:var(--color-status-success-bg);color:var(--color-status-success-text)}.badge-canceled{background:var(--color-status-neutral-bg);color:var(--color-status-neutral-text)}.badge-no-show{background:var(--color-status-danger-bg);color:var(--color-status-danger-text)}.badge-draft{background:var(--color-status-neutral-bg);color:var(--color-status-neutral-text)}.badge-sent{background:var(--color-status-info-bg);color:var(--color-status-info-text)}.badge-paid{background:var(--color-status-success-bg);color:var(--color-status-success-text)}.badge-unpaid{background:var(--color-status-warning-bg);color:var(--color-status-warning-text)}.badge-overdue{background:var(--color-status-danger-bg);color:var(--color-status-danger-text)}.page-actions{align-items:center;gap:.75rem;display:flex}.view-toggle{gap:2px;display:flex}.view-toggle .btn{border-radius:0}.view-toggle .btn:first-child{border-radius:var(--radius) 0 0 var(--radius)}.view-toggle .btn:last-child{border-radius:0 var(--radius) var(--radius) 0}.btn-sm{padding:.25rem .5rem;font-size:.75rem}.jobs-toolbar-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.75rem;display:flex}.jobs-toolbar-search{flex:18rem;min-width:16rem;margin-bottom:0}.jobs-search-input{padding-right:2.5rem}.jobs-search-clear{width:1.6rem;height:1.6rem;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:9999px;justify-content:center;align-items:center;transition:background-color .15s,color .15s;display:inline-flex;position:absolute;top:50%;right:.7rem;transform:translateY(-50%)}.jobs-search-clear:hover{background:var(--color-bg);color:var(--color-text)}.jobs-toolbar-filters{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.jobs-toolbar-field{flex-direction:column;gap:.35rem;min-width:10rem;display:flex}.jobs-toolbar-field-label{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.6875rem;font-weight:600}.jobs-toolbar-select{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);min-height:2.25rem;color:var(--color-text);font:inherit;outline:none;padding:.4375rem .75rem;font-size:.8125rem}.jobs-toolbar-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-focus)}.jobs-view-toggle{border:1px solid var(--color-border);border-radius:calc(var(--radius) + 1px);background:var(--color-bg);align-items:center;gap:.125rem;padding:.1875rem}.jobs-view-toggle .btn{border-radius:calc(var(--radius) - 2px);align-items:center;gap:.35rem;min-height:2rem;display:inline-flex}.jobs-view-toggle-label{white-space:nowrap}.jobs-toolbar-summary{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.85rem;display:flex}.job-form{width:100%}.job-form-shell{grid-template-columns:minmax(0,.95fr) minmax(0,1.15fr);gap:1rem;display:grid}.form-section{border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1.25rem;padding:1.25rem}.form-section legend{color:var(--color-text);padding:0 .5rem;font-size:.9rem;font-weight:600}.job-form-section{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:0}.job-form-legend{letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);font-size:.78rem;font-weight:700}.job-form-section-copy{color:var(--color-text-muted);margin-bottom:1rem;font-size:.9rem;line-height:1.55}.job-form .form-group{gap:.4rem}.job-form .form-group label{letter-spacing:.01em;font-size:.82rem;font-weight:700}.job-form .form-group input,.job-form .form-group select,.job-form .form-group textarea{min-height:2.75rem}.job-form .form-group textarea{resize:vertical;min-height:7.25rem}.customer-mode-toggle{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);gap:.2rem;margin-bottom:1rem;padding:.2rem;display:inline-flex}.customer-mode-toggle .btn{border-radius:calc(var(--radius) - 1px)}.job-form-availability-block{border-radius:calc(var(--radius) + 2px);background:var(--surface-gradient-soft);border:1px dashed #94a3b859;margin:1rem 0;padding:.95rem}.form-actions{justify-content:flex-end;gap:.75rem;display:flex}.job-form-actions{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;margin-top:1rem;padding-top:1rem}.job-form-actions .btn:last-child{min-width:148px}.jobs-list{flex-direction:column;display:flex}.jobs-list>*+*{border-top:1px solid var(--color-border)}.job-row{flex-direction:column;padding:0;display:flex}.job-row-header{align-items:flex-start;gap:.875rem;padding:.875rem 1rem;display:flex}.job-row-time{flex-direction:column;flex-shrink:0;gap:.15rem;width:5.2rem;display:flex}.job-row-time-value{color:var(--color-text);white-space:nowrap;font-size:.875rem;font-weight:600}.job-row-time-date{color:var(--color-text-muted);font-size:.75rem}.job-row-status{flex-shrink:0;align-items:flex-start;width:6.75rem;display:flex}.job-row-body{flex:1;min-width:0}.job-row-main{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.job-row-title-wrap{flex-wrap:wrap;align-items:center;gap:.45rem;min-width:0;display:flex}.job-row-customer{color:var(--color-text);font-size:.875rem;font-weight:600}.job-row-service{color:var(--color-text-muted);font-size:.8125rem}.job-row-duration{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:9999px;flex-shrink:0;padding:.125rem .375rem;font-size:.6875rem;font-weight:500}.job-row-meta{flex-wrap:wrap;align-items:center;gap:.8rem;margin-top:.35rem;display:flex}.job-row-info{color:var(--color-text-muted);align-items:center;gap:.3rem;font-size:.8125rem;display:inline-flex}.job-row-info--truncate{flex:16rem;min-width:0}.job-row-info--truncate span:last-child{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.job-row-info--link{color:var(--color-primary);text-decoration:none}.job-row-info--muted{color:var(--color-text-muted)}.job-row-notes{color:var(--color-text-muted);margin-top:.375rem;font-size:.8125rem;line-height:1.5}.job-row-contact{white-space:nowrap;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.25rem;width:10rem;display:flex}.job-row-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.45rem;max-width:21rem;display:flex}.job-row-actions--mobile{display:none}.job-row-actions--desktop{width:9rem;display:flex}.overflow-menu-container{position:relative}.overflow-trigger{color:var(--color-text-muted);border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);cursor:pointer;padding:.35rem}.overflow-trigger:hover{background:var(--color-bg);color:var(--color-text)}.overflow-menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:20;min-width:140px;padding:.25rem;position:absolute;top:calc(100% + 4px);right:0}.overflow-menu__item{text-align:left;width:100%;color:var(--color-text);cursor:pointer;border-radius:calc(var(--radius) - 2px);background:0 0;border:none;padding:.45rem .75rem;font-size:.8125rem;display:block}.overflow-menu__item:hover{background:var(--color-surface-muted)}.job-row-expand-toggle{border:none;border-top:1px solid var(--color-border-soft);color:var(--color-primary);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:.3rem;width:100%;padding:.35rem 1rem;font-size:.75rem;font-weight:500;display:flex}.job-row-expand-toggle:hover{background:var(--color-primary-soft)}.job-row-detail{border-top:1px solid var(--color-border-soft);background:var(--color-surface-muted);flex-direction:column;gap:1rem;padding:.75rem 1rem 1rem;display:flex}.job-row-detail-section{flex-direction:column;gap:.4rem;display:flex}.job-row-detail-heading{color:var(--color-text);align-items:center;gap:.35rem;margin:0;font-size:.8125rem;font-weight:600;display:flex}.job-row-detail-timestamps{flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.job-row-detail-timestamp{color:var(--color-text-muted);font-size:.8125rem}.job-row-detail-notes{flex-direction:column;gap:.5rem;display:flex}.job-row-detail-note{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:var(--radius);padding:.5rem .65rem}.job-row-detail-note p{color:var(--color-text);margin:0;font-size:.8125rem;line-height:1.5}.job-row-detail-note .text-muted{margin-top:.25rem;font-size:.6875rem;display:block}.job-row-detail-photos{flex-wrap:wrap;gap:.5rem;display:flex}.job-row-detail-photo{border-radius:var(--radius);border:1px solid var(--color-border-soft);width:5rem;height:5rem;overflow:hidden}.job-row-detail-photo img{object-fit:cover;width:100%;height:100%}.job-card-header{justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.job-card-title{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.job-card-title h3{font-size:1rem;font-weight:600}.job-card-time{color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:.25rem;font-size:.85rem;display:flex}.job-card-details{flex-direction:column;gap:.35rem;margin-bottom:.75rem;display:flex}.job-card-service{color:var(--color-primary);font-size:.9rem;font-weight:500}.job-card-info{color:var(--color-text-muted);align-items:center;gap:.35rem;font-size:.85rem;display:flex}.job-card-info a{color:var(--color-primary);text-decoration:none}.job-card-notes{color:var(--color-text-muted);margin-top:.25rem;font-size:.85rem;font-style:italic}.job-card-actions{border-top:1px solid var(--color-border);flex-wrap:wrap;gap:.5rem;padding-top:.5rem;display:flex}.job-card.compact .card-body{padding:.65rem}.job-card.compact .job-card-title h3{font-size:.85rem}.job-card.compact .job-card-details{margin-bottom:0}.day-view,.week-view{flex-direction:column;gap:1rem;display:flex}.schedule-nav-surface{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow-sm);flex-wrap:wrap;align-items:center;gap:.75rem;padding:.9rem 1rem;display:flex}.day-nav,.week-nav{margin-bottom:0}.day-label,.week-label{flex:1;align-items:center;gap:.5rem;min-width:14rem;font-size:1rem;font-weight:600;display:flex}.today-badge{background:var(--color-primary);color:#fff;border-radius:9999px;padding:.1rem .4rem;font-size:.7rem;font-weight:600}.day-jobs{flex-direction:column;display:flex}.week-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;min-height:300px;display:grid}.week-day{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);min-width:0;min-height:200px;box-shadow:var(--shadow-sm);flex-direction:column;display:flex;overflow:hidden}.week-day--empty{background:var(--color-surface-muted);box-shadow:none}.week-day.today{border-color:var(--color-primary-border-strong);box-shadow:0 0 0 1px var(--color-primary-outline), var(--shadow-sm)}.week-day-header{border-bottom:1px solid var(--color-border);background:var(--color-bg);justify-content:space-between;align-items:center;padding:.5rem .625rem;font-size:.75rem;font-weight:600;display:flex}.week-day-name{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.6875rem}.week-day-count{background:var(--color-primary-soft);color:var(--color-primary);border-radius:9999px;padding:.05rem .45rem;font-size:.6875rem;font-weight:600}.week-day-jobs{flex-direction:column;flex:1;gap:.3rem;padding:.375rem;display:flex;overflow-y:auto}.week-mini-card{border-radius:var(--radius);border:1px solid var(--color-border-soft);background:var(--color-surface);text-align:left;cursor:pointer;flex-direction:column;gap:.125rem;min-width:0;padding:.375rem .5rem;transition:background .15s;display:flex}.week-mini-card:hover{background:var(--color-primary-soft);border-color:var(--color-primary-border)}.week-mini-card__top{align-items:center;gap:.35rem;display:flex}.week-mini-card__dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.week-mini-card__dot--scheduled{background:var(--color-status-info-text)}.week-mini-card__dot--assigned{background:var(--color-primary)}.week-mini-card__dot--in-progress{background:var(--color-warning)}.week-mini-card__dot--completed{background:var(--color-success)}.week-mini-card__dot--canceled{background:var(--color-status-neutral-text)}.week-mini-card__dot--no-show{background:var(--color-danger)}.week-mini-card__time{color:var(--color-text);white-space:nowrap;font-size:.6875rem;font-weight:600}.week-mini-card__customer{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:500;overflow:hidden}.week-mini-card__service{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.6875rem;overflow:hidden}@media (width<=768px){.menu-toggle{display:flex}.owner-header-shell{padding:0 .75rem}.owner-nav{display:none}.app-nav.open{top:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-md);z-index:99;flex-direction:column;display:flex;position:fixed;left:0;right:0}.owner-mobile-nav.open{max-height:calc(100vh - var(--header-height));overflow-y:auto}.app-nav.open a{border-bottom:none;border-left:3px solid #0000;padding:1rem 1.5rem}.app-nav.open a.active{border-left-color:var(--color-primary);border-bottom-color:#0000}.app-main{padding:1rem}.owner-main{padding:1rem .875rem 1.5rem}.owner-page-title{font-size:1.25rem}.owner-page-actions,.owner-page-actions>.btn{width:100%}.owner-page-toolbar{padding:.75rem}.owner-page-toolbar-row--end{justify-content:stretch}.owner-page-toolbar-row--end .view-toggle{width:100%}.owner-page-toolbar-row--end .view-toggle .btn{flex:1}.owner-detail-section{padding:1rem}.job-form-shell{grid-template-columns:1fr}.job-form-section{padding:1rem}.job-form-actions{flex-direction:column-reverse;align-items:stretch}.job-form-actions .btn{width:100%}.jobs-toolbar-row{align-items:stretch}.jobs-toolbar-search{width:100%;min-width:0}.jobs-toolbar-filters{width:100%}.jobs-toolbar-field{flex:12rem;min-width:0}.jobs-view-toggle{width:100%}.jobs-view-toggle .btn{flex:1 1 0}.jobs-view-toggle-label{display:none}.jobs-toolbar-summary{align-items:stretch}.jobs-toolbar-summary .btn{width:100%}.schedule-nav-surface{padding:.8rem}.day-label,.week-label{order:-1;width:100%;min-width:0}.job-row-header{flex-direction:column;gap:.85rem;padding:.95rem}.job-row-time,.job-row-status{width:auto}.job-row-main{flex-direction:column;align-items:flex-start}.job-row-title-wrap{gap:.3rem}.job-row-meta{flex-direction:column;align-items:flex-start;gap:.45rem}.job-row-info--truncate{flex-basis:auto}.job-row-contact{flex-flow:wrap;align-items:flex-start;gap:.45rem;width:auto}.job-row-actions{justify-content:stretch;width:100%;max-width:none}.job-row-actions--desktop{display:none}.job-row-actions--mobile{display:flex}.job-row-actions .btn{flex:calc(50% - .35rem)}.week-day{min-height:auto}.technician-availability__header{flex-direction:column;align-items:stretch}.technician-availability__toggle{align-self:flex-start}.technician-availability__item{flex-direction:column;align-items:stretch}.technician-availability__aside{text-align:left;align-items:flex-start}.customer-row{align-items:flex-start}.customer-row-actions{align-self:center}.customer-row-call-label{display:none}.customer-detail-header{padding:1rem}.customer-detail-hero,.customer-detail-header-actions{width:100%}.customer-detail-header-actions .btn{flex:1 1 0;min-width:0}.customer-info-grid{grid-template-columns:1fr}.customer-job-header{flex-direction:column}.customer-job-item{padding:.95rem}.owner-header-right{gap:.5rem}.owner-user-chip{background:0 0;padding:0}.owner-user-chip .user-name,.owner-signout-label{display:none}.form-row{grid-template-columns:1fr}.dashboard-grid{grid-template-columns:repeat(2,1fr)}.week-grid{grid-template-columns:1fr}.page-actions{justify-content:space-between;width:100%}.customer-photos-grid{grid-template-columns:repeat(auto-fill,minmax(60px,1fr))}}.tech-layout .app-main{padding:1rem 1.25rem}.tech-jobs-list{flex-direction:column;gap:.625rem;display:flex}.tech-job-card{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;border:none}.tech-job-card:active{transform:scale(.99)}.tech-job-card-top{justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.tech-job-customer{font-size:.9375rem;font-weight:600}.tech-job-service{color:var(--color-text-muted);font-size:.8125rem;font-weight:500}.tech-job-card-right{align-items:center;gap:.35rem;display:flex}.tech-job-card-right .chevron{color:var(--color-text-muted)}.tech-job-meta{flex-direction:column;gap:.25rem;margin-bottom:.5rem;display:flex}.tech-job-meta-item{color:var(--color-text-muted);align-items:center;gap:.3rem;font-size:.8125rem;display:flex}.tech-job-note-preview{color:var(--color-text);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:.5rem;font-size:.84rem;line-height:1.45;display:-webkit-box;overflow:hidden}.tech-job-previous-visit{border-radius:calc(var(--radius) + 1px);background:var(--color-surface-muted);border:1px solid var(--color-border-soft);flex-direction:column;gap:.18rem;margin-bottom:.65rem;padding:.65rem .75rem;display:flex}.tech-job-previous-visit-label{letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);font-size:.68rem;font-weight:700}.tech-job-previous-visit-copy{color:var(--color-text);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.81rem;line-height:1.45;display:-webkit-box;overflow:hidden}.tech-job-quick-actions{gap:.5rem;display:flex}.tech-detail{padding-bottom:2rem}.tech-detail-header{align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.tech-detail-header h2{flex:1;font-size:1.125rem;font-weight:600}.tech-detail-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:calc(var(--radius) + 2px);margin-bottom:.625rem;padding:1rem}.tech-detail-customer{margin-bottom:.125rem;font-size:1.0625rem;font-weight:600}.tech-detail-service{color:var(--color-text-muted);margin-bottom:.75rem;font-size:.875rem;font-weight:500}.tech-detail-info-grid{flex-direction:column;gap:.5rem;margin-bottom:.75rem;display:flex}.tech-detail-info{color:var(--color-text-muted);align-items:flex-start;gap:.5rem;font-size:.8125rem;display:flex}.tech-detail-actions{gap:.75rem;display:flex}.tech-detail-actions .btn{flex:1}.tech-action-btn{min-height:48px;font-size:.9375rem;font-weight:600}.tech-clock-info{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);align-items:center;gap:.5rem;margin-bottom:.75rem;padding:.5rem .75rem;font-size:.8125rem;display:flex}.tech-clock-info.completed{color:var(--color-success);background:#f0fdf4}.tech-section-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.tech-section-header h4{align-items:center;gap:.35rem;font-size:.875rem;font-weight:600;display:flex}.tech-note-form{margin-bottom:.75rem}.tech-note-form textarea{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font:inherit;resize:vertical;padding:.5rem;font-size:.9rem}.tech-note-form textarea:focus{border-color:var(--color-primary);outline:none}.tech-note-form-actions{justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}.tech-notes-list{flex-direction:column;gap:.5rem;display:flex}.tech-note-item{background:var(--color-bg);border:1px solid var(--color-border-soft);border-radius:var(--radius);padding:.5rem .75rem;font-size:.8125rem}.tech-note-item p{margin-bottom:.25rem}.tech-job-note-text{color:var(--color-text-muted);font-size:.9rem;font-style:italic}.tech-photos-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:.5rem;margin-top:.5rem;display:grid}.tech-photo-thumb{aspect-ratio:1;border-radius:var(--radius);border:1px solid var(--color-border);overflow:hidden}.tech-photo-thumb img{object-fit:cover;width:100%;height:100%}.sync-banner{border-radius:var(--radius);background:#fffbeb;border:1px solid #fde68a;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.5rem .75rem;font-size:.8rem;display:flex}.text-danger{color:var(--color-danger)}.filter-bar{flex-wrap:wrap;gap:.35rem;margin-bottom:1rem;display:flex}.empty-icon{color:var(--color-border);margin-bottom:.75rem}.invoice-form{width:100%}.invoice-form-shell{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1rem;display:grid}.invoice-form-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.25rem}.invoice-form-section--summary{align-self:start}.invoice-form-section-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:1rem;display:flex}.invoice-form-section-title{color:var(--color-text);font-size:.98rem;font-weight:700}.invoice-form-section-copy{color:var(--color-text-muted);margin-top:.25rem;font-size:.9rem;line-height:1.55}.invoice-header-row{border-bottom:1px solid var(--color-border);justify-content:space-between;padding:.35rem 0;font-size:.9rem;display:flex}.invoice-label{color:var(--color-text-muted);font-weight:500}.invoice-number{color:var(--color-text);font-weight:600}.invoice-number--pending{color:var(--color-text-muted);font-style:italic;font-weight:500}.invoice-items-section{margin-bottom:1.25rem}.invoice-items-header{text-transform:uppercase;color:var(--color-text-muted);letter-spacing:.08em;border-bottom:1px solid var(--color-border);background:var(--color-surface-muted);grid-template-columns:1fr 70px 90px 90px 40px;gap:.5rem;padding:.8rem 1rem .65rem;font-size:.75rem;font-weight:600;display:grid}.invoice-item-row{border-bottom:1px solid var(--color-border);grid-template-columns:1fr 70px 90px 90px 40px;align-items:center;gap:.5rem;padding:.8rem 1rem;display:grid}.invoice-item-row:last-child{border-bottom:none}.invoice-item-row.readonly{grid-template-columns:1fr 70px 90px 90px;font-size:.9rem}.invoice-item-row input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;padding:.6rem .7rem;font-size:.9rem}.invoice-item-row input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-focus);outline:none}.invoice-item-remove{background:#fff;border:1px solid #94a3b833}.col-total{text-align:right;font-weight:600}.col-qty,.col-price{text-align:right}.invoice-totals{margin-top:.75rem;margin-bottom:1rem}.invoice-total-row{justify-content:space-between;padding:.35rem 0;font-size:.9rem;display:flex}.invoice-notes-group{margin-top:1rem}.invoice-notes-group textarea{resize:vertical;min-height:7rem}.invoice-form-actions{border-top:1px solid var(--color-border);background:var(--color-surface);justify-content:space-between;align-items:center;margin-top:1rem;padding:.875rem 1rem;position:sticky;bottom:0}.invoice-form-actions .btn:last-child{min-width:148px}.invoice-total-row.total{border-top:2px solid var(--color-text);margin-top:.25rem;padding-top:.5rem;font-size:1.1rem;font-weight:700}.invoice-list{flex-direction:column;display:flex}.invoice-list>*+*{border-top:1px solid var(--color-border)}.invoice-row{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none;align-items:center;gap:.75rem;padding:.75rem 1rem;transition:background-color .15s;display:flex}.invoice-row:hover,.invoice-row:focus-visible{background:var(--color-surface-muted)}.invoice-row-main{flex:1;min-width:0}.invoice-row-top{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.invoice-row-title-wrap{flex-wrap:wrap;align-items:center;gap:.5rem;min-width:0;display:flex}.invoice-row-number{color:var(--color-text);font-size:.875rem;font-weight:600}.invoice-row-meta{flex-wrap:wrap;align-items:center;gap:.8rem;margin-top:.35rem;display:flex}.invoice-row-info{color:var(--color-text-muted);align-items:center;gap:.3rem;font-size:.8125rem;display:flex}.invoice-row-total{color:var(--color-primary);align-items:center;gap:.2rem;font-size:1rem;font-weight:600;display:inline-flex}.invoice-row-chevron{color:var(--color-text-muted);flex-shrink:0}.invoice-detail{flex-direction:column;gap:1rem;display:flex}.invoice-detail-header{background:var(--surface-gradient-hero);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem;display:flex}.invoice-detail-back{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;background:#ffffffe6;border-radius:9999px;align-items:center;gap:.4rem;padding:.55rem .85rem;font-weight:600;transition:background .2s,border-color .2s,transform .2s;display:inline-flex}.invoice-detail-back:hover{background:var(--color-surface);border-color:#cbd5e1;transform:translateY(-1px)}.invoice-detail-hero{flex:18rem;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.invoice-detail-heading{min-width:0}.invoice-detail-heading h2{letter-spacing:-.03em;color:var(--color-text);margin-bottom:.35rem;font-size:1.5rem;line-height:1.05}.invoice-detail-subtitle{color:var(--color-text-muted);font-size:.95rem}.invoice-info-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.5rem;display:grid}.invoice-info-card{background:var(--color-bg);border:1px solid var(--color-border-soft);border-radius:calc(var(--radius) + 1px);color:var(--color-text);flex-direction:column;gap:.2rem;padding:.625rem .75rem;font-size:.85rem;display:flex}.invoice-form-section--summary .invoice-info-grid{grid-template-columns:1fr 1fr;gap:.4rem}.invoice-form-section--summary .invoice-info-card{border:none;border-bottom:1px solid var(--color-border-soft);background:0 0;border-radius:0;padding:.5rem .65rem}.invoice-form-section--summary .invoice-info-card:last-child,.invoice-form-section--summary .invoice-info-card:nth-last-child(2):nth-child(odd){border-bottom:none}.invoice-info-card--input input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font:inherit;color:var(--color-text);background:#fff;outline:none;padding:.65rem .75rem}.invoice-info-card--input input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-focus)}.invoice-info-label{letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);font-size:.74rem;font-weight:700}.invoice-info-value{color:var(--color-primary);font-size:1.1rem;font-weight:700}.invoice-line-list{flex-direction:column;display:flex}.invoice-line-item{justify-content:space-between;align-items:center;gap:.75rem;padding:.95rem 1rem;display:flex}.invoice-line-item+.invoice-line-item{border-top:1px solid var(--color-border)}.invoice-line-item-main{flex-direction:column;gap:.25rem;min-width:0;display:flex}.invoice-line-item-desc{color:var(--color-text);font-size:.94rem;font-weight:600}.invoice-line-item-meta{color:var(--color-text-muted);font-size:.83rem}.invoice-line-item-total{color:var(--color-text);flex-shrink:0;font-weight:700}.invoice-totals--detail{width:min(100%,320px);margin-top:1rem;margin-left:auto}.invoice-detail-notes{color:var(--color-text);white-space:pre-wrap;line-height:1.65}.invoice-action-grid{flex-direction:column;gap:.5rem;display:flex}.invoice-action-grid .btn{min-width:200px}.invoice-action-grid .invoice-actions-row{flex-wrap:wrap;gap:.5rem;display:flex}.invoice-action-grid .invoice-actions-row .btn{flex:1;min-width:140px}.invoice-paid-confirmation{color:var(--color-status-success-text);align-items:center;gap:.5rem;padding:.625rem 0;font-size:.875rem;font-weight:500;display:flex}@media (width<=768px){.invoice-form-shell{grid-template-columns:1fr}.invoice-form-section{padding:1rem}.invoice-items-header{display:none}.invoice-row{align-items:flex-start}.invoice-row-top,.invoice-line-item,.invoice-detail-hero{flex-direction:column;align-items:flex-start}.invoice-row-total{font-size:.95rem}.invoice-detail-header{padding:1rem}.invoice-info-grid{grid-template-columns:1fr}.invoice-item-row{grid-template-columns:1fr;gap:.35rem}.invoice-item-row.readonly{grid-template-columns:1fr}.col-qty,.col-price,.col-total{text-align:left}.invoice-item-row .col-action{justify-self:end}.invoice-form-actions{flex-direction:column-reverse;align-items:stretch}.invoice-form-actions .btn,.invoice-action-grid .btn{width:100%}}.search-bar{margin-bottom:1rem;position:relative}.search-icon{color:var(--color-text-muted);pointer-events:none;position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.search-input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:100%;color:var(--color-text);outline:none;padding:.4375rem .75rem .4375rem 2.25rem;font-size:.8125rem}.search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-focus)}.customer-list{flex-direction:column;display:flex}.customer-list>*+*{border-top:1px solid var(--color-border)}.customer-row{cursor:pointer;outline:none;align-items:center;gap:.75rem;padding:.75rem 1rem;transition:background-color .15s;display:flex}.customer-row:hover,.customer-row:focus-visible{background:var(--color-bg)}.customer-row-avatar{background:var(--color-primary-soft-strong);width:2.25rem;height:2.25rem;color:var(--color-primary);letter-spacing:.02em;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:inline-flex}.customer-row-body{flex:1;min-width:0}.customer-row-main{align-items:center;gap:.5rem;min-width:0;display:flex}.customer-row-name{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:.875rem;font-weight:600;overflow:hidden}.customer-row-meta{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:.25rem;display:flex}.customer-row-info,.customer-row-empty{color:var(--color-text-muted);align-items:center;gap:.3rem;font-size:.8125rem;display:inline-flex}.customer-row-info--truncate{flex:16rem;min-width:0}.customer-row-info--truncate span:last-child{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.customer-row-actions{flex-shrink:0;align-items:center;gap:.35rem;display:flex}.customer-row-call{min-width:72px}.customer-row-chevron{color:var(--color-text-muted)}.customer-detail{flex-direction:column;gap:1rem;display:flex}.customer-detail-header{background:var(--surface-gradient-hero);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.25rem;display:flex}.customer-detail-back{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;background:#ffffffe6;border-radius:9999px;align-items:center;gap:.4rem;padding:.55rem .85rem;font-weight:600;transition:background .2s,border-color .2s,transform .2s;display:inline-flex}.customer-detail-back:hover{background:var(--color-surface);border-color:#cbd5e1;transform:translateY(-1px)}.customer-detail-hero{flex:18rem;align-items:center;gap:1rem;min-width:0;display:flex}.customer-detail-avatar{background:linear-gradient(135deg, var(--color-primary-hover), var(--color-primary));color:#fff;letter-spacing:.04em;border-radius:1.2rem;justify-content:center;align-items:center;width:3.5rem;height:3.5rem;font-size:1rem;font-weight:700;display:inline-flex;box-shadow:inset 0 1px #fff3}.customer-detail-heading{min-width:0}.customer-detail-heading h2{letter-spacing:-.03em;color:var(--color-text);margin-bottom:.35rem;font-size:1.5rem;line-height:1.05}.customer-detail-subtitle{color:var(--color-text-muted);font-size:.95rem}.customer-detail-header-actions{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.customer-detail-header-actions .btn{min-width:112px}.customer-info-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;display:grid}.customer-info-item{background:var(--color-bg);border:1px solid var(--color-border-soft);border-radius:calc(var(--radius) + 1px);color:var(--color-text);align-items:flex-start;gap:.5rem;min-width:0;padding:.9rem 1rem;font-size:.9rem;display:flex}.customer-info-item svg{color:var(--color-text-muted);flex-shrink:0;margin-top:.1rem}.customer-info-item span,.customer-info-item a{word-break:break-word;min-width:0;line-height:1.45}.customer-info-item a{color:var(--color-primary);text-decoration:none}.customer-detail-notes{color:var(--color-text);white-space:pre-wrap;line-height:1.65}.customer-jobs-list{flex-direction:column;display:flex}.customer-job-item{background:0 0;padding:1rem 1.1rem}.customer-job-item+.customer-job-item{border-top:1px solid #94a3b82e}.customer-job-header{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.5rem;display:flex}.customer-job-service{color:var(--color-text);font-size:1rem;font-weight:600;display:block}.customer-job-date{color:var(--color-text-muted);margin-top:.2rem;font-size:.85rem;display:block}.customer-job-notes{color:var(--color-text-muted);margin-bottom:.5rem;font-size:.9rem;line-height:1.55}.customer-job-subheading{letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:.55rem;font-size:.76rem;font-weight:700}.customer-job-field-notes{border-top:1px solid var(--color-border-soft);margin-top:.75rem;padding-top:.75rem}.customer-field-note{background:var(--color-bg);border-radius:calc(var(--radius) + 1px);border:1px solid #94a3b824;padding:.8rem .9rem;font-size:.85rem}.customer-field-note+.customer-field-note{margin-top:.55rem}.customer-field-note p{color:var(--color-text);margin-bottom:.25rem;line-height:1.5}.customer-job-photos{color:var(--color-text-muted);border-top:1px solid var(--color-border-soft);flex-direction:column;align-items:flex-start;gap:.65rem;margin-top:.75rem;padding-top:.75rem;font-size:.8rem;display:flex}.customer-job-photo-label{color:var(--color-text-muted);align-items:center;gap:.4rem;font-size:.8rem;font-weight:600;display:inline-flex}.customer-photos-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:.5rem;width:100%;display:grid}.kpi-card.kpi-success .kpi-value{color:var(--color-success)}.kpi-card.kpi-warning .kpi-value{color:var(--color-warning)}.kpi-card.kpi-danger .kpi-value{color:var(--color-danger)}.dashboard-prompt-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;padding:1rem 1.25rem;font-size:.875rem;display:flex}.dashboard-alert{border-radius:var(--radius);color:var(--color-warning);background:#fffbeb;border:1px solid #fde68a;align-items:center;gap:.5rem;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.9rem;display:flex}.dashboard-section{margin-bottom:1.5rem}.dashboard-section-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.75rem;margin-bottom:.85rem;display:flex}.dashboard-section h3{font-size:1rem;font-weight:600}.recent-activity-list{flex-direction:column;display:flex}.recent-activity-item{justify-content:space-between;align-items:center;gap:.75rem;padding:.95rem 1rem;display:flex}.recent-activity-item+.recent-activity-item{border-top:1px solid var(--color-border)}.recent-activity-main{flex:1;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;display:flex}.recent-activity-customer{font-size:.9rem;font-weight:600;display:block}.recent-activity-service{color:var(--color-text-muted);font-size:.8rem}.recent-activity-time{color:var(--color-text-muted);flex-shrink:0;font-size:.82rem}.recent-activity-meta{align-items:center;gap:.5rem;display:flex}@media (width<=768px){.dashboard-hero-card{padding:1rem}.dashboard-hero-stats{grid-template-columns:1fr;width:100%}.recent-activity-item,.recent-activity-main{flex-direction:column;align-items:flex-start}.recent-activity-time{font-size:.8rem}}.error-boundary{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;padding:2rem;display:flex}.error-boundary h2{font-size:1.5rem}.error-message{background:var(--color-bg);border-radius:var(--radius);color:var(--color-danger);max-width:500px;padding:.75rem 1rem;font-size:.85rem;overflow-x:auto}.badge-availability-available{background:var(--color-status-success-bg);color:var(--color-status-success-text)}.badge-availability-busy{background:var(--color-status-warning-bg);color:var(--color-status-warning-text)}.badge-availability-off{background:var(--color-status-neutral-bg);color:var(--color-status-neutral-text)}.badge-availability-blocked{background:var(--color-status-danger-bg);color:var(--color-status-danger-text)}.technician-availability{flex-direction:column;gap:.75rem;display:flex}.technician-availability__header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.technician-availability__header-copy{flex-direction:column;gap:.2rem;display:flex}.technician-availability__header-copy label{color:var(--color-text);font-size:.9rem;font-weight:700}.technician-availability__header-copy p{color:var(--color-text-muted);font-size:.8rem}.technician-availability__toggle{color:var(--color-text-muted);cursor:pointer;border:1px solid var(--color-border);background:#fff;border-radius:9999px;align-items:center;gap:.375rem;padding:.45rem .65rem;font-size:.75rem;display:flex}.technician-availability__toggle input{margin:0}.technician-availability__list{border:1px solid var(--color-border-soft);border-radius:calc(var(--radius) + 2px);background:var(--color-surface-muted);flex-direction:column;gap:.5rem;max-height:320px;padding:.25rem;display:flex;overflow-y:auto}.technician-availability__item{border:1px solid var(--color-border-soft);border-radius:calc(var(--radius) + 2px);cursor:pointer;text-align:left;background:#fff;justify-content:space-between;align-items:center;gap:.75rem;width:100%;padding:.8rem .85rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.technician-availability__item:hover:not(:disabled){border-color:var(--color-primary-border);box-shadow:0 6px 16px #0f172a0f}.technician-availability__item--selected{background:var(--color-status-info-bg);border-color:var(--color-primary-border-strong);box-shadow:0 0 0 1px var(--color-primary-outline)}.technician-availability__item:disabled{opacity:1;cursor:not-allowed;background:var(--color-surface-muted)}.technician-availability__identity{align-items:center;gap:.75rem;min-width:0;display:flex}.technician-availability__avatar{background:var(--color-primary-soft-strong);width:2.25rem;height:2.25rem;color:var(--color-primary);letter-spacing:.04em;border-radius:.9rem;flex-shrink:0;justify-content:center;align-items:center;font-size:.78rem;font-weight:700;display:inline-flex}.technician-availability__details{flex-direction:column;gap:.15rem;min-width:0;display:flex}.technician-availability__name{color:var(--color-text);white-space:nowrap;min-width:0;font-weight:600}.technician-availability__meta{color:var(--color-text-muted);white-space:normal;font-size:.78rem}.technician-availability__aside{text-align:right;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.35rem;display:flex}.technician-availability__reason{color:var(--color-text-muted);max-width:17rem;font-size:.76rem}.technician-availability__unassign{border-radius:calc(var(--radius) + 2px);cursor:pointer;width:100%;color:var(--color-text-muted);background:0 0;border:1px dashed #94a3b859;justify-content:center;align-items:center;padding:.75rem;font-size:.82rem;font-weight:600;display:flex}.technician-availability__unassign:hover{background:#fff}.technician-availability__empty{text-align:center;color:var(--color-text-muted);border-radius:calc(var(--radius) + 2px);background:#f8fafc;border:1px dashed #94a3b847;padding:1rem;font-size:.8rem}.technician-directory{flex-direction:column;display:flex}.technician-directory__row{border:none;border-bottom:1px solid var(--color-border-soft);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;align-items:center;gap:1rem;width:100%;padding:1rem 1.125rem;display:flex}.technician-directory__row:last-child{border-bottom:none}.technician-directory__row:hover{background:var(--color-surface-muted)}.technician-directory__identity{align-items:center;gap:.875rem;min-width:0;display:flex}.technician-directory__avatar,.technician-hero__avatar{width:2.75rem;height:2.75rem;color:var(--color-primary);letter-spacing:.04em;background:#2563eb1f;border-radius:9999px;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.technician-directory__copy{flex-direction:column;gap:.2rem;min-width:0;display:flex}.technician-directory__name,.technician-hero__name{color:var(--color-text);font-size:1rem;font-weight:600}.technician-directory__meta,.technician-directory__status,.technician-block-list__window,.technician-block-list__note,.technician-job-list__meta,.technician-hero__meta{color:var(--color-text-muted);font-size:.8125rem}.technician-directory__aside{color:var(--color-text-muted);flex-shrink:0;align-items:center;gap:.75rem;display:flex}.technician-detail-shell{flex-direction:column;gap:1rem;display:flex}.technician-hero{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.technician-hero__identity{align-items:center;gap:.875rem;display:flex}.technician-hero__meta{flex-wrap:wrap;gap:.75rem 1rem;display:flex}.technician-hero__meta span,.technician-job-list__title,.technician-job-list__meta{align-items:center;gap:.4rem;display:flex}.technician-tabs{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.technician-tabs__link{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);min-height:2.25rem;color:var(--color-text-muted);justify-content:center;align-items:center;padding:.45rem .8rem;font-size:.8125rem;font-weight:600;text-decoration:none;display:inline-flex}.technician-tabs__link.active{color:var(--color-primary);background:#2563eb14;border-color:#2563eb52}.technician-overview-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.technician-stat-list,.technician-summary-cards,.technician-quick-actions,.technician-job-list,.technician-block-list{flex-direction:column;gap:.75rem;display:flex}.technician-stat-list__item,.technician-summary-card,.technician-job-list__item,.technician-block-list__item,.technician-warning-card,.technician-schedule__row{border:1px solid var(--color-border-soft);border-radius:calc(var(--radius) + 2px);background:var(--color-surface-muted)}.technician-stat-list__item,.technician-summary-card{justify-content:space-between;gap:1rem;padding:.9rem 1rem;display:flex}.technician-stat-list__item span,.technician-summary-card__label{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.75rem;font-weight:600}.technician-summary-card__value{color:var(--color-text);font-size:.95rem}.technician-quick-actions{flex-flow:wrap}.technician-warning-card{background:#fffbeb;border-color:#fbbf24;padding:.9rem 1rem}.technician-warning-card__header,.technician-warning-card__actions,.technician-block-list__actions,.technician-schedule__actions,.technician-schedule__inputs{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.technician-warning-card__header{color:#92400e}.technician-warning-card__list{color:#78350f;flex-direction:column;gap:.35rem;margin:.75rem 0 0;padding-left:1.25rem;display:flex}.technician-schedule{flex-direction:column;gap:.75rem;display:flex}.technician-schedule__row{padding:.95rem 1rem}.technician-schedule__day{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.technician-schedule__toggle{color:var(--color-text-muted);align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.toggle-switch{cursor:pointer;color:var(--color-text-muted);align-items:center;gap:.625rem;font-size:.875rem;display:inline-flex}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-switch__slider{background:var(--color-border);border-radius:11px;flex-shrink:0;width:40px;height:22px;transition:background .2s;display:inline-block;position:relative}.toggle-switch__slider:after{content:"";background:var(--color-surface);width:18px;height:18px;box-shadow:var(--shadow-sm);border-radius:50%;transition:transform .2s;position:absolute;top:2px;left:2px}.toggle-switch input:checked+.toggle-switch__slider{background:var(--color-primary)}.toggle-switch input:checked+.toggle-switch__slider:after{transform:translate(18px)}.toggle-switch__label{-webkit-user-select:none;user-select:none}.schedule-group-header{color:var(--color-text-muted);justify-content:space-between;align-items:center;padding:.5rem 1rem 0;font-size:.8125rem;display:flex}.schedule-group-note{color:var(--color-text-muted);margin-top:.375rem;padding-left:0;font-size:.75rem;display:block}.technician-schedule__inputs{align-items:flex-end}.technician-schedule__inputs .form-group{min-width:8rem}.technician-schedule__savebar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;display:flex}.technician-schedule__error{margin-top:.75rem}.technician-block-list__item,.technician-job-list__item{justify-content:space-between;align-items:center;gap:1rem;padding:.95rem 1rem;display:flex}.technician-block-list__copy,.technician-job-list__main{flex-direction:column;gap:.25rem;min-width:0;display:flex}.technician-block-list__note{white-space:pre-wrap}.technician-modal-backdrop{z-index:50;background:#0f172a85;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.technician-modal{background:var(--color-surface);border-radius:calc(var(--radius) + 6px);width:min(100%,38rem);max-height:calc(100vh - 2rem);box-shadow:var(--shadow-lg);border:1px solid var(--color-border-soft);overflow:auto}.technician-modal__header,.technician-modal__footer{justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem;display:flex}.technician-modal__header{border-bottom:1px solid var(--color-border-soft)}.technician-modal__header h3{font-size:1rem;font-weight:600}.technician-modal__body{flex-direction:column;gap:1rem;padding:1rem 1.1rem;display:flex}.technician-modal__footer{border-top:1px solid var(--color-border-soft);justify-content:flex-end}@media (width<=1024px){.technician-overview-grid{grid-template-columns:1fr}}@media (width<=768px){.technician-directory__row,.technician-block-list__item,.technician-job-list__item,.technician-schedule__day,.technician-schedule__savebar,.technician-modal__header,.technician-modal__footer{flex-direction:column;align-items:stretch}.technician-directory__aside,.technician-hero,.technician-hero__meta,.technician-quick-actions,.technician-schedule__inputs,.technician-warning-card__actions,.technician-block-list__actions,.technician-schedule__actions,.technician-quick-actions>.btn,.technician-block-list__actions>.btn,.technician-schedule__actions>.btn,.technician-warning-card__actions>.btn,.technician-schedule__inputs>.btn,.technician-modal{width:100%}}
