@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:ital,wght@0,400..800;1,400..600&display=swap";:root{--font: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--radius: 12px;--brand-navy: #1a3668;--brand-amber: #ffb800}html{color-scheme:dark light}[data-theme=dark]{--bg: #0c1018;--bg-elevated: #131a24;--surface: #182030;--card: #1c2433;--border: #2a3548;--text: #eef1f7;--muted: #8a96ad;--brand-heading: #f2c14a;--primary: #ffb800;--primary-hover: #ffcc33;--primary-muted: rgba(255, 184, 0, .16);--primary-contrast: #1a1400;--danger: #e85d5d;--danger-fg: #ffc9c9;--warn: #e6b35a;--shadow: 0 4px 24px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .35);--success-bg: rgba(76, 163, 106, .14);--success-border: #3d8f5f;--success-fg: #b8e8c8;--error-bg: rgba(232, 93, 93, .12);--error-border: #c44}[data-theme=light]{color-scheme:light;--bg: #f5f6f8;--bg-elevated: #ffffff;--surface: #ffffff;--card: #ffffff;--border: #dce0ea;--text: #141c2c;--muted: #5a6578;--brand-heading: #1a3668;--primary: #1a3668;--primary-hover: #234a8a;--primary-muted: rgba(26, 54, 104, .12);--primary-contrast: #ffffff;--danger: #c62828;--danger-fg: #8b1a1a;--warn: #b8860b;--shadow: 0 8px 30px rgba(26, 54, 104, .1);--shadow-sm: 0 1px 3px rgba(26, 54, 104, .08);--success-bg: rgba(26, 104, 72, .1);--success-border: #1a6b4a;--success-fg: #0d4a32;--error-bg: rgba(198, 40, 40, .08);--error-border: #c62828}html{font-family:var(--font);font-size:16px;font-weight:400;line-height:1.58;letter-spacing:-.012em;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1,"liga" 1,"calt" 1}h1,h2,h3{font-family:var(--font);font-weight:700;letter-spacing:-.045em;line-height:1.18;text-wrap:balance;color:var(--brand-heading)}p{margin:0;line-height:1.58}button,input,textarea,select{font-family:var(--font);letter-spacing:-.01em}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}#root{min-height:100vh}.mono{font-family:var(--font-mono);font-size:.9em;font-weight:500;letter-spacing:-.02em;font-feature-settings:"liga" 0}.small{font-size:.875rem}.muted{color:var(--muted)}.chrome-toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.segmented{display:inline-flex;padding:3px;background:var(--surface);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-sm)}.segmented button{border:none;background:transparent;color:var(--muted);font:inherit;font-size:.8rem;font-weight:600;padding:.35rem .75rem;border-radius:999px;cursor:pointer;transition:background .15s ease,color .15s ease}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--primary-muted);color:var(--primary)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.35rem;height:2.35rem;padding:0;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--text);cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s ease,transform .1s ease}.icon-btn:hover{background:var(--card);transform:scale(1.04)}.theme-icon{font-size:1.15rem;line-height:1}.boot{display:grid;place-items:center;min-height:100vh}.loading-spinner-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;text-align:center}.loading-spinner-wrap--lg{min-height:min(52vh,420px);padding:2.5rem 1rem}.loading-spinner-wrap--md{min-height:8rem;padding:1.25rem .5rem}.loading-spinner{position:relative;width:3.25rem;height:3.25rem}.loading-spinner-wrap--lg .loading-spinner{width:3.75rem;height:3.75rem}.loading-spinner-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:3px solid transparent;border-top-color:var(--primary);border-right-color:color-mix(in srgb,var(--primary) 35%,transparent);animation:spinner-rotate .9s cubic-bezier(.45,.05,.55,.95) infinite}.loading-spinner-ring--inner{top:.45rem;right:.45rem;bottom:.45rem;left:.45rem;border-width:2.5px;border-top-color:var(--brand-heading);border-right-color:color-mix(in srgb,var(--brand-heading) 30%,transparent);animation-duration:1.15s;animation-direction:reverse}.loading-spinner-core{position:absolute;top:50%;right:50%;bottom:50%;left:50%;width:.45rem;height:.45rem;margin:-.225rem 0 0 -.225rem;border-radius:50%;background:var(--primary);box-shadow:0 0 12px color-mix(in srgb,var(--primary) 65%,transparent);animation:spinner-pulse 1.2s ease-in-out infinite}.loading-spinner-label{margin:0;font-size:.9375rem;font-weight:600;color:var(--muted);letter-spacing:-.02em}@keyframes spinner-rotate{to{transform:rotate(360deg)}}@keyframes spinner-pulse{0%,to{transform:scale(.85);opacity:.65}50%{transform:scale(1.15);opacity:1}}.bookings-empty{text-align:center;padding:1.5rem 0}.login-page{position:relative;min-height:100vh;display:flex;flex-direction:column;overflow:hidden}.login-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}.login-bg-image{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.login-bg-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#080e1c8c,#080e1cb8),#080e1c80;pointer-events:none}.login-topbar{position:relative;z-index:2;display:flex;justify-content:flex-end;padding:1rem 1.25rem 0}.login-center{position:relative;z-index:1;flex:1;display:flex;align-items:center;justify-content:center;padding:1.5rem 1.25rem 2.5rem}.login-page .login-card.card{width:100%;max-width:420px;padding:1.75rem 1.65rem 1.85rem;background:#fff;border-color:#e4e8f0;color:#141c2c;box-shadow:0 20px 56px #0006}.login-page .login-card.card .login-subtitle{color:#5a6578}.login-page .login-card.card .login-form .field span{color:#141c2c}.login-page .login-card.card .login-form input{background:#f5f6f8;border-color:#dce0ea;color:#141c2c}.login-page .login-card.card .login-form input::placeholder{color:#5a6578;opacity:.75}.login-page .login-card.card .login-form input:focus{border-color:var(--brand-navy)}.login-header{margin-bottom:1.15rem;text-align:center}.login-card-logo-wrap{margin:0 auto;display:flex;justify-content:center;width:fit-content;max-width:100%;line-height:0}.login-card-logo{display:block;width:auto;height:auto;max-width:min(220px,78vw);object-fit:contain}.login-subtitle{margin:1rem auto 0;font-size:.875rem;line-height:1.55;color:var(--muted);max-width:36ch}.login-form{gap:1.1rem}.login-form .field{gap:.45rem}.login-form .field span{font-size:.875rem;font-weight:600;color:color-mix(in srgb,var(--text) 78%,var(--muted))}.login-form input{background:var(--bg-elevated);border-color:color-mix(in srgb,var(--border) 85%,var(--muted));padding:.65rem .85rem}.login-form input::placeholder{color:var(--muted);opacity:.65}.login-form input:focus{border-color:var(--primary)}.login-error{margin:0}.login-submit{width:100%;margin-top:.2rem;padding:.72rem 1rem;font-size:.96875rem}@media (max-width: 480px){.login-center{padding:1rem 1rem 1.75rem;align-items:center}.login-page .login-card.card{max-width:none}}.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}@media (max-width: 720px){.shell{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border)}.nav{flex-direction:row!important;flex-wrap:wrap}}.sidebar{background:var(--bg-elevated);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1.1rem;gap:1rem;box-shadow:var(--shadow-sm)}.sidebar-top{display:flex;flex-direction:column;gap:.75rem}.chrome-toolbar-wrap{display:flex;justify-content:flex-end}.brand-lockup{display:flex;flex-direction:column;gap:.55rem}.brand-logo{width:100%;max-width:11rem;height:auto;display:block;border-radius:8px;box-shadow:var(--shadow-sm)}.brand{font-weight:800;font-size:1.08rem;letter-spacing:-.035em;line-height:1.2;color:var(--brand-heading)}.nav{display:flex;flex-direction:column;gap:.25rem}.nav a{color:var(--muted);text-decoration:none;padding:.55rem .75rem;border-radius:var(--radius);font-weight:600;font-size:.95rem;transition:background .15s ease,color .15s ease}.nav a:hover{color:var(--text);background:var(--surface)}.nav a.active{background:var(--primary-muted);color:var(--primary)}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:.65rem;padding-top:1rem;border-top:1px solid var(--border)}.main{padding:1.5rem 1.75rem 2.5rem;overflow-x:auto;background:var(--bg)}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.page-head h1{margin:0;font-size:1.75rem;font-weight:800;letter-spacing:-.045em;line-height:1.15}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem 1.2rem;box-shadow:var(--shadow-sm)}.booking-card:hover{border-color:var(--primary);box-shadow:var(--shadow)}.stack{display:flex;flex-direction:column;gap:.75rem}.stack.gap-lg{gap:1.1rem}.row{display:flex;align-items:center}.row.gap{gap:.75rem}.page-head-toolbar.row,.row.gap.directory-toolbar{align-items:flex-end}.toolbar-row-end{display:flex;justify-content:flex-end;align-items:center}.row.wrap{flex-wrap:wrap}.tabs{display:flex;flex-wrap:wrap;gap:.45rem}.tabs button{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.45rem .9rem;border-radius:999px;cursor:pointer;font:inherit;font-weight:600;font-size:.875rem;transition:border-color .15s ease,background .15s ease}.tabs button:hover{border-color:var(--muted)}.tabs button.active{border-color:var(--primary);background:var(--primary-muted);color:var(--primary)}.field{display:flex;flex-direction:column;gap:.35rem}.field.compact input,.field.compact textarea,.field.compact select{max-width:14rem}.field span{font-size:.85rem;color:var(--muted);font-weight:500}input,textarea,select{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:.55rem .75rem;font:inherit;transition:border-color .15s ease,box-shadow .15s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-muted)}textarea{resize:vertical}.btn{border:none;border-radius:10px;padding:.6rem 1.1rem;font:inherit;font-weight:600;font-size:.9375rem;letter-spacing:-.015em;cursor:pointer;transition:opacity .15s ease,transform .1s ease}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,var(--primary) 0%,var(--primary-hover) 100%);color:var(--primary-contrast)}.btn.primary:hover:not(:disabled){filter:brightness(1.05)}.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn.secondary:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.btn.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;min-width:2.5rem;padding:0;flex-shrink:0}.btn.btn-icon .refresh-svg{display:block}.btn-icon--spinning .refresh-svg{animation:refresh-spin .75s linear infinite}@keyframes refresh-spin{to{transform:rotate(360deg)}}.btn.ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.inline{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}.error-banner{background:var(--error-bg);border:1px solid var(--error-border);color:var(--danger-fg);padding:.65rem .9rem;border-radius:var(--radius)}.success-banner{background:var(--success-bg);border:1px solid var(--success-border);color:var(--success-fg);padding:.65rem .9rem;border-radius:var(--radius)}.error-text{color:var(--danger-fg);margin:0}.booking-card{overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.booking-card--open{border-color:color-mix(in srgb,var(--primary) 45%,var(--border))}.booking-summary{all:unset;display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;width:100%;cursor:pointer;padding:.15rem 0}.booking-summary:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:6px}.booking-summary-main{flex:1;min-width:0}.booking-summary-top{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.booking-ref{font-size:1.05rem;letter-spacing:-.03em}.booking-summary-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-top:.35rem}.booking-summary-dot{opacity:.5}.booking-summary-handyman{margin-top:.45rem}.handyman-chip{display:inline-block;padding:.2rem .55rem;border-radius:999px;background:var(--primary-muted);color:var(--primary);font-weight:600;font-size:.8rem}.booking-chevron{flex-shrink:0;color:var(--muted);font-size:1.1rem;line-height:1;margin-top:.15rem;transition:transform .2s ease}.booking-chevron--open{transform:rotate(180deg)}.booking-body{margin-top:.9rem;padding-top:.9rem;border-top:1px solid var(--border)}.booking-body p{margin:.45rem 0}.booking-detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:.85rem 1.25rem;margin-bottom:1rem}.detail-row{display:flex;flex-direction:column;gap:.25rem}.detail-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.detail-value{font-size:.9375rem;line-height:1.45}.detail-value a{color:var(--primary);text-decoration:none}.detail-value a:hover{text-decoration:underline}.booking-description{margin:0;white-space:pre-wrap}.estimate-amount{font-weight:700;font-size:1.05rem;color:var(--brand-heading)}.estimate-notes{margin:.35rem 0 0}.booking-section{margin-bottom:1rem}.booking-section-title{margin:0 0 .55rem;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.doc-link-grid{display:flex;flex-wrap:wrap;gap:.55rem}.doc-link{display:flex;align-items:center;gap:.65rem;padding:.65rem .85rem;border-radius:10px;border:1px solid var(--border);background:var(--surface);text-decoration:none;color:var(--text);min-width:min(100%,220px);transition:border-color .15s ease,background .15s ease}.doc-link:hover{border-color:var(--primary);background:var(--primary-muted)}.doc-link-icon{display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:8px;background:var(--error-bg);border:1px solid var(--error-border);color:var(--danger-fg);font-size:.62rem;font-weight:800;letter-spacing:.02em}.doc-link-text{display:flex;flex-direction:column;gap:.1rem}.handyman-panel{display:flex;gap:.85rem;padding:.85rem 1rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface)}.handyman-panel--empty{justify-content:center;padding:.75rem}.handyman-avatar{width:3.25rem;height:3.25rem;border-radius:12px;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}.handyman-avatar--placeholder{display:grid;place-items:center;background:var(--primary-muted);color:var(--primary);font-weight:800;font-size:1.25rem}.handyman-panel-body{flex:1;min-width:0}.handyman-panel-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.handyman-panel-head strong{font-size:1rem}.handyman-bio{margin:.35rem 0 0}.photo-thumb-grid{display:flex;flex-wrap:wrap;gap:.5rem}.photo-thumb{display:block;width:5.5rem;height:5.5rem;border-radius:10px;overflow:hidden;border:1px solid var(--border);transition:transform .15s ease,border-color .15s ease}.photo-thumb:hover{border-color:var(--primary);transform:scale(1.03)}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-thumb--pending,.photo-thumb--failed{display:grid;place-items:center;gap:.25rem;background:var(--bg-elevated);cursor:default;text-align:center;padding:.35rem}.photo-thumb--failed a{color:var(--primary);font-size:.7rem}.photo-thumb-loading{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--bg) 55%,transparent);animation:spinner-pulse 1s ease-in-out infinite}.photo-thumb{position:relative}.photo-thumb--button{padding:0;border:1px solid var(--border);background:var(--surface);cursor:zoom-in;font:inherit}.photo-thumb--button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.image-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr;align-items:center;justify-items:center;padding:1rem;background:#080c14eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:lightbox-fade-in .2s ease}.image-lightbox-toolbar{grid-column:1 / -1;width:100%;max-width:96vw;display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem;color:#eef1f7}.image-lightbox-counter{font-size:.875rem;font-weight:600;color:#eef1f7d9}.image-lightbox-close{width:2.5rem;height:2.5rem;border:none;border-radius:50%;background:#ffffff1f;color:#fff;font-size:1.65rem;line-height:1;cursor:pointer;transition:background .15s ease}.image-lightbox-close:hover{background:#ffb80059}.image-lightbox-stage{grid-column:2;display:flex;align-items:center;justify-content:center;max-width:min(96vw,1200px);max-height:calc(100vh - 5rem)}.image-lightbox-img{max-width:100%;max-height:calc(100vh - 5rem);width:auto;height:auto;object-fit:contain;border-radius:8px;box-shadow:0 24px 64px #0000008c}.image-lightbox-nav{align-self:center;width:2.75rem;height:2.75rem;border:none;border-radius:50%;background:#ffffff1f;color:#fff;font-size:2rem;line-height:1;cursor:pointer;transition:background .15s ease}.image-lightbox-nav:hover{background:#ffb80059}.image-lightbox-nav--prev{grid-column:1}.image-lightbox-nav--next{grid-column:3}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}@media (max-width: 640px){.image-lightbox{grid-template-columns:1fr;padding:.75rem}.image-lightbox-nav{position:fixed;bottom:1.25rem;z-index:2}.image-lightbox-nav--prev{left:1rem}.image-lightbox-nav--next{right:1rem}.image-lightbox-stage{grid-column:1}}.photo-thumb-placeholder{color:var(--muted);font-size:1.25rem;font-weight:700}.booking-quote-panel{padding:.85rem 1rem;border-radius:var(--radius);border:1px solid color-mix(in srgb,var(--primary) 35%,var(--border));background:color-mix(in srgb,var(--primary-muted) 55%,var(--surface))}.quote-panel-body{margin-bottom:.65rem}.quote-panel-price{margin:0;font-size:1.2rem;font-weight:800;color:var(--brand-heading)}.doc-link--disabled{display:flex;align-items:center;gap:.65rem;padding:.65rem .85rem;border-radius:10px;border:1px dashed var(--border);background:var(--bg-elevated);opacity:.85}.pill{font-size:.65rem;text-transform:uppercase;letter-spacing:.07em;padding:.22rem .5rem;border-radius:6px;background:var(--surface);border:1px solid var(--border);font-weight:700}.pill--doc{background:var(--error-bg);border-color:var(--error-border);color:var(--danger-fg)}.pill.status--PENDING_ADMIN_ASSIGNMENT,.pill.status--QUOTE_SENT{border-color:var(--warn);color:var(--warn)}.pill.status--QUOTE_APPROVED{border-color:#5b9bd5;color:#5b9bd5}.pill.status--ASSIGNED,.pill.status--ACCEPTED,.pill.status--ON_THE_WAY,.pill.status--ARRIVED,.pill.status--IN_PROGRESS{border-color:var(--primary);color:var(--primary)}.pill.status--PENDING_ADMIN_COMPLETION{border-color:#c77dff;color:#c77dff}.pill.status--COMPLETED{border-color:var(--success-border);color:var(--success-fg)}.pill.status--CANCELLED{border-color:var(--error-border);color:var(--danger-fg)}.action-panel{margin-top:1rem;padding:1.1rem;background:var(--bg-elevated);border-radius:var(--radius);border:1px solid var(--border)}.action-panel h3{margin:0 0 .5rem;font-size:1.05rem;font-weight:700}.provider-pick-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}.provider-pick-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:.85rem;padding:.75rem;background:var(--surface);border-radius:10px;border:1px solid var(--border)}.provider-pick-list li.conflict{border-color:var(--warn);background:#e6b35a14}.warn{color:var(--warn)}.boxed{padding:.75rem;background:var(--surface);border-radius:10px;font-size:.9rem;border:1px solid var(--border)}.max-w-form{max-width:480px}.max-w-form h2{margin:0 0 .25rem;font-size:1.35rem;font-weight:700;letter-spacing:-.04em;line-height:1.2}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border);background:var(--card)}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{text-align:left;padding:.65rem .85rem;border-bottom:1px solid var(--border)}.data-table tbody tr:hover{background:var(--primary-muted)}.data-table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;background:var(--surface)}.data-table tr:last-child td{border-bottom:none}
