.progress-bar{display:flex;align-items:center;width:100%;padding:8px 0}.progress-bar__step{display:flex;align-items:center;flex:1}.progress-bar__step:last-child{flex:0}.progress-bar__dot{width:28px;height:28px;border-radius:50%;border:2px solid #cbd5e1;background:#fff;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600;color:#94a3b8;transition:all .3s;flex-shrink:0}.progress-bar__dot--completed{background:#2563eb;border-color:#2563eb;color:#fff}.progress-bar__dot--current{border-color:#2563eb;color:#2563eb;box-shadow:0 0 0 3px #2563eb33}.progress-bar__connector{flex:1;height:2px;background:#cbd5e1;margin:0 4px;transition:background-color .3s}.progress-bar__connector--completed{background:#2563eb}@media (max-width: 480px){.progress-bar__dot{width:22px;height:22px;font-size:.6rem}.progress-bar__connector{margin:0 2px}}.loading-spinner{display:flex;align-items:center;justify-content:center}.loading-spinner__circle{border-radius:50%;border:3px solid #e2e8f0;border-top-color:#2563eb;animation:spin .7s linear infinite}.loading-spinner__circle--small{width:20px;height:20px;border-width:2px}.loading-spinner__circle--medium{width:36px;height:36px;border-width:3px}.loading-spinner__circle--large{width:52px;height:52px;border-width:4px}@keyframes spin{to{transform:rotate(360deg)}}.error-message{color:#dc2626;font-size:.8rem;margin-top:4px;line-height:1.4}.text-input{display:flex;flex-direction:column;gap:4px}.text-input__label{font-size:.875rem;font-weight:500;color:#334155}.text-input__required{color:#dc2626}.text-input__field{padding:10px 12px;border:1px solid #cbd5e1;border-radius:6px;font-size:.95rem;color:#1e293b;background:#fff;transition:border-color .2s,box-shadow .2s;resize:vertical}.text-input__field:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.text-input__field--error{border-color:#dc2626}.text-input__field--error:focus{box-shadow:0 0 0 2px #dc262626}.project-address-step__fields{display:flex;flex-direction:column;gap:12px}.project-address-step__row{display:grid;grid-template-columns:120px 1fr;gap:12px}@media (max-width: 480px){.project-address-step__row{grid-template-columns:1fr}}.tile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;width:100%}.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px 16px;border:2px solid #e2e8f0;border-radius:8px;background:#fff;cursor:pointer;font-size:.95rem;color:#334155;transition:border-color .2s,background-color .2s,box-shadow .2s;text-align:center;min-height:80px}.tile:hover{border-color:#93c5fd;background:#f0f7ff}.tile:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.tile--selected{border-color:#2563eb;background:#eff6ff;box-shadow:0 0 0 1px #2563eb;color:#1e40af;font-weight:600}.tile__icon{font-size:1.5rem;line-height:1}.tile__label{font-size:.9rem;line-height:1.3}@media (max-width: 480px){.tile-grid{grid-template-columns:repeat(2,1fr);gap:8px}.tile{padding:14px 10px;min-height:64px;font-size:.85rem}}.request-type-step{display:flex;flex-direction:column;gap:24px}.roof-type-step__reference{margin:12px 0 16px;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0}.roof-type-step__image{width:100%;height:auto;display:block}.step__subtitle--success{color:#16a34a;background:#f0fdf4;padding:8px 12px;border-radius:6px;border:1px solid #bbf7d0}.number-input{display:flex;flex-direction:column;gap:4px}.number-input__label{font-size:.875rem;font-weight:500;color:#334155}.number-input__required{color:#dc2626}.number-input__wrapper{display:flex;align-items:center;gap:8px}.number-input__field{flex:1;padding:10px 12px;border:1px solid #cbd5e1;border-radius:6px;font-size:.95rem;color:#1e293b;background:#fff;transition:border-color .2s,box-shadow .2s}.number-input__field:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb26}.number-input__field--error{border-color:#dc2626}.number-input__field--error:focus{box-shadow:0 0 0 2px #dc262626}.number-input__unit{font-size:.875rem;color:#64748b;min-width:20px}.roof-params-step{display:flex;flex-direction:column;gap:24px}.roof-params-step__fields{display:flex;flex-direction:column;gap:16px}@media (min-width: 768px){.roof-params-step__fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}}.roof-viewer{width:100%}.roof-viewer__canvas-wrap{position:relative;width:100%;height:350px;border-radius:12px;overflow:hidden;background:linear-gradient(180deg,#e0e7ef,#f1f5f9);cursor:grab}.roof-viewer__canvas-wrap:active{cursor:grabbing}.roof-viewer__hint{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#0009;color:#fff;padding:6px 14px;border-radius:20px;font-size:.8rem;pointer-events:none;white-space:nowrap;animation:fadeInUp .5s ease}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.roof-viewer__info{display:flex;gap:16px;margin-top:12px;padding:12px 16px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.roof-viewer__stat{display:flex;flex-direction:column;gap:2px}.roof-viewer__stat-label{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.roof-viewer__stat-value{font-size:1.1rem;font-weight:600;color:#1e293b}@media (max-width: 768px){.roof-viewer__canvas-wrap{height:280px;min-width:280px}.roof-viewer__info{flex-direction:column;gap:8px}}.roof-viewer-step__loading{display:flex;align-items:center;justify-content:center;height:350px;background:#f1f5f9;border-radius:12px}.roof-viewer-step__quick-params{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:16px}@media (max-width: 480px){.roof-viewer-step__quick-params{grid-template-columns:1fr 1fr}}.problem-step{display:flex;flex-direction:column;gap:24px}.file-upload{display:flex;flex-direction:column;gap:12px}.file-upload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:32px 16px;border:2px dashed #cbd5e1;border-radius:8px;background:#f8fafc;cursor:pointer;transition:border-color .2s,background-color .2s;text-align:center}.file-upload__dropzone:hover{border-color:#93c5fd;background:#f0f7ff}.file-upload__dropzone--active{border-color:#2563eb;background:#eff6ff}.file-upload__dropzone--error{border-color:#dc2626}.file-upload__icon{font-size:2rem;color:#94a3b8}.file-upload__text{font-size:.875rem;color:#64748b}.file-upload__text strong{color:#2563eb}.file-upload__hint{font-size:.75rem;color:#94a3b8}.file-upload__input{display:none}.file-upload__previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px}.file-upload__preview{position:relative;border-radius:6px;overflow:hidden;border:1px solid #e2e8f0;aspect-ratio:1}.file-upload__preview img{width:100%;height:100%;object-fit:cover}.file-upload__remove{position:absolute;top:2px;right:2px;width:22px;height:22px;border:none;border-radius:50%;background:#0009;color:#fff;font-size:.75rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;padding:0}.file-upload__remove:hover{background:#dc2626e6}.file-upload__count{font-size:.8rem;color:#64748b}.upload-step{display:flex;flex-direction:column;gap:24px}.upload-step__status{display:flex;flex-direction:column;gap:8px}.upload-step__file-status{display:flex;align-items:center;gap:8px;font-size:.85rem;color:#334155}.upload-step__file-status--error{color:#dc2626}.upload-step__file-status--success{color:#16a34a}.checkbox{display:flex;flex-direction:column;gap:4px}.checkbox__wrapper{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.checkbox__input{width:18px;height:18px;margin-top:2px;accent-color:#2563eb;cursor:pointer;flex-shrink:0}.checkbox__label{font-size:.875rem;color:#334155;line-height:1.5;cursor:pointer}.checkbox__label a{color:#2563eb;text-decoration:underline}.checkbox__label a:hover{color:#1d4ed8}.billing-address-step__fields{display:flex;flex-direction:column;gap:12px;margin-top:16px}.billing-address-step__row{display:grid;grid-template-columns:120px 1fr;gap:12px}@media (max-width: 480px){.billing-address-step__row{grid-template-columns:1fr}}.contact-step{display:flex;flex-direction:column;gap:24px}.contact-step__fields{display:flex;flex-direction:column;gap:16px}.contact-step__submit-error{color:#dc2626;font-size:.875rem;text-align:center}.confirmation-step{display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center;padding:16px 0}.confirmation-step__icon{font-size:3rem;line-height:1}.confirmation-step__message{font-size:1.1rem;color:#334155}.confirmation-step__summary{width:100%;max-width:400px;text-align:left;background:#f8fafc;border-radius:8px;padding:16px 20px;display:flex;flex-direction:column;gap:10px}.confirmation-step__summary-item{display:flex;flex-direction:column;gap:2px}.confirmation-step__summary-label{font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.confirmation-step__summary-value{font-size:.95rem;color:#1e293b}.confirmation-step__error{color:#dc2626;font-size:.9rem}.confirmation-step__retry{padding:10px 24px;border:none;border-radius:6px;background:#2563eb;color:#fff;font-size:.95rem;font-weight:500;cursor:pointer;transition:background-color .2s}.confirmation-step__retry:hover{background:#1d4ed8}.app{max-width:640px;margin:0 auto;padding:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app__content{margin-top:1.5rem}.app__error{color:#b91c1c;text-align:center;padding:2rem 1rem;font-size:1rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}.step{width:100%}.step__title{font-size:1.25rem;font-weight:600;color:#1e293b;margin:0}.step__subtitle{font-size:.9rem;color:#64748b;margin:4px 0 16px;line-height:1.4}.step__hint{font-size:.875rem;color:#64748b;margin:0}.step__nav{display:flex;justify-content:space-between;gap:12px;margin-top:8px}.step__btn{padding:12px 28px;border:none;border-radius:6px;font-size:.95rem;font-weight:500;cursor:pointer;transition:background-color .2s,opacity .2s;display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px}.step__btn--next{background:#2563eb;color:#fff;margin-left:auto}.step__btn--next:hover:not(:disabled){background:#1d4ed8}.step__btn--next:disabled{opacity:.5;cursor:not-allowed}.step__btn--back{background:transparent;color:#64748b;border:1px solid #cbd5e1}.step__btn--back:hover{background:#f1f5f9;color:#334155}@media (max-width: 480px){.step__btn{padding:10px 20px;font-size:.9rem}}
