html { scroll-behavior: smooth; }
* { box-sizing: border-box; }
body { background: #faf8f4; color: #171c2b; font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; margin: 0; min-width:320px; text-rendering:optimizeLegibility; }
button, input, select, textarea { font: inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color:transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible { outline:3px solid rgba(10,159,99,.28); outline-offset:2px; }
img { max-width:100%; }
::selection { background:#c9f0dc; color:#10291e; }

/* Blazor InputText/InputSelect render as child elements, so form controls must live
   globally rather than in component-scoped styles. */
.field-grid input:not([type=checkbox]):not([type=radio]),.field-grid select,.field-grid textarea,
.inline-form input:not([type=checkbox]):not([type=radio]),.inline-form select,.inline-form textarea,
.support-form input:not([type=checkbox]):not([type=radio]),.support-form select,.support-form textarea,
.destination-form input:not([type=checkbox]):not([type=radio]),.destination-form select,.destination-form textarea,
.contact-form-grid input:not([type=checkbox]):not([type=radio]),.contact-form-grid select,.contact-form-grid textarea,
.account-card input:not([type=checkbox]):not([type=radio]),.account-card select,.account-card textarea {
    appearance:none; background:#fff; border:1px solid #d7d9de; border-radius:10px; color:#202535;
    display:block; font-size:.92rem; line-height:1.35; margin-top:.42rem; min-height:46px; outline:0;
    padding:.75rem .85rem; transition:border-color .15s,box-shadow .15s,background .15s; width:100%;
}
.field-grid textarea,.inline-form textarea,.support-form textarea,.contact-form-grid textarea { min-height:100px; resize:vertical; }
.field-grid select,.inline-form select,.support-form select,.destination-form select,.contact-form-grid select {
    background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1.5 5 5 5-5' fill='none' stroke='%235b6270' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right .85rem center; padding-right:2.5rem;
}
.field-grid input:focus,.field-grid select:focus,.field-grid textarea:focus,.inline-form input:focus,.inline-form select:focus,.inline-form textarea:focus,.support-form input:focus,.support-form select:focus,.support-form textarea:focus,.destination-form input:focus,.contact-form-grid input:focus,.contact-form-grid select:focus,.contact-form-grid textarea:focus,.account-card input:focus { border-color:#0a9f63; box-shadow:0 0 0 3px rgba(10,159,99,.12); }
input.modified.valid:not([type=checkbox]),select.modified.valid,textarea.modified.valid { border-color:#55a77e; outline:0; }
input.invalid:not([type=checkbox]),select.invalid,textarea.invalid { background:#fffafa; border-color:#d64d42; outline:0; }
input[type=checkbox],input[type=radio] { accent-color:#0a9f63; height:17px; margin:0; vertical-align:middle; width:17px; }
.validation-message { color:#b43f36; display:block; font-size:.7rem; font-weight:650; margin-top:.3rem; }
.validation-summary ul { margin:.25rem 0; padding-left:1.1rem; }
button:disabled { cursor:not-allowed; opacity:.58; }
.application-status { background:#f4f2fa; border-radius:14px; display:flex; flex-direction:column; padding:15px 18px; }
.application-status strong,.application-status span { display:block; }
.application-status span { color:#686570; font-size:.8rem; margin-top:3px; }
.application-status.submitted { background:#fff5d8; }
.application-status.approved { background:#e6f8ef; }
.application-status.rejected { background:#fff0f0; }
.quote-result button { background:#ff5a3c !important; color:white !important; cursor:pointer; font-weight:800; }
.quote-result button:disabled { cursor:wait; opacity:.7; }
.result-link { color:white; display:block; font-size:.75rem; font-weight:750; margin-top:.8rem; text-decoration:none; }
.account-shell { align-items:center; background:#f3f0ea; display:flex; justify-content:center; min-height:calc(100vh - 76px); padding:4rem 1.25rem; }
.account-card { background:white; border:1px solid #e5e2dc; border-radius:20px; box-shadow:0 24px 70px rgba(23,28,43,.09); max-width:480px; padding:2.5rem; width:100%; }
.account-kicker { color:#ff5a3c; font-size:.68rem; font-weight:800; letter-spacing:.15em; }
.account-card h1 { color:#171c2b; font-size:2.2rem; letter-spacing:-.05em; margin:.6rem 0; }
.account-card>p { color:#777c88; line-height:1.6; margin:0 0 1.8rem; }
.account-card form>label:not(.remember) { color:#4e5360; display:flex; flex-direction:column; font-size:.76rem; font-weight:750; gap:.4rem; margin-bottom:1rem; }
.account-card input:not([type=checkbox]):not([type=radio]) { min-height:52px; }
.account-card input:focus { border-color:#ff8068; box-shadow:0 0 0 3px rgba(255,90,60,.1); }
.remember { align-items:center; color:#6d7280; display:flex; font-size:.78rem; gap:.5rem; margin:.25rem 0 1rem; }
.remember-row { align-items:center; display:flex; justify-content:space-between; margin:.25rem 0 1rem; }
.remember-row .remember { margin:0; }
.remember-row a { color:#ff5a3c; font-size:.76rem; font-weight:750; text-decoration:none; }
.primary-action { background:#ff5a3c; border:0; border-radius:10px; color:white; cursor:pointer; font-weight:800; padding:.9rem 1rem; width:100%; }.primary-action span { float:right; }
.account-card .account-switch { color:#777c88; font-size:.82rem; margin:1.4rem 0 0; text-align:center; }.account-switch a { color:#e84b30; font-weight:750; }
.access-denied-card { text-align:center; }
.access-denied-icon { align-items:center; background:#e7f7ef; border-radius:50%; color:#087a4b; display:flex; height:64px; justify-content:center; margin:0 auto 1.2rem; width:64px; }
.access-denied-icon svg { fill:none; height:32px; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:1.8; width:32px; }
.access-denied-action { box-sizing:border-box; display:block; text-align:left; text-decoration:none; }
.form-alert,.validation-summary { background:#fff0ed; border-radius:9px; color:#a83c29; font-size:.78rem; margin-bottom:1rem; padding:.75rem; }.validation-message { color:#b23f2d; font-size:.7rem; }
.success-alert { background:#e9f5ee; border:1px solid #cfe8d9; border-radius:9px; color:#2b7253; font-size:.78rem; margin-bottom:1rem; padding:.75rem; }
h1:focus {
    outline: none;
}


.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

.manage-booking{background:#fff;border:1px solid #e4e2de;border-radius:14px;margin-top:1rem;padding:1.4rem}.manage-booking>h2{font-size:1rem;margin:0 0 .4rem}.manage-booking>p{color:#777;font-size:.78rem}.manage-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:18px}.manage-grid h3{font-size:.88rem}.manage-grid label{display:block;color:#666;font-size:.72rem;margin:10px 0}.manage-grid input,.manage-grid select,.manage-grid textarea{box-sizing:border-box;display:block;width:100%;border:1px solid #d9d5df;border-radius:9px;margin-top:5px;padding:10px;background:#fff}.manage-grid textarea{min-height:84px;resize:vertical}.manage-grid button{border:0;border-radius:9px;background:#171c2b;color:#fff;font-weight:750;padding:10px 13px;cursor:pointer}.manage-grid button:disabled{opacity:.5}.manage-grid .danger-action{background:#a52a2a}.manage-grid>div>small{display:block;color:#888;font-size:.67rem;margin-top:8px}.reschedule-quote{background:#f5f2ff;border-radius:10px;margin-top:12px;padding:12px}.reschedule-quote span,.reschedule-quote small{display:block}.reschedule-quote strong{display:block;font-size:1.3rem;margin:3px 0 10px}.action-message{background:#fff5da;border:1px solid #f0d68b;border-radius:9px;color:#775c13;padding:10px;font-size:.78rem}.qr-payment-card{text-align:center;margin:14px 0}.qr-payment-card img{width:200px;height:200px;border:1px solid #e4e2de;border-radius:12px;padding:10px;background:#fff}.qr-payment-card p{font-size:.8rem;color:#555;margin-top:10px}.upload-proof-label{display:block;font-size:.78rem;color:#555;margin-top:10px}.upload-proof-label input{display:block;margin-top:6px}.proof-thumb{display:block;width:160px;border-radius:10px;border:1px solid #e4e2de;margin:10px 0}@media(max-width:700px){.manage-grid{grid-template-columns:1fr}}
.cancel-job{display:flex;gap:8px;border-top:1px solid #eee;padding:12px 0}.cancel-job input{flex:1;border:1px solid #e0d9df;border-radius:9px;padding:9px}.cancel-job button{border:0;border-radius:9px;background:#a52a2a;color:#fff;font-weight:750;padding:9px 12px}.cancel-job button:disabled{opacity:.5}
.notification-panel{display:flex;align-items:center;gap:18px;background:#fff;border:1px solid #e4e2de;border-radius:14px;margin-top:18px;padding:18px}.notification-panel h2{margin:0}.notification-panel p{color:#777;font-size:.72rem;margin:4px 0}.notification-panel label{font-size:.78rem}.notification-panel small{display:block;color:#999}.notification-panel .disabled{opacity:.6}.notification-panel button{margin-left:auto;border:0;border-radius:9px;background:#171c2b;color:#fff;font-weight:750;padding:10px 13px}@media(max-width:800px){.notification-panel{align-items:flex-start;flex-direction:column}.notification-panel button{margin-left:0}}
.quote-result .online-payment{background:#ff745a;color:white;margin-top:.55rem}.payment-phone{color:#c3c9d5!important;margin-top:.8rem!important}.payment-phone input{background:#252d40!important;border-color:#465067!important;color:white}.simulation-note{color:#f4b7aa;display:block;font-size:.65rem;margin-top:.45rem}
.location-help{align-items:center;display:flex;gap:12px;margin-top:12px;position:relative;z-index:2}.location-help button{background:transparent;border:0;color:#d9452a;cursor:pointer;font-weight:750;padding:4px 0}.location-help button:disabled{opacity:.6}.location-help span{color:#707582;font-size:.75rem}.view-switcher{background:#f2f1ee;border-radius:9px;display:flex;padding:3px}.view-switcher button{align-items:center;background:transparent;border:0;border-radius:7px;color:#686d79;cursor:pointer;display:flex;font-size:.72rem;font-weight:750;gap:5px;padding:7px 11px}.view-switcher button svg{fill:none;height:15px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;width:15px}.view-switcher button.active{background:#fff;box-shadow:0 1px 5px rgba(23,28,43,.12);color:#171c2b}.save-button.saved{background:#fff;color:#e44635}.map-shell{margin-top:20px}.vendor-map{border:1px solid #dddcd8;border-radius:16px;height:520px;overflow:hidden}.map-shell>p{color:#777c88;font-size:.72rem;margin:9px 3px}.map-error{background:#fff3ef;border-radius:10px;color:#8a493b;margin-top:10px;padding:12px}.map-error button{background:none;border:0;color:#8a493b;font-weight:750;text-decoration:underline}.leaflet-popup-content strong,.leaflet-popup-content div,.leaflet-popup-content a{display:block}.leaflet-popup-content div{color:#6f7480;margin:5px 0}.leaflet-popup-content a{color:#d9452a;font-weight:750}@media(max-width:680px){.location-help{align-items:flex-start;flex-direction:column}.vendor-map{height:420px}.view-switcher{order:3;width:100%}.view-switcher button{flex:1;justify-content:center}}
.favorite-vendor{background:transparent;border:1px solid #656c7e;border-radius:8px;color:#fff;cursor:pointer;font-size:.72rem;font-weight:750;margin-top:10px;padding:7px 10px}.reviews-section{background:#fff;padding:4.5rem clamp(1.25rem,7vw,7rem)}.reviews-heading p{color:#7c818d;margin:0}.review-form{background:#f7f5f1;border-radius:14px;display:grid;gap:12px;margin:24px 0;padding:20px}.review-form h3{margin:0}.review-form label{color:#5d626f;font-size:.72rem;font-weight:750}.review-form select,.review-form textarea{background:#fff;border:1px solid #dcdad5;border-radius:8px;box-sizing:border-box;display:block;margin-top:5px;padding:10px;width:100%}.review-form textarea{min-height:90px;resize:vertical}.review-form button{background:#171c2b;border:0;border-radius:9px;color:#fff;cursor:pointer;font-weight:750;padding:11px;width:max-content}.review-form button:disabled{opacity:.5}.review-form>p{background:#e8f5ed;border-radius:8px;color:#27754f;padding:10px}.review-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:24px}.review-grid article{border:1px solid #e7e6e2;border-radius:12px;padding:18px}.review-grid article>div{display:flex;justify-content:space-between}.review-grid span{color:#e69022;letter-spacing:2px}.review-grid p{color:#575c68;line-height:1.6}.review-grid small,.review-empty{color:#8a8e98}.review-empty{padding:28px 0}@media(max-width:680px){.review-grid{grid-template-columns:1fr}.review-form button{width:100%}}
.phone-auth-action,.google-auth-action{align-items:center;background:#fff;border:1px solid #dcd9d3;border-radius:10px;box-sizing:border-box;color:#252a39;display:flex;font-size:.84rem;font-weight:750;gap:.7rem;justify-content:center;min-height:48px;padding:.75rem 1rem;text-decoration:none;width:100%}.phone-auth-action{background:#171c2b;border-color:#171c2b;color:#fff}.phone-auth-action svg,.google-auth-action svg{fill:none;height:20px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;width:20px}.google-auth-action{cursor:pointer;margin-top:.7rem}.google-auth-action svg{stroke:none}.external-login-form{margin:0}.auth-divider{align-items:center;color:#9699a2;display:flex;font-size:.68rem;gap:.8rem;margin:1.1rem 0;text-transform:uppercase}.auth-divider::before,.auth-divider::after{background:#e8e5df;content:"";flex:1;height:1px}.phone-field{align-items:center;border:1px solid #d9d7d2;border-radius:9px;display:flex;overflow:hidden}.phone-field>span{background:#f5f3ef;color:#555b68;font-size:.84rem;font-weight:750;padding:1rem}.account-card .phone-field input{border:0!important;border-radius:0;box-shadow:none!important;min-width:0}.development-code{background:#edf8f2;border:1px solid #c9ead8;border-radius:9px;color:#176a46;font-size:.8rem;margin-bottom:1rem;padding:.8rem;text-align:center}.account-card label small{color:#9296a0;float:right;font-weight:500}
.payment-options{display:grid;gap:.5rem;margin:.8rem 0}.quote-result button.payment-option{align-items:center;background:#232c40;border:1px solid #3b4559;color:#fff;cursor:pointer;display:grid;gap:.6rem;grid-template-columns:34px 1fr auto;padding:.7rem;text-align:left}.quote-result button.payment-option.selected{background:#263b38;border-color:#49b982}.payment-option-icon{align-items:center;background:#314055;border-radius:8px;color:#83d9ac;display:flex;font-weight:850;height:32px;justify-content:center;width:32px}.payment-option-icon.cash{color:#ffd084}.payment-option>span:nth-child(2){display:flex;flex-direction:column}.payment-option strong{font-size:.72rem}.payment-option small{color:#aeb6c5;font-size:.62rem;margin-top:2px}.payment-option b{color:#63d19a}.quote-result button.online-payment,.quote-result button.cash-payment{background:#ff5a3c;color:#fff;cursor:pointer;font-weight:800;margin-top:.7rem}.quote-result button.online-payment:disabled,.quote-result button.cash-payment:disabled{cursor:wait;opacity:.55}.secure-payment,.simulation-note{color:#aeb6c5;display:block;font-size:.61rem;margin-top:.55rem;text-align:center}.payment-phone input{box-sizing:border-box}
.legal-shell{background:#fff;margin:0 auto;max-width:860px;padding:5rem 1.5rem 6rem}.legal-kicker{color:#0a9f63;font-size:.7rem;font-weight:850;letter-spacing:.15em}.legal-shell h1{font-size:clamp(2.5rem,6vw,4.6rem);letter-spacing:-.06em;line-height:1;margin:.7rem 0}.legal-updated{color:#858a94;font-size:.78rem;margin-bottom:3rem}.legal-shell section{border-top:1px solid #e9e7e2;padding:1.4rem 0}.legal-shell h2{color:#202535;font-size:1.05rem;margin:0 0 .55rem}.legal-shell p{color:#626977;line-height:1.75;margin:0}.legal-shell a{color:#087c50;font-weight:700}
