@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;0,9..40,800;0,9..40,900&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}.absolute{position:absolute}.fixed\!{position:fixed!important}.relative{position:relative}.static{position:static}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.min-h-screen{min-height:100vh}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.items-center{align-items:center}.justify-center{justify-content:center}.border{border-style:var(--tw-border-style);border-width:1px}.bg-\[\#0d0f14\]{background-color:#0d0f14}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--radius-sm:.25rem;--radius-lg:.5rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed\!{position:fixed!important}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.min-h-screen{min-height:100vh}.flex-1{flex:1}.flex-2{flex:2}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.items-center{align-items:center}.justify-center{justify-content:center}.border{border-style:var(--tw-border-style);border-width:1px}.bg-\[\#0d0f14\]{background-color:#0d0f14}.text-right{text-align:right}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--bg:#f5f4f1;--surface:#fff;--surface-2:#f9f8f6;--border:#e5e2dc;--border-strong:#ccc9c2;--hover:#f0ede8;--text:#1a1814;--muted:#6b6460;--faint:#a09c97;--accent:#6366f1;--accent-hover:#4f46e5;--accent-soft:#eef0fe;--accent-border:#c7c9fb;--success:#16a34a;--success-soft:#f0fdf4;--danger:#dc2626;--danger-soft:#fef2f2;--warning:#d97706;--warning-soft:#fffbeb;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014, 0 2px 4px #0000000a;--shadow-lg:0 12px 32px #0000001a, 0 4px 8px #0000000f;--sidebar-width:220px;--topbar-height:56px;--font-body:"DM Sans", system-ui, sans-serif;--radius:12px;--radius-sm:8px;--radius-lg:16px}[data-theme=dark]{--bg:#06080f;--surface:#0e1220;--surface-2:#111827;--border:#1e2d45;--border-strong:#2a3d5a;--hover:#1a2235;--text:#f0f2f7;--muted:#a8b4c8;--faint:#5a6a84;--accent:#6366f1;--accent-hover:#4f46e5;--accent-soft:#1a1d3a;--accent-border:#3d4299;--success:#22c55e;--success-soft:#052e16;--danger:#ef4444;--danger-soft:#450a0a;--warning:#f59e0b;--warning-soft:#451a03;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 12px 32px #00000080}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;letter-spacing:-.01em;min-height:100vh;font-size:14px}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}::selection{color:#1a1814;background:#c7c9fb}[data-theme=dark] ::selection{color:#fff;background:#4f46e5}.graftly-layout{background:var(--bg);height:100vh;display:flex;overflow:hidden}.graftly-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.graftly-content{background:var(--bg);flex:1;padding:2rem 2.5rem;overflow:hidden auto}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--surface);border-right:1px solid var(--border);z-index:50;flex-direction:column;flex-shrink:0;height:100vh;display:flex;position:relative;overflow:hidden}.sidebar__brand{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:.625rem;padding:1.25rem 1.125rem;display:flex}.sidebar__logo-icon{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.sidebar__brand-name{color:var(--text);letter-spacing:-.04em;font-size:1rem;font-weight:800}.sidebar__brand-dot{color:var(--accent)}.sidebar__nav{flex-direction:column;flex:1;gap:2px;padding:.75rem .625rem;display:flex;overflow-y:auto}.sidebar__nav-btn{border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;font-family:var(--font-body);letter-spacing:-.01em;text-align:left;background:0 0;border:none;align-items:center;gap:.625rem;width:100%;padding:.5625rem .75rem;font-size:.875rem;font-weight:500;transition:all .15s;display:flex}.sidebar__nav-btn:hover{background:var(--hover);color:var(--text)}.sidebar__nav-btn--active{background:var(--accent-soft);color:var(--accent);font-weight:600}[data-theme=dark] .sidebar__nav-btn--active{background:var(--accent-soft);color:#818cf8}.sidebar__nav-btn--active:hover{background:var(--accent-soft);color:var(--accent)}.sidebar__nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:18px;display:flex}.sidebar__nav-label{flex:1}.sidebar__bottom{border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:2px;padding:.625rem;display:flex}.sidebar__user{border-radius:var(--radius-sm);align-items:center;gap:.625rem;margin-top:2px;padding:.625rem .75rem;display:flex}.sidebar__avatar{background:var(--accent-soft);border:1px solid var(--accent-border);width:28px;height:28px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}.sidebar__user-info{flex:1;min-width:0}.sidebar__user-email{color:var(--faint);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;display:block;overflow:hidden}.topbar{height:var(--topbar-height);background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 2.5rem;display:flex}.topbar__title{color:var(--text);letter-spacing:-.03em;font-size:.9375rem;font-weight:700}.topbar__signout{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--faint);font-family:var(--font-body);cursor:pointer;letter-spacing:-.01em;background:0 0;padding:.375rem .75rem;font-size:.8125rem;transition:all .15s}.topbar__signout:hover{border-color:var(--danger);color:var(--danger)}.page-header{justify-content:space-between;align-items:flex-start;margin-bottom:1.75rem;display:flex}.page-header--end{align-items:flex-end}.page-header--wrap{flex-wrap:wrap;gap:1rem}.page-title{color:var(--text);letter-spacing:-.04em;font-size:1.5rem;font-weight:800;line-height:1.1}.page-subtitle{color:var(--faint);letter-spacing:-.01em;margin-top:.25rem;font-size:.8125rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.25rem 1.5rem}.card--hoverable{cursor:pointer;transition:all .2s}.card--hoverable:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.25rem 1.5rem;transition:all .2s;position:relative;overflow:hidden}.stat-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-1px)}.stat-card__label{text-transform:uppercase;letter-spacing:.07em;color:var(--faint);margin-bottom:.625rem;font-size:.6875rem;font-weight:600}.stat-card__value{color:var(--text);letter-spacing:-.04em;margin-bottom:.375rem;font-size:2rem;font-weight:800;line-height:1}.stat-card__sub{color:var(--faint);font-size:.75rem}.btn-primary{color:#fff;cursor:pointer;letter-spacing:-.02em;font-size:.875rem;font-weight:700;font-family:var(--font-body);background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:10px;padding:.625rem 1.25rem;transition:all .2s;box-shadow:0 2px 8px #6366f140}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #6366f166}.btn-primary:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;transform:none}.btn-secondary{background:var(--surface);color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-size:.875rem;font-weight:500;font-family:var(--font-body);padding:.625rem 1.25rem;transition:all .15s}.btn-secondary:hover{color:var(--text);border-color:var(--border-strong);background:var(--hover)}.btn-flex-1{flex:1}.btn-flex-2{flex:2}.btn-danger{color:var(--danger)}.btn-primary--sending,.btn-secondary--sending{opacity:.6}.btn-secondary--xs{padding:.3rem .75rem;font-size:.75rem}.btn-secondary--sm,.btn-primary--sm{padding:.375rem .75rem;font-size:.8125rem}.job-row.job-row--selected{border-color:var(--accent);background:var(--accent-soft)}.scroll-body{flex:1;overflow-y:auto}.scroll-body--lg{padding:1.5rem}.scroll-body--tight{padding:1.25rem 1.5rem}.invoice-header{justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;display:flex}.invoice-header__business{color:var(--text);letter-spacing:-.03em;margin-bottom:.25rem;font-size:1.25rem;font-weight:800}.invoice-header__meta{color:var(--faint);font-size:.8125rem}.invoice-header__right{text-align:right}.invoice-header__number{color:var(--accent);letter-spacing:-.04em;font-size:1.5rem;font-weight:800}.invoice-billto{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:1.25rem;padding:.875rem 1rem}.invoice-billto__label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:.375rem;font-size:.6875rem;font-weight:600}.invoice-billto__name{color:var(--text);font-weight:600}.invoice-billto__address{color:var(--muted);font-size:.8125rem}.invoice-vat-note{color:var(--faint);margin-top:.75rem;font-size:.75rem}.invoice-sent-msg{background:var(--success-soft);border-radius:var(--radius-sm);color:var(--success);border:1px solid #bbf7d0;margin-top:1rem;padding:.75rem 1rem;font-size:.875rem;font-weight:600}.job-detail__footer-actions--wrap{flex-wrap:wrap;gap:.625rem;display:flex}.reminder-toast{background:var(--surface);border:1px solid var(--accent-border);border-radius:var(--radius);z-index:200;box-shadow:var(--shadow-lg);align-items:center;gap:1rem;padding:1rem 1.5rem;display:flex;position:fixed;bottom:2rem;left:50%;transform:translate(-50%)}.reminder-toast__text{color:var(--text);font-size:.875rem}.reminder-toast__actions{gap:.5rem;display:flex}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.6875rem;font-weight:600}.field-input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--font-body);outline:none;width:100%;padding:.625rem .875rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #6366f11f}.field-input::placeholder{color:var(--faint)}.field-error{color:var(--danger);margin-top:.375rem;font-size:.8125rem}.field-input--valid{border-color:var(--success)!important}.field-input--invalid{border-color:var(--danger)!important}.empty-state{background:var(--surface);border:2px dashed var(--border);border-radius:var(--radius);text-align:center;padding:3.5rem 2rem}.empty-state__icon{color:var(--accent);justify-content:center;margin-bottom:1rem;font-size:2rem;display:flex}.empty-state__title{color:var(--text);margin-bottom:.375rem;font-size:1rem;font-weight:700}.empty-state__desc{color:var(--faint);max-width:24rem;margin:0 auto 1.5rem;font-size:.8125rem;line-height:1.6}.dash-container{max-width:860px;margin:0 auto}.dash-hero{background:linear-gradient(135deg,var(--accent),#8b5cf6);border-radius:var(--radius-lg);color:#fff;cursor:pointer;justify-content:space-between;align-items:center;margin-bottom:2rem;padding:1.75rem 2rem;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 24px #6366f14d}.dash-hero:before{content:"";pointer-events:none;background:#ffffff12;border-radius:50%;width:280px;height:280px;position:absolute;top:-40%;right:-5%}.dash-hero__label{text-transform:uppercase;letter-spacing:.08em;opacity:.75;margin-bottom:.5rem;font-size:.75rem;font-weight:600}.dash-hero__value{letter-spacing:-.05em;margin-bottom:.375rem;font-size:3rem;font-weight:900;line-height:1}.dash-hero__sub{opacity:.7;font-size:.8125rem}.dash-hero__action{color:#fff;font-family:var(--font-body);cursor:pointer;white-space:nowrap;letter-spacing:-.02em;background:#fff3;border:1px solid #ffffff4d;border-radius:10px;padding:.625rem 1.25rem;font-size:.875rem;font-weight:700;transition:all .2s}.dash-hero__action:hover{background:#ffffff4d}.dash-stats{grid-template-columns:repeat(3,1fr);gap:.875rem;margin-bottom:1.25rem;display:grid}.dash-grid{grid-template-columns:1.2fr 1fr;gap:.875rem;display:grid}.dash-chart-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.5rem}.dash-section-title{color:var(--text);letter-spacing:-.02em;margin-bottom:1.25rem;font-size:.9375rem;font-weight:700}.dash-chart{align-items:flex-end;gap:.625rem;height:180px;display:flex}.dash-chart__col{flex-direction:column;flex:1;align-items:center;gap:.375rem;display:flex}.dash-chart__val{color:var(--faint);font-size:.625rem;font-weight:600}.dash-chart__bar-wrap{align-items:flex-end;width:100%;display:flex}.dash-chart__bar{border-radius:6px 6px 0 0;width:100%;transition:height .4s}.dash-chart__month{color:var(--faint);text-transform:uppercase;letter-spacing:.04em;font-size:.625rem;font-weight:600}.dash-recent-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.5rem}.dash-view-all{color:var(--accent);font-family:var(--font-body);cursor:pointer;opacity:1;letter-spacing:-.01em;background:0 0;border:none;font-size:.8125rem;font-weight:600;transition:opacity .15s}.dash-view-all:hover{opacity:.7}.dash-job-row{border-bottom:1px solid var(--border);cursor:pointer;justify-content:space-between;align-items:center;padding:.75rem 0;transition:all .15s;display:flex}.dash-job-row:last-child{border-bottom:none}.dash-job-row:hover .dash-job-row__customer{color:var(--accent)}.dash-job-row__main{min-width:0}.dash-job-row__customer{color:var(--text);margin-bottom:.15rem;font-size:.875rem;font-weight:600;transition:color .15s}.dash-job-row__type{color:var(--faint);font-size:.75rem}.dash-job-row__type--danger{color:var(--danger)}.dash-job-row__value{color:var(--text);font-size:.9375rem;font-weight:700}.dash-job-row__amount{font-weight:700}.dash-job-row__amount--danger{color:var(--danger)}.dash-job-row__amount--success{color:var(--success)}.dash-recent-card--spaced{margin-top:.875rem}.dash-job-list{flex-direction:column;gap:.5rem;display:flex}.dash-empty-text{color:var(--faint);font-size:.875rem}.count-pill{border-radius:999px;padding:.1rem .5rem;font-size:.6875rem;font-weight:700}.count-pill--danger{background:var(--danger-soft);color:var(--danger);border:1px solid #fca5a5;margin-left:.5rem}.filter-btn-row{flex-wrap:wrap;gap:.375rem;display:flex}.trend-badge{border-radius:999px;align-items:center;gap:.25rem;padding:.2rem .625rem;font-size:.75rem;font-weight:700;display:inline-flex}.trend-badge--up{background:var(--success-soft);color:var(--success);border:1px solid #bbf7d0}.trend-badge--down{background:var(--danger-soft);color:var(--danger);border:1px solid #fca5a5}.revenue-bar{align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.revenue-bar__label{color:var(--muted);flex-shrink:0;min-width:160px;font-size:.8125rem}.revenue-bar__track{background:var(--hover);border-radius:999px;flex:1;height:8px;overflow:hidden}.revenue-bar__fill{border-radius:999px;height:100%;transition:width .4s}.revenue-bar__value{color:var(--text);text-align:right;min-width:80px;font-size:.8125rem;font-weight:700}.dash-quickstats{border-bottom:1px solid var(--border);grid-template-columns:repeat(4,1fr);margin-bottom:2.5rem;padding-bottom:1.75rem;display:grid}.dash-quickstat{cursor:pointer;border-right:1px solid var(--border);padding:0 1.5rem;transition:opacity .15s}.dash-quickstat:first-child{padding-left:0}.dash-quickstat:last-child{border-right:none}.dash-quickstat:hover{opacity:.65}.dash-quickstat__label{text-transform:uppercase;letter-spacing:.08em;color:var(--faint);margin-bottom:.5rem;font-size:.6875rem;font-weight:600}.dash-quickstat__value{letter-spacing:-.05em;color:var(--text);font-size:2.25rem;font-weight:900;line-height:1}.dash-quickstat__value--loading{color:var(--faint)}.dash-quickstat__value--warning{color:var(--warning)}.dash-quickstat__value--info{color:#3b82f6}.dash-quickstat__value--accent{color:var(--accent)}.dash-quickstat__value--danger{color:var(--danger)}.dash-section-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.dash-section-header__title{color:var(--text);letter-spacing:-.03em;font-size:1rem;font-weight:700}.dash-list-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.dash-empty-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.375rem 1.5rem}.dash-empty-row__text{color:var(--faint);font-size:.875rem}.dash-jobrow{border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:1rem;padding:1rem 1.375rem;transition:background .15s;display:flex}.dash-jobrow:last-child{border-bottom:none}.dash-jobrow:hover{background:var(--hover)}.dash-jobrow__dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.dash-jobrow__main{flex:1;min-width:0}.dash-jobrow__customer{color:var(--text);letter-spacing:-.02em;margin-bottom:.1rem;font-size:.9375rem;font-weight:600}.dash-jobrow__type{color:var(--faint);font-size:.8125rem}.dash-jobrow__right{flex-shrink:0;align-items:center;gap:.875rem;display:flex}.dash-jobrow__value{color:var(--text);letter-spacing:-.03em;font-size:1rem;font-weight:700}.dash-week-strip{border-bottom:1px solid var(--border);grid-template-columns:repeat(7,1fr);display:grid}.dash-week-day{border-right:1px solid var(--border);flex-direction:column;align-items:center;gap:.25rem;padding:.5rem .25rem;display:flex}.dash-week-day:last-child{border-right:none}.dash-week-day--today{background:var(--accent-soft)}.dash-week-day__label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-size:.625rem;font-weight:700}.dash-week-day__num{letter-spacing:-.03em;color:var(--muted);font-size:.875rem;font-weight:800}.dash-week-day__num--today{color:var(--accent)}.dash-week-day__num--conflict{color:var(--danger)}.dash-week-day__dots{flex-wrap:wrap;justify-content:center;gap:2px;display:flex}.dash-week-day__dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.dash-week-day__dot-placeholder{width:6px;height:6px}.dash-week-empty{padding:1.375rem 1.5rem}.dash-attn-row{border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:1rem;padding:1rem 1.375rem;transition:background .15s;display:flex}.dash-attn-row:last-child{border-bottom:none}.dash-attn-row:hover{background:var(--hover)}.dash-attn-row--overdue{border-left:4px solid var(--danger)}.dash-attn-row--warning{border-left:4px solid var(--warning)}.dash-attn-row__main{flex:1;min-width:0}.dash-attn-row__customer{color:var(--text);letter-spacing:-.02em;margin-bottom:.1rem;font-size:.9375rem;font-weight:600}.dash-attn-row__msg{font-size:.8125rem}.dash-attn-row__msg--overdue{color:var(--danger)}.dash-attn-row__msg--warning{color:var(--warning)}.dash-attn-row__right{flex-shrink:0;align-items:center;gap:.875rem;display:flex}.dash-attn-row__value{color:var(--text);letter-spacing:-.03em;font-size:1rem;font-weight:700}.badge{letter-spacing:.02em;text-transform:uppercase;border-radius:999px;align-items:center;gap:.25rem;padding:.2rem .625rem;font-size:.6875rem;font-weight:700;display:inline-flex}.badge--quoted{color:#6366f1;background:#eef0fe}.badge--booked{color:#d97706;background:#fffbeb}.badge--inprogress{color:#2563eb;background:#eff6ff}.badge--completed{color:#16a34a;background:#f0fdf4}.badge--invoiced{color:#7c3aed;background:#faf5ff}.badge--paid{color:#16a34a;background:#f0fdf4}[data-theme=dark] .badge--quoted{color:#818cf8;background:#1e1f4a}[data-theme=dark] .badge--booked{color:#fbbf24;background:#1c1406}[data-theme=dark] .badge--inprogress{color:#60a5fa;background:#0c1e3d}[data-theme=dark] .badge--completed{color:#4ade80;background:#052e16}[data-theme=dark] .badge--invoiced{color:#c084fc;background:#2e1065}[data-theme=dark] .badge--paid{color:#4ade80;background:#052e16}.job-filters{flex-wrap:wrap;align-items:center;gap:.375rem;margin-bottom:1.25rem;display:flex}.job-filter-btn{font-size:.8125rem;font-family:var(--font-body);cursor:pointer;background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;gap:.375rem;padding:.375rem .875rem;font-weight:500;transition:all .15s;display:flex}.job-filter-btn:hover{color:var(--text);border-color:var(--border-strong)}.job-filter-btn--active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent);font-weight:600}.job-filter-count{background:var(--border);color:var(--muted);border-radius:999px;padding:.05rem .4rem;font-size:.6875rem;font-weight:700}.job-filter-btn--active .job-filter-count{background:var(--accent);color:#fff}.job-list{flex-direction:column;gap:.5rem;display:flex}.job-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;transition:all .15s;display:flex}.job-row:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-1px)}.job-row__main{flex:1;min-width:0}.job-row__customer{color:var(--text);margin-bottom:.25rem;font-size:.9375rem;font-weight:600}.job-row__meta{flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.job-row__type{color:var(--muted);font-size:.75rem}.job-row__dot,.job-row__address{color:var(--faint);font-size:.75rem}.job-row__right{flex-shrink:0;align-items:center;gap:.875rem;display:flex}.job-row__value{color:var(--text);text-align:right;letter-spacing:-.02em;min-width:4rem;font-size:1rem;font-weight:700}.job-detail-overlay{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:0 0;justify-content:flex-end;align-items:flex-start;display:flex;position:fixed;inset:0}.job-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg) 0 0 var(--radius-lg);width:440px;height:calc(100vh - 6rem);box-shadow:var(--shadow-lg);flex-direction:column;margin-top:3rem;animation:.25s cubic-bezier(.16,1,.3,1) both slideIn;display:flex;overflow:hidden}.job-detail--w480{width:480px}.job-detail--w500{width:500px}.job-detail--w520{width:520px}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.job-detail__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;padding:1.5rem;display:flex}.job-detail__name{color:var(--text);letter-spacing:-.03em;margin-bottom:.2rem;font-size:1.125rem;font-weight:700}.job-detail__type{color:var(--faint);font-size:.8125rem}.job-detail__close{background:var(--hover);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.75rem;transition:all .15s;display:flex}.job-detail__close:hover{color:var(--text);border-color:var(--border-strong)}.job-detail__body{flex-direction:column;flex:1;gap:1rem;min-height:0;padding:1.5rem;display:flex;overflow-y:auto}.job-detail__body--tight{gap:.75rem}.job-detail__row{flex-direction:column;gap:.25rem;display:flex}.job-detail__label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-size:.6875rem;font-weight:600}.job-detail__value{color:var(--muted);font-size:.875rem;line-height:1.5}.job-detail__value--accent-lg{color:var(--accent);font-size:1.125rem;font-weight:700}.job-detail__value--accent-xl{color:var(--accent);font-size:1.25rem;font-weight:700}.job-detail__lines{flex-direction:column;gap:.375rem;margin-top:.25rem;display:flex}.job-detail__line{justify-content:space-between;font-size:.875rem;display:flex}.job-detail__line__label{color:var(--muted)}.job-detail__line__value{color:var(--text);font-weight:600}.job-detail__footer{border-top:1px solid var(--border);flex-shrink:0;padding:1rem 1.25rem}.job-detail__footer-actions{gap:.75rem;display:flex}.job-detail__footer-actions--tight{gap:.5rem;margin-bottom:1rem;display:flex}.job-detail__footer--wide{padding-left:1.5rem;padding-right:1.5rem}.repeat-option{border-radius:var(--radius-sm);cursor:pointer;text-align:left;border:1px solid var(--border);background:var(--surface-2);align-items:center;gap:1rem;width:100%;padding:.75rem 1rem;display:flex}.repeat-option--selected{border-color:var(--accent);background:var(--accent-soft)}.repeat-option__check{border:2px solid var(--border);color:#fff;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:.75rem;font-weight:700;display:flex}.repeat-option__check--selected{border-color:var(--accent);background:var(--accent)}.repeat-option__label{color:var(--text);font-size:.875rem;font-weight:600}.repeat-option__desc{color:var(--muted);margin-top:.125rem;font-size:.75rem}.job-detail__status-label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:.5rem;font-size:.6875rem;font-weight:600}.job-detail__stages{flex-wrap:wrap;gap:.375rem;display:flex}.job-stage-btn{font-size:.75rem;font-family:var(--font-body);cursor:pointer;background:var(--hover);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:6px;padding:.3rem .625rem;font-weight:500;transition:all .15s}.job-stage-btn:hover{border-color:var(--border-strong);color:var(--text)}.job-stage-btn--active{font-weight:700}.customer-list{flex-direction:column;gap:.5rem;display:flex}.customer-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow-sm);align-items:center;gap:1rem;padding:.875rem 1.25rem;transition:all .15s;display:flex}.customer-row:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md);transform:translateY(-1px)}.customer-avatar{background:var(--accent-soft);border:1px solid var(--accent-border);width:40px;height:40px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8125rem;font-weight:700;display:flex}.customer-avatar--large{width:48px;height:48px;font-size:.9375rem}.customer-row__main{flex:1;min-width:0}.customer-row__name{color:var(--text);margin-bottom:.2rem;font-size:.9375rem;font-weight:600}.customer-row__meta{color:var(--faint);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:.375rem;font-size:.8125rem;display:flex;overflow:hidden}.customer-row__right{text-align:right;flex-shrink:0}.customer-row__spend{color:var(--accent);font-size:.9375rem;font-weight:700}.customer-row__jobs{color:var(--faint);margin-top:.1rem;font-size:.75rem}.customer-link{color:var(--accent);font-size:.875rem;text-decoration:none}.customer-link:hover{text-decoration:underline}.customer-job-row{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:.625rem .875rem;display:flex}.customer-job-row__type{color:var(--text);margin-bottom:.15rem;font-size:.875rem;font-weight:600}.customer-job-row__date{color:var(--faint);font-size:.75rem}.customer-job-row__value{color:var(--text);font-size:.875rem;font-weight:700}.customer-job-row__right{align-items:center;gap:.75rem;display:flex}.customer-detail__header-row{align-items:center;gap:.875rem;display:flex}.customer-detail__history{margin-top:1.25rem}.customer-detail__history-label{margin-bottom:.625rem}.customer-detail__history-list{flex-direction:column;gap:.5rem;display:flex}.customers-search{margin-bottom:1.25rem}.customers-search__input{max-width:380px}.loading-text{color:var(--faint);padding:2rem 0}.dash-stats--spaced{margin-bottom:1.5rem}.stat-card--clickable{cursor:pointer}.stat-card__value--warning{color:var(--warning)}.stat-card__value--danger{color:var(--danger)}.stat-card__value--accent{color:var(--accent)}.stat-card__value--success{color:var(--success)}.auth-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;box-shadow:var(--shadow-md);padding:2.5rem}.auth-logo{align-items:center;gap:.625rem;margin-bottom:2rem;display:flex}.auth-logo__name{color:var(--text);letter-spacing:-.04em;font-size:1.25rem;font-weight:800}.auth-title{color:var(--text);letter-spacing:-.04em;margin-bottom:.375rem;font-size:1.5rem;font-weight:800}.auth-sub{color:var(--faint);margin-bottom:1.75rem;font-size:.875rem}.auth-form{flex-direction:column;gap:1rem;display:flex}.auth-error{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius-sm);border:1px solid #fca5a5;padding:.625rem .875rem;font-size:.8125rem}.auth-switch{text-align:center;color:var(--faint);margin-top:1.5rem;font-size:.875rem}.auth-switch__link{color:var(--accent);font-family:var(--font-body);cursor:pointer;background:0 0;border:none;font-size:.875rem;font-weight:600}.auth-switch__link:hover{opacity:.7}.auth-logo__mark{background:var(--color-graftly-accent);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:flex}.auth-confirm__field{margin-bottom:1.5rem}.auth-confirm__primary{margin-bottom:1rem}.auth-confirm__primary:disabled{opacity:.4}.auth-confirm__actions{justify-content:space-between;align-items:center;display:flex}.auth-confirm__secondary{padding:.5rem 1rem;font-size:.8125rem}.auth-confirm__link{font-size:.8125rem}.auth-shell{color:#0f172a;font-family:var(--font-body);background:#fff;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex;position:relative;overflow:hidden}.auth-shell__grid-bg{pointer-events:none;background-image:linear-gradient(#e2e8f020 1px,#0000 1px),linear-gradient(90deg,#e2e8f020 1px,#0000 1px);background-size:60px 60px;position:absolute;inset:0}.auth-shell__glow{pointer-events:none;background:radial-gradient(#8b5cf614,#0000 70%);width:600px;height:400px;position:absolute;top:20%;left:50%;transform:translate(-50%)}.auth-shell__container{z-index:1;width:100%;max-width:440px;position:relative}.auth-shell__gradient-text{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#6366f1,#8b5cf6,#a78bfa);-webkit-background-clip:text;background-clip:text;display:inline-block}.auth-shell__back-btn{padding:.5rem 1rem;font-size:.875rem;position:absolute;top:-2rem;left:0}.auth-shell__header{text-align:center;margin-bottom:2.5rem}.auth-shell__header--compact{margin-bottom:2rem}.auth-shell__title{color:#0f172a;letter-spacing:-.04em;margin-bottom:.5rem;font-size:2.5rem;font-weight:900;line-height:1.1}.auth-shell__subtitle{color:#64748b;letter-spacing:-.01em;font-size:1.125rem;font-weight:500}.auth-shell__form{flex-direction:column;gap:1.5rem;display:flex}.auth-shell__alert{border-radius:12px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.875rem}.auth-shell__alert--error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca}.auth-shell__alert--success{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.auth-shell__alert--warning{color:#92400e;background:#fef3c7;border:1px solid #fbbf24}.auth-shell__alert--lockout{color:#dc2626;background:#fee2e2;border:1px solid #fecaca}.auth-shell-btn-primary{color:#fff;cursor:pointer;letter-spacing:-.02em;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:12px;width:100%;padding:.75rem 1.5rem;font-family:inherit;font-size:.9375rem;font-weight:700;transition:all .2s}.auth-shell-btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 32px #6366f159}.auth-shell-btn-primary:disabled{opacity:.5;cursor:not-allowed}.auth-shell-btn-primary--submit{border-radius:14px;padding:.875rem;font-size:1rem}.auth-shell-btn-ghost{color:#64748b;cursor:pointer;background:0 0;border:1px solid #e2e8f0;border-radius:12px;padding:.75rem 1.25rem;font-family:inherit;font-size:.875rem;font-weight:500;transition:all .2s}.auth-shell-btn-ghost:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.auth-shell-btn-passkey{cursor:pointer;color:#fff;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.75rem 1rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:all .2s;display:flex}.auth-shell-btn-social{cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.75rem 1rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:all .2s;display:flex}.auth-shell-btn-social--google{background:#fff;border:1px solid #e2e8f0}.auth-shell-btn-social--github{color:#fff;background:#24292e;border:1px solid #e2e8f0}.auth-shell__divider-row{align-items:center;gap:1rem;margin:1rem 0;display:flex}.auth-shell__divider-line{background:#e2e8f0;flex:1;height:1px}.auth-shell__divider-text{color:#64748b;font-size:.875rem;font-weight:500}.auth-shell__social-group{flex-direction:column;gap:.75rem;display:flex}.auth-shell__label{color:#374151;letter-spacing:-.01em;margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}.auth-shell-input{color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;width:100%;padding:.75rem 1rem;font-family:inherit;font-size:.9375rem;transition:all .2s}.auth-shell-input:focus{background:#f5f3ff;border-color:#a5b4fc;outline:none;box-shadow:0 0 0 3px #6366f11a}.auth-shell-input::placeholder{color:#94a3b8}.auth-shell-input--select{cursor:pointer}.auth-shell-input.auth-shell-input--error{background:#fef2f2;border-color:#dc2626}.auth-shell-input.auth-shell-input--error:focus{border-color:#dc2626;box-shadow:0 0 0 3px #dc26261a}.auth-shell-field-error{color:#dc2626;align-items:center;gap:.25rem;margin-top:.25rem;font-size:.75rem;display:flex}.auth-shell-link{color:#6366f1;cursor:pointer;background:0 0;border:none;font-family:inherit;font-weight:600;text-decoration:none;transition:color .2s}.auth-shell-link:hover{color:#4f46e5}.auth-shell-link--underline{font-size:.8125rem;text-decoration:underline}.auth-shell__forgot-row{text-align:right;margin-bottom:1.5rem}.auth-shell__footer{text-align:center;margin-top:2rem}.auth-shell__footer-text{color:#64748b;font-size:.875rem}.auth-shell__simple-link{color:#6366f1;cursor:pointer;background:0 0;border:none;font-family:inherit;text-decoration:underline}.two-factor{width:100%;max-width:400px}.two-factor__header{text-align:center;margin-bottom:2rem}.two-factor__title{color:#0f172a;letter-spacing:-.04em;margin-bottom:.5rem;font-size:2rem;font-weight:900}.two-factor__subtitle{color:#64748b;margin-bottom:1rem;font-size:1rem;font-weight:500}.two-factor__attempts{color:#dc2626;font-size:.875rem;font-weight:500}.two-factor__input{color:#0f172a;text-align:center;letter-spacing:.5rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;width:100%;padding:.75rem 1rem;font-family:monospace;font-size:1.5rem;transition:all .2s}.two-factor__input:focus{background:#f5f3ff;border-color:#a5b4fc;outline:none;box-shadow:0 0 0 3px #6366f11a}.passkey-manager{width:100%;max-width:600px}.passkey-manager__header{text-align:center;margin-bottom:2rem}.passkey-manager__title{color:#0f172a;letter-spacing:-.04em;margin-bottom:.5rem;font-size:2rem;font-weight:900}.passkey-manager__subtitle{color:#64748b;font-size:1rem;font-weight:500}.passkey-manager__section{margin-bottom:2rem}.passkey-manager__section-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.passkey-manager__section-title{color:#0f172a;font-size:1.25rem;font-weight:700}.passkey-manager__add-button{width:auto}.passkey-manager__card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:1rem;padding:1rem}.passkey-manager__form-title{color:#0f172a;margin-bottom:1rem;font-size:1rem;font-weight:600}.passkey-manager__form-field{margin-bottom:1rem}.passkey-manager__empty{text-align:center;color:#64748b;padding:2rem}.passkey-manager__empty-icon{margin-bottom:1rem;font-size:3rem}.passkey-manager__card-row{justify-content:space-between;align-items:flex-start;display:flex}.passkey-manager__name{color:#0f172a;margin-bottom:.25rem;font-size:1rem;font-weight:600}.passkey-manager__meta{color:#64748b;font-size:.875rem}.passkey-manager__meta--spaced{margin-bottom:.25rem}.passkey-manager__badges{gap:.5rem;margin-top:.5rem;display:flex}.passkey-manager__badge{border-radius:4px;padding:.25rem .5rem;font-size:.75rem;font-weight:500}.passkey-manager__badge--resident{color:#0369a1;background:#e0f2fe}.passkey-manager__badge--verified{color:#166534;background:#f0fdf4}.passkey-manager__danger{color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:8px;padding:.5rem 1rem;font-family:inherit;font-size:.875rem;font-weight:600;transition:all .2s}.passkey-manager__danger:hover{background:#b91c1c}.passkey-manager__footer{gap:1rem;display:flex}.passkey-manager__close{flex:1}.nav-icon{flex-shrink:0}.job-timeline__fields{flex-direction:column;gap:.875rem;display:flex}.job-timeline__time-section{border-top:1px solid var(--color-graftly-border);padding-top:.875rem}.job-timeline__time-label{margin-bottom:.625rem}.job-timeline__time-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.job-timeline__actions{align-items:center;gap:1rem;margin-top:1rem;display:flex}.job-timeline__actions .btn-primary:disabled{opacity:.6}.job-timeline__saved{color:#10b981;font-size:.8125rem;font-weight:600}.schedule-job{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:1rem;padding:1rem}.schedule-job__label{margin-bottom:.75rem}.schedule-job__fields{flex-direction:column;gap:.875rem;display:flex}.schedule-job__time-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.schedule-job__actions{gap:.75rem;margin-top:1rem;display:flex}.photos-upload-button{flex-shrink:0}.photos-upload-button:disabled{opacity:.6}.photos-file-input{display:none}.photos-loading{color:var(--color-graftly-faint);padding:1rem 0;font-size:.875rem}.photos-group{margin-bottom:1.25rem}.photos-group__header{align-items:center;gap:.5rem;margin-bottom:.625rem;display:flex}.photos-group__count{color:var(--color-graftly-faint);font-size:.75rem}.photos-delete-button{color:#ef4444;border-color:#ef444440;margin-left:auto;padding:.375rem .875rem;font-size:.8125rem}.legal-page{color:#0f172a;background:#fff;min-height:100vh;font-family:DM Sans,system-ui,sans-serif;position:relative;overflow:hidden}.legal-page__nav{z-index:100;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-bottom:none;justify-content:space-between;align-items:center;height:64px;padding:0 2rem;transition:all .4s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;top:0;left:0;right:0}.legal-page__nav--scrolled{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffffeb;border-bottom:1px solid #e2e8f0}.legal-page__brand{letter-spacing:-.04em;color:#0f172a;font-size:1.1875rem;font-weight:900}.legal-page__brand-dot{color:#6366f1}.legal-page__back{color:#64748b;cursor:pointer;letter-spacing:-.02em;background:0 0;border:1px solid #e2e8f0;border-radius:12px;padding:.5rem 1rem;font-family:inherit;font-size:.875rem;font-weight:600;transition:all .2s}.legal-page__back:hover{background:#f8fafc;border-color:#cbd5e1}.legal-page__content{max-width:900px;margin:0 auto;padding:8rem 2rem}.legal-page__intro{margin-bottom:4rem}.legal-page__title{letter-spacing:-.05em;color:#0f172a;margin-bottom:1rem;font-size:clamp(2.5rem,5vw,4rem);font-weight:900;line-height:1.1}.legal-page__updated{color:#94a3b8;margin-bottom:2rem;font-size:.875rem}.legal-page__sections{flex-direction:column;gap:3rem;display:flex}.legal-page__heading{color:#0f172a;letter-spacing:-.03em;margin-bottom:1rem;font-size:1.5rem;font-weight:800}.legal-page__copy{color:#64748b;font-size:.9375rem;line-height:1.8}.legal-page__copy--before-list{margin-bottom:1rem}.legal-page__copy--after-list{margin-top:1rem}.legal-page__list{color:#64748b;flex-direction:column;gap:.5rem;padding-left:1.5rem;font-size:.9375rem;line-height:1.8;display:flex}.legal-page__list-item{align-items:flex-start;gap:.5rem;display:flex}.legal-page__bullet{color:#6366f1;flex-shrink:0;margin-top:.1rem;font-weight:700}.legal-page__link{color:#6366f1;font-weight:500;text-decoration:none}.legal-page__footer{text-align:center;background:#f8fafc;border-top:1px solid #e2e8f0;padding:2.5rem 2rem}.legal-page__footer-brand{letter-spacing:-.04em;color:#0f172a;margin-bottom:.875rem;font-size:1rem;font-weight:900}.legal-page__footer-copy{color:#cbd5e1;font-size:.75rem}.landing-compare__row{color:#475569;border-bottom:1px solid #ddd6fe;justify-content:space-between;align-items:center;gap:1rem;padding:.875rem 0;font-size:.9375rem;display:flex}.landing-compare__row:first-child{padding-top:0}.landing-compare__row strong{color:#4f46e5;white-space:nowrap;font-weight:800}.landing-compare__checked{color:#6366f1;margin-top:1.25rem;font-size:.8125rem;font-weight:700}.landing-compare__disclaimer{color:#64748b;margin-top:.5rem;font-size:.75rem;line-height:1.6}.landing-compare__disclaimer a{color:#6366f1;font-weight:600;text-decoration:none}.landing-dashboard-demo{color:#0f172a;text-align:left;background:#f8f7f4;padding:1.25rem}.landing-dashboard-demo__hero{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:14px;justify-content:space-between;align-items:flex-start;min-height:118px;padding:1.25rem 1.5rem;display:flex;box-shadow:0 10px 24px #6366f133}.landing-dashboard-demo__eyebrow{letter-spacing:.08em;text-transform:uppercase;opacity:.75;font-size:.625rem;font-weight:700}.landing-dashboard-demo__revenue{letter-spacing:-.04em;margin-top:.25rem;font-size:2rem;font-weight:900;line-height:1.1}.landing-dashboard-demo__hero-note{opacity:.7;margin-top:.25rem;font-size:.6875rem}.landing-dashboard-demo__badge{background:#ffffff1f;border:1px solid #ffffff40;border-radius:999px;padding:.35rem .65rem;font-size:.625rem;font-weight:700}.landing-dashboard-demo__stats{grid-template-columns:repeat(4,1fr);margin:1.25rem 0;display:grid}.landing-dashboard-demo__stat{border-right:1px solid #e2e8f0;padding:0 1rem}.landing-dashboard-demo__stat:first-child{padding-left:0}.landing-dashboard-demo__stat:last-child{border-right:0}.landing-dashboard-demo__stat p{color:#94a3b8;letter-spacing:.06em;text-transform:uppercase;font-size:.5625rem;font-weight:700}.landing-dashboard-demo__stat strong{margin-top:.3rem;font-size:1.25rem;font-weight:900;display:block}.landing-dashboard-demo__section-title{justify-content:space-between;align-items:center;margin:.875rem 0 .5rem;font-size:.75rem;display:flex}.landing-dashboard-demo__section-title span{color:#6366f1;font-size:.6875rem;font-weight:700}.landing-dashboard-demo__job{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #38bdf8;border-radius:9px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.landing-dashboard-demo__job strong{font-size:.75rem}.landing-dashboard-demo__job p{color:#94a3b8;margin-top:.15rem;font-size:.625rem}.landing-dashboard-demo__job>span{color:#0284c7;text-transform:uppercase;background:#e0f2fe;border-radius:999px;padding:.25rem .5rem;font-size:.5625rem;font-weight:800}.landing-dashboard-demo__week{background:#fff;border:1px solid #e2e8f0;border-radius:9px;grid-template-columns:repeat(7,1fr);display:grid;overflow:hidden}.landing-dashboard-demo__day{border-right:1px solid #e2e8f0;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;min-height:55px;display:flex}.landing-dashboard-demo__day:last-child{border-right:0}.landing-dashboard-demo__day span{color:#94a3b8;font-size:.5625rem}.landing-dashboard-demo__day strong{font-size:.6875rem}.landing-dashboard-demo__day--today{color:#6366f1;background:#ede9fe}@media(max-width:560px){.landing-dashboard-demo{padding:.75rem}.landing-dashboard-demo__hero{min-height:92px;padding:1rem}.landing-dashboard-demo__revenue{font-size:1.5rem}.landing-dashboard-demo__stats{margin:.875rem 0}.landing-dashboard-demo__stat{padding:0 .4rem}.landing-dashboard-demo__stat strong{font-size:.875rem}.landing-dashboard-demo__stat p{font-size:.45rem}.landing-dashboard-demo__job{padding:.625rem .75rem}}.landing-page{color:#0f172a;background:#fff;font-family:DM Sans,system-ui,sans-serif;overflow-x:hidden}.landing-page *,.landing-page :before,.landing-page :after{box-sizing:border-box}.lp-nav{z-index:100;justify-content:space-between;align-items:center;height:64px;padding:0 2rem;transition:all .35s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;inset:0 0 auto}.lp-nav.is-scrolled{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#ffffffeb;border-bottom:1px solid #e2e8f0}.lp-brand{letter-spacing:-.04em;color:#0f172a;font-size:1.1875rem;font-weight:900}.lp-brand b{color:#6366f1}.lp-nav__links{gap:2rem;display:flex}.lp-nav__links a{color:#64748b;font-size:.875rem;font-weight:500;text-decoration:none}.lp-nav__actions,.lp-hero__actions{align-items:center;gap:.5rem;display:flex}.lp-btn{cursor:pointer;border-radius:12px;padding:.75rem 1.25rem;font:700 .9375rem inherit;transition:all .2s}.lp-btn--primary{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:0;box-shadow:0 8px 20px #6366f133}.lp-btn--primary:hover{transform:translateY(-2px);box-shadow:0 12px 32px #6366f159}.lp-btn--ghost{color:#64748b;background:0 0;border:1px solid #e2e8f0}.lp-btn--large{padding:1rem 1.75rem;font-size:1rem}.lp-hero{text-align:center;background:linear-gradient(#fff,#faf9ff 60%,#f5f3ff);flex-direction:column;align-items:center;min-height:100vh;padding:8rem 2rem 6rem;display:flex;position:relative}.lp-hero__grid{pointer-events:none;background-image:linear-gradient(#e2e8f020 1px,#0000 1px),linear-gradient(90deg,#e2e8f020 1px,#0000 1px);background-size:60px 60px;position:absolute;inset:0}.lp-pill{z-index:1;color:#6366f1;background:#f5f3ff;border:1px solid #c4b5fd;border-radius:999px;align-items:center;gap:.5rem;margin-bottom:2rem;padding:.375rem 1rem;font-size:.8125rem;font-weight:600;display:inline-flex}.lp-pill i{background:#6366f1;border-radius:50%;width:7px;height:7px}.lp-hero h1{z-index:1;letter-spacing:-.05em;max-width:900px;margin-bottom:1.75rem;font-size:clamp(3.25rem,7.5vw,6.5rem);font-weight:900;line-height:.95}.lp-hero h1 span,.lp-final h2 span{color:#0000;background:linear-gradient(135deg,#6366f1,#8b5cf6,#a78bfa);-webkit-background-clip:text;background-clip:text}.lp-hero__copy{z-index:1;color:#64748b;max-width:540px;margin-bottom:2.5rem;font-size:1.1875rem;line-height:1.65}.lp-hero__actions{z-index:1;margin-bottom:2.5rem}.lp-proof{z-index:1;color:#94a3b8;flex-wrap:wrap;justify-content:center;gap:2rem;margin-bottom:4.5rem;font-size:.8125rem;display:flex}.lp-proof span:first-letter{color:#6366f1}.lp-hero__product{z-index:1;width:100%;max-width:960px}.lp-window{background:#f8f7f4;border:1px solid #ffffff14;border-radius:20px;overflow:hidden;box-shadow:0 50px 100px #6366f124,0 18px 36px #0f172a2e}.lp-window__bar{color:#334155;background:#0c1220;align-items:center;gap:.5rem;height:50px;padding:0 1.25rem;font-size:.75rem;display:flex}.lp-window__bar i{opacity:.75;background:#ef4444;border-radius:50%;width:10px;height:10px}.lp-window__bar i:nth-child(2){background:#f59e0b}.lp-window__bar i:nth-child(3){background:#22c55e}.lp-window__bar span{margin-left:.75rem}.lp-dashboard{text-align:left;padding:1.25rem}.lp-dashboard__hero{color:#fff;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:14px;justify-content:space-between;min-height:118px;padding:1.25rem 1.5rem;display:flex;box-shadow:0 10px 24px #6366f133}.lp-dashboard__hero small{text-transform:uppercase;letter-spacing:.08em;opacity:.75}.lp-dashboard__hero strong{letter-spacing:-.04em;margin-top:.25rem;font-size:2rem;display:block}.lp-dashboard__hero p{opacity:.7;margin-top:.2rem;font-size:.6875rem}.lp-dashboard__hero b{background:#ffffff20;border:1px solid #ffffff40;border-radius:999px;align-self:flex-start;padding:.35rem .65rem;font-size:.625rem}.lp-dashboard__stats{grid-template-columns:repeat(4,1fr);margin:1.25rem 0;display:grid}.lp-dashboard__stats div{border-right:1px solid #e2e8f0;padding:0 1rem}.lp-dashboard__stats div:first-child{padding-left:0}.lp-dashboard__stats div:last-child{border:0}.lp-dashboard__stats small{color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;font-size:.5625rem;display:block}.lp-dashboard__stats strong{margin-top:.25rem;font-size:1.25rem;display:block}.lp-dashboard__heading{justify-content:space-between;margin:.875rem 0 .5rem;font-size:.75rem;display:flex}.lp-dashboard__heading span{color:#6366f1;font-weight:700}.lp-dashboard__job{background:#fff;border:1px solid #e2e8f0;border-left:3px solid #38bdf8;border-radius:9px;justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.lp-dashboard__job strong{font-size:.75rem}.lp-dashboard__job p{color:#94a3b8;font-size:.625rem}.lp-dashboard__job>b{color:#0284c7;text-transform:uppercase;background:#e0f2fe;border-radius:999px;padding:.25rem .5rem;font-size:.5625rem}.lp-dashboard__week{background:#fff;border:1px solid #e2e8f0;border-radius:9px;grid-template-columns:repeat(7,1fr);display:grid;overflow:hidden}.lp-dashboard__week div{border-right:1px solid #e2e8f0;flex-direction:column;justify-content:center;align-items:center;min-height:54px;display:flex}.lp-dashboard__week div:last-child{border:0}.lp-dashboard__week small{color:#94a3b8}.lp-dashboard__week .is-today{color:#6366f1;background:#ede9fe}.lp-stories{max-width:1120px;margin:0 auto;padding:8rem 2rem 4rem}.lp-story{border-bottom:1px solid #e2e8f0;grid-template-columns:.8fr 1.2fr;align-items:center;gap:6rem;padding:5rem 0;display:grid}.lp-story--reverse .lp-story__copy{order:2}.lp-story__copy>span{color:#c4b5fd;letter-spacing:-.06em;margin-bottom:2rem;font-size:4rem;font-weight:900;display:block}.lp-kicker{text-transform:uppercase;letter-spacing:.12em;margin-bottom:1rem;font-weight:800;color:#6366f1!important;font-size:.75rem!important}.lp-story h2,.lp-section-heading h2{letter-spacing:-.045em;margin-bottom:1.25rem;font-size:clamp(2rem,4vw,3rem);line-height:1.08}.lp-story__copy>p:last-child,.lp-section-heading>p:last-child{color:#64748b;line-height:1.8}.lp-product{text-align:left;padding:1.5rem}.lp-product__top{justify-content:space-between;margin-bottom:1.5rem;display:flex}.lp-product__top span{color:#6366f1;font-size:.75rem;font-weight:700}.lp-product label{color:#64748b;margin:.75rem 0 .4rem;font-size:.75rem;font-weight:700;display:block}.lp-field{color:#334155;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:.75rem 1rem;font-size:.875rem}.lp-product__grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.lp-suggestion{color:#4f46e5;background:#f5f3ff;border:1px solid #c4b5fd;border-radius:12px;gap:.75rem;margin-top:1.25rem;padding:1rem;display:flex}.lp-suggestion p{color:#7c3aed;margin-top:.25rem;font-size:.75rem}.lp-suggestion__actions{gap:.5rem;margin-top:.75rem;display:flex}.lp-suggestion__actions button{color:#4f46e5;font:inherit;cursor:pointer;background:#fff;border:1px solid #a78bfa;border-radius:8px;padding:.35rem .9rem;font-size:.75rem;font-weight:700}.lp-suggestion__actions button:first-child{color:#fff;background:#6366f1;border-color:#6366f1}.lp-total{border-top:1px solid #e2e8f0;justify-content:space-between;align-items:center;gap:1rem;margin-top:1rem;padding-top:1rem;display:flex}.lp-total span{color:#64748b;font-size:.75rem}.lp-total strong{font-size:1.25rem}.lp-workflow__step{gap:1rem;padding:0 0 1.5rem 3rem;display:flex;position:relative}.lp-workflow__step>b{color:#94a3b8;background:#fff;border:2px solid #e2e8f0;border-radius:50%;place-items:center;width:28px;height:28px;font-size:.75rem;display:grid;position:absolute;left:0}.lp-workflow__step:not(:last-child):before{content:"";background:#e2e8f0;width:2px;position:absolute;top:28px;bottom:0;left:13px}.lp-workflow__step.done>b{color:#fff;background:#10b981;border-color:#10b981}.lp-workflow__step.active>b{color:#6366f1;border-color:#6366f1}.lp-workflow__step p{color:#64748b;margin-top:.25rem;font-size:.8125rem}.lp-connected{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.lp-connected>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:16px;grid-template-columns:auto 1fr;gap:.75rem;min-height:130px;padding:1.25rem;display:grid}.lp-connected>div>span{color:#6366f1;background:#ede9fe;border-radius:9px;place-items:center;width:36px;height:36px;font-weight:900;display:grid}.lp-connected p{color:#64748b;margin-top:.25rem;font-size:.75rem}.lp-connected>div>b{color:#6366f1;grid-column:2;font-size:.75rem}.lp-trust{background:#faf9ff;padding:8rem 2rem}.lp-section-heading{text-align:center;max-width:650px;margin:0 auto 3.5rem}.lp-compare{background:#fff;border:1px solid #c4b5fd;border-radius:18px;max-width:760px;margin:0 auto;padding:2rem}.lp-compare>div{border-bottom:1px solid #ede9fe;justify-content:space-between;padding:1rem 0;display:flex}.lp-compare>div strong{color:#4f46e5}.lp-compare>p{color:#64748b;margin-top:1.25rem;font-size:.75rem;line-height:1.6}.lp-compare a{color:#6366f1;font-weight:700}.lp-promises{grid-template-columns:repeat(3,1fr);gap:1rem;max-width:900px;margin:2rem auto 0;display:grid}.lp-promises>div{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:1.5rem}.lp-promises span{color:#c4b5fd;margin-bottom:1rem;font-weight:900;display:block}.lp-promises strong{margin-bottom:.5rem;display:block}.lp-promises p{color:#64748b;font-size:.8125rem;line-height:1.6}.lp-pricing,.lp-faq{max-width:950px;margin:0 auto;padding:8rem 2rem}.lp-beta-note{color:#166534;text-align:center;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:12px;max-width:720px;margin:-1.5rem auto 2.5rem;padding:1rem 1.25rem;font-size:.875rem;font-weight:600}.lp-plan-grid{grid-template-columns:1fr 1fr;gap:1.5rem;display:grid}.lp-plan{background:#f8fafc;border:1px solid #e2e8f0;border-radius:22px;padding:2.25rem}.lp-plan.is-featured{background:linear-gradient(135deg,#f5f3ff,#ede9fe);border-color:#a5b4fc;box-shadow:0 20px 40px #6366f11a}.lp-plan__name{font-size:1.25rem;font-weight:900}.lp-plan__audience{color:#64748b;margin:.4rem 0 1.5rem;font-size:.875rem}.lp-plan__price strong{letter-spacing:-.05em;font-size:3rem}.lp-plan__price span{color:#94a3b8}.lp-plan__note{color:#6d28d9;text-align:center;background:#ede9fe;border-radius:8px;margin-top:.75rem;padding:.65rem;font-size:.8125rem;font-weight:700}.lp-plan ul{flex-direction:column;gap:.75rem;margin:1.75rem 0;list-style:none;display:flex}.lp-plan li{color:#6366f1;gap:.625rem;font-size:.875rem;display:flex}.lp-plan li span{color:#475569}.lp-plan .lp-btn{width:100%}.lp-faq{border-top:1px solid #e2e8f0}.lp-faq__list{max-width:760px;margin:0 auto}.lp-faq details{border-bottom:1px solid #e2e8f0}.lp-faq summary{cursor:pointer;justify-content:space-between;padding:1.25rem 0;font-weight:800;list-style:none;display:flex}.lp-faq summary span{color:#6366f1;font-size:1.25rem}.lp-faq details p{color:#64748b;padding:0 2rem 1.25rem 0;line-height:1.7}.lp-final{text-align:center;background:linear-gradient(#fff,#f5f3ff);padding:9rem 2rem}.lp-final h2{letter-spacing:-.055em;margin-bottom:1.5rem;font-size:clamp(2.75rem,6vw,5rem);line-height:.95}.lp-final>p{color:#64748b;max-width:440px;margin:0 auto 2.5rem;font-size:1.0625rem;line-height:1.7}.lp-final small{color:#94a3b8;margin-top:1rem;display:block}.lp-footer{text-align:center;background:#f8fafc;border-top:1px solid #e2e8f0;padding:2.5rem 2rem}.lp-footer>a{color:#64748b;margin:.875rem 0;font-size:.8125rem;text-decoration:none;display:inline-block}.lp-footer>div{justify-content:center;gap:1.5rem;margin-bottom:1rem;display:flex}.lp-footer button{color:#94a3b8;cursor:pointer;background:0 0;border:0;font:.8125rem inherit}.lp-footer small{color:#cbd5e1}.landing-page [data-reveal]{opacity:0;transition:opacity .75s cubic-bezier(.16,1,.3,1),transform .75s cubic-bezier(.16,1,.3,1);transform:translateY(28px)}.landing-page [data-reveal][data-visible=true]{opacity:1;transform:none}@media(max-width:768px){.lp-nav{padding:0 1rem}.lp-nav__links{display:none}.lp-nav__actions .lp-btn{padding:.625rem .875rem}.lp-hero{padding:7rem 1.25rem 4rem}.lp-hero h1{font-size:clamp(2.75rem,14vw,3.75rem)}.lp-hero__copy{font-size:1rem}.lp-proof{gap:1rem 1.5rem;margin-bottom:3rem}.lp-window__bar{height:42px}.lp-dashboard{padding:.75rem}.lp-dashboard__hero{min-height:92px;padding:1rem}.lp-dashboard__hero strong{font-size:1.5rem}.lp-dashboard__stats div{padding:0 .4rem}.lp-dashboard__stats strong{font-size:.875rem}.lp-dashboard__stats small{font-size:.45rem}.lp-stories{padding:4rem 1.25rem 2rem}.lp-story,.lp-story--reverse{grid-template-columns:1fr;gap:2.5rem;padding:4rem 0}.lp-story--reverse .lp-story__copy{order:0}.lp-story__copy>span{margin-bottom:1rem;font-size:3rem}.lp-connected{grid-template-columns:1fr}.lp-trust,.lp-pricing,.lp-faq,.lp-final{padding:5rem 1.25rem}.lp-promises,.lp-plan-grid{grid-template-columns:1fr}.lp-compare{padding:1.25rem}.lp-compare>div{gap:1rem}.lp-product{padding:1rem}.lp-product__grid{grid-template-columns:1fr}.lp-final .lp-btn{width:100%;max-width:360px}}.landing-page .lp-story h2,.landing-page .lp-section-heading h2,.landing-page .lp-final h2{font-weight:900}.landing-page .lp-btn{font-family:inherit;font-size:.9375rem;font-weight:700}.landing-page .lp-footer button{font-family:inherit;font-size:.8125rem}.auth-recovery{background:linear-gradient(#fff,#faf9ff);justify-content:center;align-items:center;min-height:100vh;font-family:DM Sans,system-ui,sans-serif;display:flex}.auth-recovery__card{background:#fff;border:1px solid #e2e8f0;border-radius:20px;width:100%;max-width:400px;padding:3rem;box-shadow:0 20px 40px #6366f11a}.auth-recovery__card--centered{text-align:center}.auth-recovery__success-icon{background:#10b981;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;margin:0 auto 2rem;font-size:1.5rem;display:flex}.auth-recovery__state-title{color:#0f172a;margin-bottom:1rem;font-size:1.5rem;font-weight:700}.auth-recovery__state-copy{color:#64748b;margin-bottom:2rem;line-height:1.6}.auth-recovery__header{text-align:center;margin-bottom:2rem}.auth-recovery__title{color:#0f172a;letter-spacing:-.04em;margin-bottom:.5rem;font-size:1.875rem;font-weight:800}.auth-recovery__subtitle{color:#64748b;font-size:.9375rem;line-height:1.6}.auth-recovery__error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:1.5rem;padding:.75rem;font-size:.875rem}.auth-recovery__field{margin-bottom:1.5rem}.auth-recovery__label{color:#374151;margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}.auth-recovery__input{border:1px solid #e2e8f0;border-radius:8px;width:100%;padding:.75rem;font-family:inherit;font-size:.9375rem}.auth-recovery__button{color:#fff;cursor:pointer;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:12px;width:100%;padding:.875rem;font-size:1rem;font-weight:600;transition:all .2s}.auth-recovery__button:disabled{cursor:not-allowed;background:#94a3b8}.auth-recovery__button--wide-padding{padding:.875rem 2rem}.auth-recovery__button--spaced{margin-bottom:1rem}.auth-recovery__back-row{text-align:center;margin-top:1.5rem}.auth-recovery__back{color:#64748b;cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:.875rem}.mini-cal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow-sm);padding:1.25rem 1.5rem;transition:all .15s}.mini-cal:hover{border-color:var(--accent-border);box-shadow:var(--shadow-md)}.mini-cal__week{grid-template-columns:repeat(7,1fr);gap:.25rem;margin-top:.75rem;display:grid}.mini-cal__day{border-radius:6px;flex-direction:column;align-items:center;gap:.25rem;padding:.375rem .25rem;transition:background .15s;display:flex}.mini-cal__day--today{background:var(--accent-soft)}.mini-cal__day--conflict{background:#fef2f2}[data-theme=dark] .mini-cal__day--conflict{background:#450a0a}.mini-cal__day-name{text-transform:uppercase;letter-spacing:.05em;color:var(--faint);font-size:.5625rem;font-weight:600}.mini-cal__day-num{color:var(--muted);font-size:.875rem;font-weight:700}.mini-cal__day--today .mini-cal__day-num{color:var(--accent)}.mini-cal__dots{flex-wrap:wrap;justify-content:center;gap:2px;min-height:8px;display:flex}.mini-cal__dot{border-radius:50%;width:6px;height:6px}.step-indicator{align-items:center;gap:0;margin-bottom:2rem;display:flex;overflow-x:auto}.step-indicator__item{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.step-indicator__item:not(:last-child):after{content:"";background:var(--border);width:2rem;height:1px;margin:0 .5rem;display:block}.step-indicator__dot{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.6875rem;font-weight:700;transition:all .2s;display:flex}.step-indicator__dot--active{background:var(--accent);color:#fff}.step-indicator__dot--done{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}.step-indicator__dot--todo{background:var(--hover);color:var(--faint);border:1px solid var(--border)}.step-indicator__label{color:var(--faint);white-space:nowrap;font-size:.75rem}.step-indicator__label--active{color:var(--accent);font-weight:600}.quote-step-content{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:1.25rem;padding:2rem}.quote-step-hint{color:var(--color-graftly-faint);text-align:center;margin-top:1rem;font-size:.8125rem}.quote-step-hint__link{color:var(--color-graftly-accent);cursor:pointer;font-family:var(--font-body);background:0 0;border:none;font-size:.8125rem;font-weight:600}.quote-nav__next{margin-left:auto}.step-title{color:var(--text);letter-spacing:-.02em;margin-bottom:.3rem;font-size:1rem;font-weight:700}.step-subtitle{color:var(--faint);margin-bottom:1.5rem;font-size:.8125rem;line-height:1.5}.step-section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.625rem;font-size:.6875rem;font-weight:600}.trade-list{flex-direction:column;gap:1.25rem;display:flex}.trade-group__label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.5rem;font-size:.6875rem;font-weight:600}.job-grid{flex-wrap:wrap;gap:.375rem;display:flex}.job-btn{font-size:.8125rem;font-family:var(--font-body);cursor:pointer;border:1px solid var(--border);border-radius:6px;align-items:center;gap:.35rem;padding:.4rem .875rem;transition:all .15s;display:flex}.job-btn--active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-border);font-weight:600}.job-btn--inactive{background:var(--surface-2);color:var(--muted)}.job-btn--inactive:hover{border-color:var(--accent-border);color:var(--text)}.job-btn__tick{font-size:.6875rem}.room-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.625rem;display:grid}.room-card{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:.625rem .875rem;transition:border-color .15s;display:flex}.room-card--active{border-color:var(--accent-border);background:var(--accent-soft)}.room-card__label{color:var(--muted);font-size:.8125rem}.room-card__controls{align-items:center;gap:.375rem;display:flex}.room-counter-btn{background:var(--surface);border:1px solid var(--border);width:22px;height:22px;color:var(--muted);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;font-size:.875rem;transition:all .15s;display:flex}.room-counter-btn:hover:not(:disabled){border-color:var(--accent-border);color:var(--accent)}.room-counter-btn:disabled{opacity:.3;cursor:not-allowed}.room-counter-value{color:var(--text);text-align:center;min-width:1rem;font-size:.8125rem;font-weight:700}.step-rooms-summary{color:var(--accent);margin-top:.875rem;font-size:.8125rem;font-weight:600}.materials-options{flex-direction:column;gap:.75rem;max-width:460px;display:flex}.materials-btn{cursor:pointer;text-align:left;border:1px solid var(--border);background:var(--surface-2);border-radius:10px;flex-direction:column;align-items:flex-start;gap:.2rem;padding:1rem 1.25rem;transition:all .15s;display:flex}.materials-btn--active{border-color:var(--accent-border);background:var(--accent-soft)}.materials-btn--inactive:hover{border-color:var(--border-strong)}.materials-btn__icon{margin-bottom:.2rem;font-size:1.125rem}.materials-btn__label{color:var(--text);font-size:.875rem;font-weight:600}.materials-btn__desc{color:var(--faint);font-size:.75rem}.location-fields{grid-template-columns:1fr 1fr;gap:.875rem;max-width:460px;display:grid}.location-field{flex-direction:column;gap:.375rem;display:flex}.location-field--full{grid-column:1/-1}.location-field--span2{grid-column:1/3}.location-field--relative{position:relative}.customer-hint{color:var(--color-graftly-faint);margin-top:.875rem;font-size:.8125rem}.job-grid--spaced{margin-bottom:2rem}.quote-step-btn--spaced{margin-top:1.25rem}.quote-step-btn--dim{opacity:.5}.distance-result{flex-direction:column;gap:.2rem;margin-top:.875rem;display:flex}.distance-result__miles{color:var(--accent);font-size:1.75rem;font-weight:700}.distance-result__note{color:var(--faint);font-size:.75rem}.quote-card{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:1.125rem 1.375rem}.quote-card__section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--faint);margin-bottom:.875rem;font-size:.6875rem;font-weight:600}.quote-line{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.5rem 0;display:flex}.quote-line:last-child{border-bottom:none}.quote-line__label{color:var(--muted);font-size:.8125rem}.quote-line__value{color:var(--text);font-size:.8125rem;font-weight:600}.quote-divider{background:var(--border);height:1px;margin:.625rem 0}.vat-toggle{border-bottom:1px solid var(--border);padding:.625rem 0}.vat-toggle__label{color:var(--muted);cursor:pointer;align-items:center;gap:.5rem;font-size:.8125rem;display:flex}.vat-toggle__checkbox{accent-color:var(--accent);cursor:pointer;width:15px;height:15px}.quote-total{justify-content:space-between;align-items:center;margin-top:.375rem;padding-top:.875rem;display:flex}.quote-total__label{color:var(--text);text-transform:uppercase;letter-spacing:.05em;font-size:.875rem;font-weight:700}.quote-total__value{color:var(--accent);letter-spacing:-.04em;font-size:1.75rem;font-weight:800}.quote-nav{align-items:center;gap:.875rem;margin-top:.5rem;display:flex}.quote-actions{justify-content:space-between;align-items:center;gap:.875rem;margin-top:1.25rem;display:flex}.quote-actions--wrap{flex-wrap:wrap;margin-top:1.5rem}.text-right{text-align:right}.document-meta__value{font-size:1.2rem;font-weight:700}.customer-card--spaced{margin-bottom:1.5rem}.quote-line-edit{align-items:center;gap:.5rem;display:inline-flex}.total-edit-row{align-items:center;gap:.5rem;display:flex}.text-link-faint{color:var(--color-graftly-faint);cursor:pointer;background:0 0;border:none;font-size:.75rem;text-decoration:underline}.vat-toggle__text{margin-left:.5rem}.invoice-row--no-margin{margin-bottom:0}.quote-save-msg{color:#10b981;background:#10b98115;border:1px solid #10b98140;border-radius:8px;margin-top:1.5rem;padding:.75rem 1rem;font-size:.875rem;font-weight:600}.btn-secondary--accept{color:#10b981;border-color:#10b981}.settings-layout{grid-template-columns:200px 1fr;align-items:flex-start;gap:1.5rem;display:grid}.settings-nav{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;gap:2px;padding:.5rem;display:flex;position:sticky;top:1rem}.settings-nav__btn{border-radius:var(--radius-sm);color:var(--muted);font-family:var(--font-body);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.625rem;width:100%;padding:.5625rem .75rem;font-size:.875rem;font-weight:500;transition:all .15s;display:flex}.settings-nav__btn:hover{background:var(--hover);color:var(--text)}.settings-nav__btn--active{background:var(--accent-soft);color:var(--accent);font-weight:600}.settings-section{flex-direction:column;gap:1rem;width:100%;max-width:900px;display:flex}.settings-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.5rem}.settings-card__title{color:var(--text);letter-spacing:-.02em;margin-bottom:.25rem;font-size:.9375rem;font-weight:700}.settings-card__desc{color:var(--faint);margin-bottom:1.5rem;font-size:.8125rem;line-height:1.5}.settings-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.settings-field{flex-direction:column;gap:.375rem;display:flex}.settings-field__label-row{justify-content:space-between;align-items:center;display:flex}.settings-field__hint{color:var(--faint);font-size:.6875rem}.settings-field__hint--spaced{margin-top:.375rem}.settings-loading{color:var(--faint);padding:2rem}.settings-trade-group{margin-bottom:1.5rem}.settings-vat-extra{margin-top:1rem}.settings-range{width:100%}.settings-alert{border-radius:10px;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.875rem}.settings-alert--success{color:#15803d;background:#f0fdf4;border:1px solid #bbf7d0}.settings-alert--error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca}.password-strength{margin-top:6px}.password-strength__track{background:#e2e8f0;border-radius:2px;height:3px;overflow:hidden}.password-strength__fill{border-radius:2px;height:100%;transition:all .3s}.password-strength__label{margin-top:4px;font-size:.75rem}.settings-logo-row{border-bottom:1px solid var(--border);align-items:center;gap:1.25rem;margin-bottom:1.5rem;padding-bottom:1.5rem;display:flex}.settings-logo-preview{border-radius:var(--radius);background:var(--surface-2);border:1px dashed var(--border);cursor:pointer;flex-shrink:0;justify-content:center;align-items:center;width:72px;height:72px;transition:border-color .15s;display:flex;overflow:hidden}.settings-logo-preview:hover{border-color:var(--accent)}.settings-logo-img{object-fit:contain;width:100%;height:100%}.settings-logo-placeholder{color:var(--faint);font-size:.75rem}.settings-input-prefix{border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;transition:border-color .15s;display:flex;overflow:hidden}.settings-input-prefix--w130{width:130px}.settings-input-prefix--w140{width:140px}.settings-input-prefix__input--compact-right{text-align:right;padding:.375rem .5rem;font-size:.875rem}.settings-input-prefix:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #6366f11f}.settings-input-prefix__symbol{color:var(--faint);background:var(--surface-2);border-right:1px solid var(--border);align-items:center;height:100%;padding:0 .75rem;font-size:.875rem;display:flex}.settings-input-prefix__input{flex:1;box-shadow:none!important;border:none!important;border-radius:0!important}.settings-input-prefix__input:focus{outline:none}.settings-vat-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:1rem;padding:1rem 0;display:flex}.settings-vat-row__label{color:var(--text);margin-bottom:.2rem;font-size:.875rem;font-weight:600}.settings-vat-row__desc{color:var(--faint);font-size:.75rem}.settings-toggle{background:var(--hover);border:1px solid var(--border);cursor:pointer;border-radius:999px;flex-shrink:0;width:44px;height:24px;transition:all .2s;position:relative}.settings-toggle--on{background:var(--accent);border-color:var(--accent)}.settings-toggle__knob{background:var(--faint);border-radius:50%;width:18px;height:18px;transition:all .2s;position:absolute;top:2px;left:2px}.settings-toggle--on .settings-toggle__knob{background:#fff;left:calc(100% - 20px)}.settings-save-bar{justify-content:flex-end;align-items:center;gap:1rem;display:flex}.settings-save-bar__confirm{color:var(--success);font-size:.8125rem;font-weight:500}.vat-verifier{flex-direction:column;gap:.5rem;display:flex}.vat-verifier__row{gap:.5rem;display:flex}.vat-verifier__input{flex:1}.vat-verifier__status-text{color:var(--faint);font-size:.75rem}.vat-verify-btn{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-family:var(--font-body);cursor:pointer;white-space:nowrap;flex-shrink:0;padding:0 1rem;font-size:.8125rem;font-weight:600;transition:all .15s}.vat-verify-btn:hover:not(:disabled){border-color:var(--accent-border);color:var(--accent)}.vat-verify-btn:disabled{opacity:.5;cursor:not-allowed}.vat-result{border-radius:var(--radius-sm);align-items:flex-start;gap:.625rem;margin-top:.25rem;padding:.625rem .875rem;display:flex}.vat-result--valid{background:var(--success-soft);border:1px solid #bbf7d0}.vat-result--invalid{background:var(--danger-soft);border:1px solid #fca5a5}.vat-result__icon{flex-shrink:0;margin-top:.1rem;font-size:.875rem;font-weight:700}.vat-result--valid .vat-result__icon{color:var(--success)}.vat-result--invalid .vat-result__icon{color:var(--danger)}.vat-result__title{color:var(--text);margin-bottom:.1rem;font-size:.8125rem;font-weight:600}.vat-result__biz{color:var(--faint);font-size:.75rem}.cal-month{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.cal-month__header{background:var(--surface-2);border-bottom:1px solid var(--border);grid-template-columns:repeat(7,1fr);display:grid}.cal-month__day-label{text-align:center;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);padding:.625rem;font-size:.6875rem;font-weight:700}.cal-month__grid{grid-template-columns:repeat(7,1fr);display:grid}.cal-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;min-height:90px;padding:.5rem;transition:background .15s;position:relative}.cal-cell:hover{background:var(--hover)}.cal-cell--empty{cursor:default;background:var(--surface-2);opacity:.5}.cal-cell--today{background:var(--accent-soft)}.cal-cell--conflict{background:#fff5f5}[data-theme=dark] .cal-cell--conflict{background:#1f0707}.cal-cell__num{color:var(--muted);margin-bottom:.3rem;font-size:.8125rem;font-weight:700;display:block}.cal-cell--today .cal-cell__num{color:var(--accent)}.cal-cell__jobs{flex-direction:column;gap:.2rem;display:flex}.cal-cell__job{color:#fff;white-space:nowrap;text-overflow:ellipsis;border-radius:3px;padding:.15rem .4rem;font-size:.6875rem;overflow:hidden}.cal-cell__more{color:var(--faint);padding:.1rem .4rem;font-size:.6rem}.cal-cell__conflict-dot{background:var(--danger);border-radius:50%;width:7px;height:7px;position:absolute;top:.375rem;right:.375rem}.cal-week{grid-template-columns:repeat(7,1fr);gap:.5rem;display:grid}.cal-week__col{background:var(--surface);border:1px solid var(--border);cursor:pointer;min-height:300px;box-shadow:var(--shadow-sm);border-radius:10px;transition:all .15s;overflow:hidden}.cal-week__col:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.cal-week__col--today{border-color:var(--accent-border)}.cal-week__col--conflict{border-color:var(--danger)}.cal-week__day-label{background:var(--surface-2);border-bottom:1px solid var(--border);text-align:center;padding:.625rem}.cal-week__day-name{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-size:.6875rem;display:block}.cal-week__day-num{color:var(--text);font-size:1.125rem;font-weight:800;display:block}.cal-week__day-num--today{color:var(--accent)}.cal-week__jobs{flex-direction:column;gap:.375rem;padding:.5rem;display:flex}.cal-week__empty{color:var(--faint);text-align:center;padding:1rem 0;font-size:.75rem}.cal-week__job{border-radius:6px;padding:.5rem .625rem}.cal-week__job-customer{color:var(--text);font-size:.8125rem;font-weight:600}.cal-week__job-type,.cal-week__job-time{color:var(--muted);margin-top:.1rem;font-size:.75rem}.cal-week__job-value{color:var(--accent);margin-top:.2rem;font-size:.75rem;font-weight:600}.cal-week__conflict-warn{color:var(--danger);background:var(--danger-soft);text-align:center;border-radius:6px;padding:.375rem .625rem;font-size:.75rem;font-weight:600}.cal-day-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:380px;max-height:80vh;box-shadow:var(--shadow-lg);padding:1.5rem;overflow-y:auto}.cal-day-modal__header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.cal-day-modal__title{color:var(--text);letter-spacing:-.02em;font-size:1rem;font-weight:700}.cal-day-modal__empty{color:var(--faint);font-size:.875rem}.cal-day-modal__list{flex-direction:column;gap:.75rem;display:flex}.cal-day-modal__warning{background:var(--danger-soft);border-radius:var(--radius-sm);color:var(--danger);border:1px solid #fca5a5;padding:.625rem 1rem;font-size:.8125rem;font-weight:600}.cal-day-job{background:var(--surface-2);border-radius:var(--radius-sm);padding:.875rem 1rem}.cal-day-job__name{color:var(--text);margin-bottom:.25rem;font-weight:700}.cal-day-job__type{color:var(--muted);font-size:.8125rem}.cal-day-job__time{color:var(--muted);margin-top:.125rem;font-size:.8125rem}.cal-day-job__value{color:var(--accent);margin-top:.25rem;font-size:.8125rem;font-weight:600}.page-subtitle--danger{color:var(--danger)}.cal-controls{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.cal-view-toggle{gap:.375rem;display:flex}.btn-secondary--nav{padding:.5rem .875rem}.btn-secondary--nav-sm{padding:.5rem .875rem;font-size:.8125rem}.cal-unscheduled{margin-bottom:1.25rem}.field-label--spaced{margin-bottom:.625rem}.field-label--block{margin-bottom:.5rem;display:block}.field-label--block-spaced{margin-bottom:.625rem;display:block}.field-mismatch-text{color:#dc2626;margin-top:4px;font-size:.75rem}.visually-hidden-input{display:none}.flex-1{flex:1}.flex-2{flex:2}.icon-btn-remove{color:var(--faint);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:.25rem;font-size:1rem}.faint-text{color:var(--faint)}.cal-unscheduled__list{flex-direction:column;gap:.625rem;display:flex}.cal-unscheduled-job__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.cal-unscheduled-job__right{align-items:center;gap:.75rem;display:flex}.cal-unscheduled-job__value{color:var(--accent);font-size:.8125rem;font-weight:600}.cal-period-title{color:var(--text);letter-spacing:-.03em;margin-bottom:1.25rem;font-size:1.125rem;font-weight:700}.cal-loading{color:var(--faint)}.cal-legend{flex-wrap:wrap;gap:1rem;margin-top:1.25rem;display:flex}.cal-legend__item{align-items:center;gap:.375rem;display:flex}.cal-legend__dot{border-radius:2px;width:10px;height:10px}.cal-legend__dot--danger{background:var(--danger)}.cal-legend__label{color:var(--faint);text-transform:capitalize;font-size:.75rem}.cal-legend__label--danger{color:var(--danger)}.reminder-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);box-shadow:var(--shadow-sm);border-radius:10px;transition:all .15s;overflow:hidden}.reminder-card__header{cursor:pointer;justify-content:space-between;align-items:center;padding:.875rem 1.25rem;transition:background .15s;display:flex}.reminder-card__header:hover{background:var(--hover)}.reminder-card__main{flex:1;min-width:0}.reminder-card__customer{color:var(--text);margin-bottom:.2rem;font-size:.9375rem;font-weight:600}.reminder-card__meta{color:var(--faint);font-size:.75rem}.reminder-card__value{color:var(--text);font-size:.9375rem;font-weight:700}.reminder-card__body{border-top:1px solid var(--border);padding:0 1.25rem 1.25rem}.reminder-card__preview{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);margin-top:1rem;padding:.875rem 1rem}.reminder-card__preview-label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:.5rem;font-size:.6875rem;font-weight:600}.reminder-card__preview-text{font-family:var(--font-body);color:var(--muted);white-space:pre-wrap;margin:0;font-size:.8125rem;line-height:1.6}.reminder-card--high{border-left-color:var(--danger)}.reminder-card--medium{border-left-color:var(--warning)}.reminder-card__customer-row{align-items:center;gap:.625rem;display:flex}.reminder-card__value-row{flex-shrink:0;align-items:center;gap:.875rem;display:flex}.reminder-card__toggle-icon{color:var(--faint);font-size:.75rem}.reminder-card__actions{gap:.625rem;margin-top:.875rem;display:flex}.reminder-card__hint{color:var(--faint);margin-top:.5rem;font-size:.6875rem}.reminder-card__sent{background:var(--success-soft);border-radius:var(--radius-sm);color:var(--success);border:1px solid #bbf7d0;flex:2;justify-content:center;align-items:center;padding:.625rem;font-size:.875rem;font-weight:600;display:flex}.reminder-list{flex-direction:column;gap:.625rem;display:flex}.reminder-badge{border-radius:999px;padding:.15rem .5rem;font-size:.6875rem;font-weight:700}.reminder-badge--high{background:var(--danger-soft);color:var(--danger)}.reminder-badge--medium{background:var(--warning-soft);color:var(--warning)}.reminder-badge--low{background:var(--accent-soft);color:var(--accent)}.revision-banner{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;align-items:center;gap:1.5rem;margin-bottom:1.25rem;padding:1rem 1.5rem;display:flex}.revision-banner__col{flex-direction:column;gap:.25rem;display:flex}.revision-banner__label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-size:.6875rem;font-weight:600}.revision-banner__value{color:var(--text);font-size:1.25rem;font-weight:700}.revision-banner__arrow{color:var(--faint);font-size:1.25rem}.revision-grid{grid-template-columns:1fr 1fr;gap:.875rem;display:grid}.revise-btn{border-radius:var(--radius-sm);background:var(--accent-soft);border:1px solid var(--accent-border);width:100%;color:var(--accent);font-family:var(--font-body);cursor:pointer;margin-top:.75rem;padding:.625rem 1rem;font-size:.875rem;font-weight:600;transition:all .15s}.revise-btn:hover{background:var(--accent);color:#fff}.revision-tabs{border-bottom:1px solid var(--border);flex-shrink:0;display:flex;overflow-x:auto}.revision-tab{color:var(--faint);font-family:var(--font-body);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:.625rem 1rem;font-size:.8125rem;font-weight:400;transition:all .15s}.revision-tab:hover{color:var(--muted)}.revision-tab--active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.custom-job-btn{border-radius:var(--radius-sm);background:var(--surface-2);border:1px dashed var(--border);width:100%;color:var(--muted);cursor:pointer;font-family:var(--font-body);padding:.75rem;font-size:.875rem;font-weight:500;transition:all .15s}.custom-job-btn:hover{border-color:var(--accent-border);color:var(--accent)}.custom-job-btn--spaced{margin-top:.625rem}.template-lines{flex-direction:column;gap:.5rem;display:flex}.template-line-row{align-items:center;gap:.5rem;display:flex}.template-total{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:1rem;display:flex}.template-total__label{color:var(--muted);font-size:.875rem;font-weight:600}.template-total__value{color:var(--accent);letter-spacing:-.03em;font-size:1.25rem;font-weight:800}.template-list{flex-direction:column;gap:.75rem;display:flex}.template-card__actions{gap:.5rem;display:flex}.btn-secondary--card-action{padding:.375rem .875rem;font-size:.8125rem}.custom-job-card{background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;padding:.625rem 1rem;display:flex}.custom-job-card__name{color:var(--text);font-size:.875rem;font-weight:600}.custom-job-card__meta{color:var(--faint);margin-top:.1rem;font-size:.75rem}.custom-job-card__remove{color:var(--faint);cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:.875rem;transition:color .15s}.custom-job-card__remove:hover{color:var(--danger)}.custom-job-form{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.custom-job-form__hint{color:var(--faint);margin-top:.2rem;font-size:.75rem}.custom-job-form .field-input{width:100%;min-width:0}.custom-job-grid{grid-template-columns:1fr 1fr;gap:.75rem;width:100%;min-width:0;display:grid}.revision-total-bar{border-top:1px solid var(--border);background:var(--surface-2);padding:1rem 1.5rem}.revision-total-bar__numbers{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.revision-total-bar__col{flex-direction:column;gap:.2rem;display:flex}.revision-total-bar__label{text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-size:.6875rem;font-weight:600}.revision-total-bar__value{color:var(--muted);font-size:1rem;font-weight:700}.revision-total-bar__value--add{color:var(--success)}.revision-total-bar__value--new{color:var(--accent);font-size:1.25rem}.revision-total-bar__sep{color:var(--faint);font-size:1.25rem}.revision-total-bar__actions{gap:.75rem;display:flex}.suggestion-banner{background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--radius);align-items:flex-start;gap:1rem;margin-bottom:1.25rem;padding:1rem 1.25rem;display:flex}.suggestion-banner__icon{flex-shrink:0;margin-top:.1rem;font-size:1.25rem}.suggestion-banner__content{flex:1;min-width:0}.suggestion-banner__title{color:var(--text);margin-bottom:.25rem;font-size:.8125rem;font-weight:700}.suggestion-banner__desc{color:var(--muted);font-size:.8125rem;line-height:1.5}.suggestion-banner__range{color:var(--text);font-weight:600}.suggestion-banner__avg{color:var(--accent);font-weight:700}.suggestion-banner__actions{flex-direction:column;flex-shrink:0;gap:.375rem;display:flex}.suggestion-banner__accept{border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-family:var(--font-body);cursor:pointer;white-space:nowrap;border:none;padding:.5rem 1rem;font-size:.8125rem;font-weight:600;transition:background .15s}.suggestion-banner__accept:hover{background:var(--accent-hover)}.suggestion-banner__dismiss{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--faint);font-family:var(--font-body);cursor:pointer;text-align:center;background:0 0;padding:.375rem 1rem;font-size:.75rem;transition:all .15s}.suggestion-banner__dismiss:hover{color:var(--muted);border-color:var(--border-strong)}.quote-line--editable{align-items:center}.quote-line__edit{align-items:center;gap:.5rem;display:flex}.quote-line__edited-tag{color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:999px;padding:.1rem .5rem;font-size:.6875rem;font-weight:600}.photos-upload-row{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1.25rem;display:flex}.photos-type-select{flex-wrap:wrap;flex:1;gap:.375rem;display:flex}.photos-type-btn{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);font-family:var(--font-body);cursor:pointer;border-radius:6px;padding:.375rem .75rem;font-size:.75rem;font-weight:500;transition:all .15s}.photos-type-btn:hover{border-color:var(--border-strong);color:var(--text)}.photos-type-btn--active{font-weight:700}.photos-empty{border:2px dashed var(--border);text-align:center;cursor:pointer;border-radius:10px;padding:2.5rem 1.5rem;transition:border-color .15s}.photos-empty:hover{border-color:var(--accent-border)}.photos-empty__icon{margin-bottom:.5rem;font-size:2rem}.photos-empty__title{color:var(--text);margin-bottom:.375rem;font-size:.9375rem;font-weight:600}.photos-empty__desc{color:var(--faint);font-size:.8125rem;line-height:1.5}.photos-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;display:grid}.photo-thumb{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;background:var(--hover);position:relative;overflow:hidden}.photo-thumb__img{object-fit:cover;width:100%;height:100%;transition:transform .2s}.photo-thumb:hover .photo-thumb__img{transform:scale(1.05)}.photo-thumb__overlay{opacity:0;background:#0006;justify-content:flex-end;align-items:flex-start;padding:.375rem;transition:opacity .15s;display:flex;position:absolute;inset:0}.photo-thumb:hover .photo-thumb__overlay{opacity:1}.photo-thumb__delete{background:var(--danger);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:.6875rem;display:flex}.photo-lightbox{z-index:200;background:#000c;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}.photo-lightbox__inner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:800px;box-shadow:var(--shadow-lg);position:relative;overflow:hidden}.photo-lightbox__close{color:#fff;cursor:pointer;z-index:1;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:.875rem;display:flex;position:absolute;top:.75rem;right:.75rem}.photo-lightbox__img{object-fit:contain;width:100%;max-height:70vh;display:block}.photo-lightbox__footer{border-top:1px solid var(--border);align-items:center;gap:.75rem;padding:.875rem 1.25rem;display:flex}.timeline-visual{align-items:flex-start;gap:0;margin-bottom:1.25rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.timeline-visual__step{flex-direction:column;flex:1;align-items:center;min-width:70px;display:flex;position:relative}.timeline-visual__dot{z-index:1;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.875rem;display:flex}.timeline-visual__dot--done{background:var(--accent-soft);border:2px solid var(--accent-border)}.timeline-visual__dot--todo{background:var(--hover);border:2px solid var(--border)}.timeline-visual__info{text-align:center;margin-top:.375rem}.timeline-visual__label{color:var(--muted);font-size:.6875rem;font-weight:600}.timeline-visual__date{color:var(--faint);margin-top:.1rem;font-size:.625rem}.timeline-visual__line{background:var(--border);z-index:0;width:100%;height:2px;position:absolute;top:18px;left:50%}.timeline-visual__line--done{background:var(--accent-border)}.timeline-conflict{background:var(--danger-soft);border-radius:var(--radius-sm);border:1px solid #fca5a5;margin-bottom:1rem;padding:.75rem 1rem}.timeline-conflict__title{color:var(--danger);margin-bottom:.25rem;font-size:.875rem;font-weight:700}.timeline-conflict__desc{color:var(--danger);opacity:.8;font-size:.8125rem}.customer-autocomplete{background:var(--surface);border:1px solid var(--accent-border);box-shadow:var(--shadow-lg);z-index:50;border-radius:10px;max-height:280px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden auto}.customer-autocomplete__item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:.75rem;padding:.75rem 1rem;transition:background .1s;display:flex}.customer-autocomplete__item:last-child{border-bottom:none}.customer-autocomplete__item:hover{background:var(--hover)}.customer-autocomplete__avatar{background:var(--accent-soft);border:1px solid var(--accent-border);width:34px;height:34px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}.customer-autocomplete__info{flex:1;min-width:0}.customer-autocomplete__name{color:var(--text);font-size:.875rem;font-weight:600}.customer-autocomplete__meta{color:var(--faint);margin-top:.1rem;font-size:.75rem}.customer-autocomplete__address{color:var(--faint);flex-shrink:0;font-size:.75rem}.template-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:all .15s;overflow:hidden}.template-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.template-card__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.template-card__name{color:var(--text);margin-bottom:.2rem;font-size:.9375rem;font-weight:700}.template-card__meta{color:var(--faint);font-size:.75rem}.template-card__lines{flex-direction:column;gap:.375rem;padding:.75rem 1.25rem;display:flex}.template-card__line{color:var(--muted);border-bottom:1px solid var(--border);justify-content:space-between;padding:.25rem 0;font-size:.8125rem;display:flex}.template-card__line:last-child{border-bottom:none}.step-loading-text{color:var(--color-graftly-faint)}.btn-primary--mt1{margin-top:1rem}.template-select-list{flex-direction:column;gap:.625rem;margin-bottom:1.25rem;display:flex}.template-card--clickable{cursor:pointer}.template-card.template-card--selected{border-color:var(--color-graftly-accent);background:var(--color-graftly-accent-soft)}.template-card__header.template-card__header--selected{border-bottom:1px solid var(--color-graftly-accent)}.template-card__check{color:var(--color-graftly-accent);font-size:1.25rem;font-weight:700}.step-actions{gap:.75rem;display:flex}.custom-job-list{flex-direction:column;gap:.5rem;margin-bottom:.75rem;display:flex}.custom-job-form__actions{gap:.5rem;display:flex}.location-field--spaced{margin-bottom:1.25rem}.step-custom__header{justify-content:space-between;align-items:center;margin-bottom:.625rem;display:flex}.line-remove-btn{color:var(--color-graftly-faint);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:.25rem;font-size:1rem;transition:color .15s}.line-remove-btn:hover{color:#ef4444}.step-custom-total{background:var(--color-graftly-hover);border:1px solid var(--color-graftly-border);border-radius:8px;justify-content:space-between;align-items:center;margin-top:1.25rem;padding:1rem;display:flex}.step-custom-total__label{color:var(--color-graftly-muted);font-size:.875rem;font-weight:600}.step-custom-total__value{color:var(--color-graftly-accent);font-size:1.25rem;font-weight:800}.fade-up{animation:.3s cubic-bezier(.16,1,.3,1) fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}@media(max-width:768px){.graftly-layout{flex-direction:column}.sidebar{border-right:none;border-top:1px solid var(--border);z-index:99;flex-direction:row;width:100%;min-width:100%;height:56px;padding:0 .5rem;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.sidebar__brand{display:none}.sidebar__nav{flex-direction:row;flex:1;justify-content:space-around;gap:0;padding:0;overflow:visible}.sidebar__bottom{border-top:none;border-left:1px solid var(--border);flex-direction:row;padding:0 .5rem}.sidebar__user,.sidebar__nav-label{display:none}.sidebar__nav-btn{justify-content:center;width:44px;height:44px;padding:.5rem}.graftly-main{padding-bottom:56px}.graftly-content{padding:1rem}.topbar{padding:0 1rem}.dash-stats{grid-template-columns:1fr 1fr}.dash-grid,.settings-layout{grid-template-columns:1fr}.settings-nav{flex-flow:wrap;position:static}.settings-nav__btn{flex:1;justify-content:center;font-size:.8125rem}.settings-nav__btn span:first-child{display:none}.settings-grid{grid-template-columns:1fr!important}.custom-job-grid,.revision-grid{grid-template-columns:1fr}.cal-week{grid-template-columns:repeat(7,minmax(80px,1fr));overflow-x:auto}.job-detail{border-left:none;border-radius:0;width:100vw;height:calc(100vh - 56px)}.quote-actions{flex-wrap:wrap}.quote-actions .btn-primary,.quote-actions .btn-secondary{flex:1;min-width:140px}.page-header{flex-direction:column;gap:.75rem}.page-header .btn-primary{width:100%}.job-filters{flex-wrap:nowrap;padding-bottom:.375rem;overflow-x:auto}.job-row{flex-wrap:wrap;gap:.5rem}.customer-row__meta{flex-direction:column;align-items:flex-start;gap:.2rem}.location-field{width:100%!important}.step-indicator{-webkit-overflow-scrolling:touch;padding-bottom:.5rem;overflow-x:auto}}@media(max-width:480px){.dash-stats{grid-template-columns:1fr}.dash-hero__value{font-size:2.25rem}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
