.header{background:linear-gradient(135deg,#667eea,#764ba2,#f093fb);color:#fff;padding:40px 30px;text-align:center;position:relative;overflow:hidden}.header:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);animation:float 6s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-20px) rotate(180deg)}}.header h1{font-size:2rem;margin-bottom:10px;position:relative;z-index:1}.header p{opacity:.95;font-size:1.1rem;position:relative;z-index:1}@media (max-width: 768px){.header{padding:20px}.header h1{font-size:1.4rem;margin-bottom:8px}.header p{font-size:1rem;opacity:.9}}@media (max-width: 480px){.header{padding:15px}.header h1{font-size:1.2rem}.header p{font-size:.9rem}}.progress-bar{width:100%;margin:20px 0;padding:16px;background:#ffffffe6;border-radius:12px;box-shadow:0 4px 15px #0000001a;border:1px solid var(--border-color);animation:fadeInUp .4s ease-out}.progress-track{width:100%;height:12px;background:#667eea1a;border-radius:6px;overflow:hidden;position:relative;margin-bottom:12px}.progress-fill{height:100%;background:linear-gradient(90deg,#667eea,#764ba2);border-radius:6px;transition:width .3s ease-out;position:relative;overflow:hidden;will-change:width}.progress-fill:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:16px 16px;animation:move 1.5s linear infinite;opacity:.8}.progress-complete{background:linear-gradient(90deg,#27ae60,#2ecc71)}.progress-complete:after{animation:none}.progress-info{display:flex;justify-content:space-between;align-items:center}.progress-text{font-size:.9rem;color:var(--text-primary);font-weight:500;flex:1}.progress-percentage{font-size:.85rem;color:var(--text-secondary);font-weight:600;background:#667eea1a;padding:4px 8px;border-radius:4px;min-width:40px;text-align:center}@keyframes move{0%{background-position:0 0}to{background-position:16px 16px}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.progress-bar{padding:12px;margin:15px 0}.progress-text{font-size:.85rem}.progress-percentage{font-size:.8rem;padding:3px 6px}}.form-container{padding:30px}.form-group{margin-bottom:25px}.form-group label{display:block;font-weight:600;color:var(--text-primary);margin-bottom:8px;font-size:1rem}.form-group select,.form-group input{width:100%;padding:14px 16px;border:2px solid var(--border-color);border-radius:12px;font-size:1rem;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--bg-secondary);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--text-primary);animation:slideInFromLeft .5s ease-out;animation-fill-mode:both}.form-group:nth-child(1) select,.form-group:nth-child(1) input{animation-delay:.1s}.form-group:nth-child(2) select,.form-group:nth-child(2) input{animation-delay:.2s}.form-group:nth-child(3) select,.form-group:nth-child(3) input{animation-delay:.3s}.form-group:nth-child(4) select,.form-group:nth-child(4) input{animation-delay:.4s}.form-group:nth-child(5) select,.form-group:nth-child(5) input{animation-delay:.5s}.form-group select{background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:40px}.form-group select:focus,.form-group input:focus{outline:none;border-color:#667eea;background:var(--bg-primary);box-shadow:0 0 0 4px #667eea1a;transform:translateY(-1px)}.form-group select:hover,.form-group input:hover{border-color:#b8c5ff;background:var(--bg-primary)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.calculate-btn{width:100%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:15px;font-size:1.2rem;font-weight:600;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);margin:20px 0;-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:48px;position:relative;overflow:hidden;box-shadow:0 4px 15px #667eea33;display:flex;align-items:center;justify-content:center;gap:8px}.calculate-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.calculate-btn:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 15px 35px #667eea66;background:linear-gradient(135deg,#5a6fd8,#6a4190)}.calculate-btn:hover:not(:disabled):before{left:100%}.calculate-btn:active:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px #667eea4d}.calculate-btn:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:0 4px 15px #667eea1a}.calculate-btn.error{animation:wiggle .5s ease-in-out;background:linear-gradient(135deg,#e74c3c,#c0392b)}.calculate-btn.success{background:linear-gradient(135deg,#27ae60,#2ecc71);animation:pulse .6s ease-in-out}.materials-title{margin:30px 0 20px;color:#2d3748;border-bottom:2px solid #667eea;padding-bottom:10px;font-size:1.2rem;font-weight:600}.materials-table{border:1px solid rgba(102,126,234,.1);border-radius:10px;overflow:hidden;margin:20px 0;background:#ffffffe6;box-shadow:0 4px 15px #0000000d}.table-header{display:grid;grid-template-columns:2fr 1fr 1fr;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-weight:600;padding:15px}.material-row{display:grid;grid-template-columns:2fr 1fr 1fr;border-bottom:1px solid rgba(102,126,234,.08);padding:15px;align-items:center;background:#ffffffe6;transition:all .3s ease;animation:slideInFromRight .6s ease-out;animation-fill-mode:both}.material-row:nth-child(1){animation-delay:.1s}.material-row:nth-child(2){animation-delay:.2s}.material-row:nth-child(3){animation-delay:.3s}.material-row:nth-child(4){animation-delay:.4s}.material-row:nth-child(5){animation-delay:.5s}.material-row:nth-child(6){animation-delay:.6s}.material-row:nth-child(7){animation-delay:.7s}.material-row:nth-child(8){animation-delay:.8s}.material-row:nth-child(9){animation-delay:.9s}.material-row:nth-child(10){animation-delay:1s}.material-row:nth-child(2n){background:#f8f9fae6}.material-row:last-child{border-bottom:none}.material-row:hover{transform:translateY(-2px);box-shadow:0 4px 15px #0000000d}.material-name{font-weight:600;color:#2d3748;display:flex;align-items:center}.price-column,.amount-column{display:flex;align-items:center;justify-content:center}.price-column input,.amount-column input{width:100px;padding:8px 10px;border:1px solid rgba(102,126,234,.15);border-radius:5px;font-size:.9rem;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-tap-highlight-color:transparent;background:#fff;color:#2d3748;box-shadow:0 2px 4px #00000008}.no-amount{color:#4a5568;font-style:italic}.animate-spin{animation:spin 1s linear infinite}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.form-section{border:2px solid var(--border-color);border-radius:12px;padding:20px;margin-bottom:25px;background:#ffffff80}.section-legend{font-weight:600;color:var(--text-primary);padding:0 12px;font-size:1.1rem;background:var(--bg-primary);border-radius:6px}.help-text{font-size:.85rem;color:var(--text-secondary);margin-top:4px;font-style:italic}.form-group input:focus,.form-group select:focus,.calculate-btn:focus{outline:3px solid #667eea;outline-offset:2px}.validation-errors{background:linear-gradient(135deg,#fee,#fdd);border:2px solid #e74c3c;border-radius:12px;padding:16px;margin-bottom:20px;animation:slideInFromLeft .3s ease-out}.error-header{display:flex;align-items:center;gap:8px;font-weight:600;color:#c0392b;margin-bottom:12px;font-size:1rem}.error-list{list-style:none;padding:0;margin:0}.error-item{color:#e74c3c;font-size:.9rem;margin-bottom:6px;padding-left:20px;position:relative}.error-item:before{content:"•";position:absolute;left:0;color:#e74c3c;font-weight:700}.error-item:last-child{margin-bottom:0}.form-group input:invalid,.form-group select:invalid{border-color:#e74c3c;background:#e74c3c0d}.form-group input:invalid:focus,.form-group select:invalid:focus{box-shadow:0 0 0 4px #e74c3c1a}@media (max-width: 768px){.form-container{padding:20px}.form-group{margin-bottom:20px}.form-group label{font-size:.95rem;margin-bottom:6px}.form-group select,.form-group input{padding:10px 12px;font-size:.95rem}.form-group select{background-position:right 10px center;background-size:14px;padding-right:35px}.form-row{grid-template-columns:1fr;gap:15px}.calculate-btn{padding:12px;font-size:1.1rem;margin:15px 0}.materials-table{border:none;border-radius:0;margin:15px 0}.table-header{display:none}.material-row{display:block;border:1px solid rgba(102,126,234,.1);border-radius:8px;margin-bottom:12px;padding:15px;background:#ffffffe6}.material-row:nth-child(2n){background:#f8f9fae6}.material-name{font-size:1rem;font-weight:600;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(102,126,234,.1);color:#2d3748}.price-column,.amount-column{display:flex;justify-content:space-between;align-items:center;margin:8px 0;padding:5px 0}.price-column:before{content:"Цена:";font-weight:500;color:#4a5568;font-size:.9rem}.amount-column:before{content:"Количество:";font-weight:500;color:#4a5568;font-size:.9rem}.price-column input,.amount-column input{width:80px;padding:8px 10px;font-size:.9rem;text-align:center;border:2px solid rgba(102,126,234,.15);border-radius:8px;background:#fff;transition:all .3s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.price-column input:focus,.amount-column input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;transform:scale(1.05)}.price-column input:hover,.amount-column input:hover{border-color:#b8c5ff}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:400px;padding:40px 20px;background:linear-gradient(135deg,#fff5f5,#fed7d7);border:2px solid #feb2b2;border-radius:16px;margin:20px;animation:fadeIn .5s ease-out}.error-content{text-align:center;max-width:500px;background:#fff;padding:40px;border-radius:12px;box-shadow:0 10px 30px #0000001a}.error-icon{color:#e53e3e;margin-bottom:20px;animation:bounceIn .6s ease-out}.error-title{font-size:1.5rem;font-weight:600;color:#2d3748;margin-bottom:16px}.error-message{color:#4a5568;font-size:1rem;line-height:1.6;margin-bottom:24px}.error-details{text-align:left;margin:20px 0;padding:16px;background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px}.error-details summary{cursor:pointer;font-weight:600;color:#2d3748;margin-bottom:12px}.error-stack{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.8rem;color:#e53e3e;white-space:pre-wrap;word-break:break-word;background:#1a202c;color:#e2e8f0;padding:12px;border-radius:6px;overflow-x:auto}.error-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.retry-btn,.report-btn{display:flex;align-items:center;gap:8px;padding:12px 24px;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease;min-height:44px}.retry-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 15px #667eea33}.retry-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px #667eea4d}.report-btn{background:#f7fafc;color:#4a5568;border:2px solid #e2e8f0}.report-btn:hover{background:#edf2f7;border-color:#cbd5e0;transform:translateY(-1px)}@media (max-width: 768px){.error-boundary{margin:10px;padding:20px 10px;min-height:300px}.error-content{padding:24px}.error-title{font-size:1.3rem}.error-message{font-size:.9rem}.error-actions{flex-direction:column;align-items:center}.retry-btn,.report-btn{width:100%;max-width:200px}}.spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}.spinner-fullscreen{position:fixed;top:0;left:0;width:100%;height:100%;background:#ffffffe6;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999}.spinner{position:relative;display:inline-block}.spinner-small{width:24px;height:24px}.spinner-medium{width:40px;height:40px}.spinner-large{width:60px;height:60px}.spinner-ring{position:absolute;top:0;left:0;width:100%;height:100%;border:3px solid transparent;border-top:3px solid #667eea;border-radius:50%;animation:spin 1.2s cubic-bezier(.5,0,.5,1) infinite}.spinner-ring:nth-child(1){animation-delay:-.45s}.spinner-ring:nth-child(2){animation-delay:-.3s}.spinner-ring:nth-child(3){animation-delay:-.15s}.spinner-ring:nth-child(4){animation-delay:0s}.spinner-message{margin-top:16px;color:var(--text-secondary);font-size:1rem;font-weight:500;text-align:center;animation:pulse 2s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.spinner-message{font-size:.9rem;margin-top:12px}.spinner-fullscreen{background:#fffffff2}}:root{--primary-gradient: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 50%, #fce4ec 100%);--bg-primary: rgba(255, 255, 255, .98);--bg-secondary: rgba(248, 249, 250, .95);--text-primary: #2d3748;--text-secondary: #4a5568;--border-color: rgba(102, 126, 234, .15);--shadow: 0 25px 50px rgba(0,0,0,.08);--success-color: #27ae60;--warning-color: #f39c12;--error-color: #e74c3c}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--primary-gradient);min-height:100vh;padding:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;overflow-x:hidden;color:var(--text-primary);transition:all .3s ease}body:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background:radial-gradient(circle at 20% 80%,rgba(227,242,253,.4) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(243,229,245,.4) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(252,228,236,.3) 0%,transparent 50%);pointer-events:none;z-index:-1}.container{max-width:600px;margin:0 auto;background:var(--bg-primary);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;box-shadow:var(--shadow);overflow:hidden;animation:slideUp .6s ease-out;border:1px solid var(--border-color);transition:all .3s ease}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes slideInFromLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInFromRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes bounceIn{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1);opacity:1}}@keyframes wiggle{0%,7%{transform:rotate(0)}15%{transform:rotate(-15deg)}20%{transform:rotate(10deg)}25%{transform:rotate(-10deg)}30%{transform:rotate(6deg)}35%{transform:rotate(-4deg)}40%,to{transform:rotate(0)}}.error-message{background:linear-gradient(135deg,#fee,#fdd);border:2px solid #e74c3c;border-radius:12px;padding:16px;margin:20px;color:#c0392b;display:flex;justify-content:space-between;align-items:center;animation:slideInFromLeft .3s ease-out}.error-message p{margin:0;font-weight:500}.error-message button{background:#e74c3c;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background .3s ease}.error-message button:hover{background:#c0392b}@media (max-width: 768px){body{padding:8px;font-size:16px;line-height:1.5}.container{margin:0;border-radius:8px;box-shadow:0 8px 25px #00000026;min-height:100vh;max-width:none}input,select,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}input,select{min-height:48px;font-size:16px;padding:12px 16px}button{min-height:52px;font-size:1.1rem}.container{-webkit-overflow-scrolling:touch;overflow-x:hidden}@media (max-width: 480px){body{padding:4px}.container{border-radius:4px}input,select{min-height:52px;font-size:17px}button{min-height:56px;font-size:1.2rem}}@media (max-width: 768px) and (orientation: portrait){.container{min-height:calc(100vh - 16px)}}@media (max-width: 768px) and (orientation: landscape){body{padding:4px}.container{min-height:calc(100vh - 8px)}}}
