@import "https://fonts.googleapis.com/css2?family=Nunito:wght@400;700;800;900&family=Space+Mono:wght@400;700&display=swap";
:root{--yellow:gold;--red:#e3000b;--blue:#006db7;--green:#00a650;--dark:#1a1a2e;--mid:#2d2d44;--light:#f5f0e8;--stud:#ffffff1f}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--dark);color:var(--light);min-height:100vh;font-family:Nunito,sans-serif;overflow-x:hidden}body:before{content:"";background-image:radial-gradient(circle,var(--stud)6px,transparent 6px);pointer-events:none;z-index:0;background-size:32px 32px;position:fixed;inset:0}header{z-index:10;border-bottom:4px solid var(--yellow);align-items:center;gap:16px;padding:28px 40px;display:flex;position:relative}header h1{letter-spacing:-1px;color:var(--yellow);text-shadow:3px 3px 0 var(--red);font-size:2rem;font-weight:900}header h1 span{color:#fff}.tagline{color:#ffffff80;margin-left:auto;font-family:Space Mono,monospace;font-size:.8rem}.logo-brick{background:var(--red);border-radius:4px;flex-shrink:0;width:48px;height:32px;position:relative;box-shadow:0 4px #9a000a}.logo-brick:before,.logo-brick:after{content:"";background:var(--red);border-radius:50% 50% 0 0;width:14px;height:10px;position:absolute;top:-10px;box-shadow:0 -2px #9a000a}.logo-brick:before{left:6px}.logo-brick:after{right:6px}main{z-index:10;max-width:960px;margin:0 auto;padding:40px 24px 80px;position:relative}.progress-bar{align-items:center;margin-bottom:48px;display:flex}.progress-step{flex-direction:column;flex:1;align-items:center;gap:8px;display:flex;position:relative}.progress-step:not(:last-child):after{content:"";background:var(--mid);z-index:-1;width:80%;height:3px;position:absolute;top:20px;left:60%}.progress-step.done:not(:last-child):after,.progress-step.active:not(:last-child):after{background:var(--yellow)}.step-num{background:var(--mid);border:3px solid #ffffff1a;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:1rem;font-weight:900;transition:all .3s;display:flex}.progress-step.active .step-num{background:var(--yellow);color:var(--dark);border-color:var(--yellow);box-shadow:0 0 20px #ffd70080}.progress-step.done .step-num{background:var(--green);border-color:var(--green);color:#fff}.step-label{text-transform:uppercase;letter-spacing:.5px;color:#fff6;text-align:center;font-size:.7rem;font-weight:700}.progress-step.active .step-label{color:var(--yellow)}.progress-step.done .step-label{color:var(--green)}.panel{background:var(--mid);border:3px solid #ffffff14;border-radius:16px;padding:36px;animation:.4s slideIn}@keyframes slideIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.panel-title{color:var(--yellow);margin-bottom:8px;font-size:1.6rem;font-weight:900}.panel-sub{color:#ffffff8c;margin-bottom:28px;font-size:.95rem;line-height:1.5}.field-label{text-transform:uppercase;letter-spacing:1px;color:#fff6;margin-bottom:8px;font-size:.75rem;font-weight:700;display:block}.input-field{color:#f5f0e8;background:#0000004d;border:3px solid #ffffff1f;border-radius:10px;outline:none;width:100%;padding:14px 16px;font-family:Nunito,sans-serif;font-size:.95rem;font-weight:700;transition:border-color .2s}.input-field:focus{border-color:var(--yellow)}.status-pill{border-radius:8px;padding:10px 14px;font-size:.85rem;font-weight:700}.status-pill.ok{border:2px solid var(--green);color:var(--green);background:#00a65026}.status-pill.warn{border:2px solid var(--yellow);color:var(--yellow);background:#ffd7001a}.status-pill.err{color:#f45;background:#e3000b26;border:2px solid #e3000b}.or-divider{text-align:center;color:#ffffff4d;text-transform:uppercase;letter-spacing:1px;margin:20px 0 12px;font-size:.8rem}.drop-zone{text-align:center;cursor:pointer;background:#0003;border:3px dashed #fff3;border-radius:12px;padding:32px;transition:border-color .2s;display:block}.drop-zone:hover{border-color:#fff6}.tip-box{color:#ffffffb3;background:#006db726;border:2px solid #006db766;border-radius:10px;margin-top:20px;padding:14px 18px;font-size:.85rem;line-height:1.5}.tip-box strong{color:#5ab4ff;font-weight:900}.btn-row{align-items:center;gap:12px;margin-top:28px;display:flex}.btn{cursor:pointer;text-transform:uppercase;letter-spacing:.5px;border:none;border-radius:10px;justify-content:center;align-items:center;padding:14px 28px;font-family:Nunito,sans-serif;font-size:1rem;font-weight:900;transition:all .15s;display:inline-flex}.btn-primary{background:var(--yellow);color:var(--dark);box-shadow:0 4px #c9a800}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px #c9a800}.btn-primary:active:not(:disabled){transform:translateY(2px);box-shadow:0 2px #c9a800}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{color:#fff9;background:0 0;border:2px solid #fff3}.btn-secondary:hover{color:#fff;border-color:#fff6}.angle-grid{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px;display:grid}.angle-card{cursor:pointer;background:#0000004d;border:3px solid #ffffff14;border-radius:12px;transition:border-color .2s;position:relative;overflow:hidden}.angle-card input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.angle-card.required{border-color:#ffd7004d}.angle-card.uploaded{border-color:var(--green)}.angle-diagram{background:#0003;justify-content:center;align-items:center;height:120px;font-size:3rem;display:flex;position:relative;overflow:hidden}.angle-preview-img{object-fit:cover;opacity:.7;width:100%;height:100%;position:absolute;inset:0}.angle-badge{background:var(--green);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:.8rem;font-weight:900;display:none;position:absolute;top:8px;right:8px}.angle-card.uploaded .angle-badge{display:flex}.angle-info{padding:12px}.angle-name{margin-bottom:2px;font-size:.95rem;font-weight:900}.angle-hint{color:#fff6;font-size:.75rem}.angle-req{text-transform:uppercase;letter-spacing:.5px;color:var(--yellow);margin-top:4px;font-size:.65rem;font-weight:700}.angle-opt{text-transform:uppercase;letter-spacing:.5px;color:#ffffff4d;margin-top:4px;font-size:.65rem;font-weight:700}.loader-section{text-align:center;padding:20px 0}.brick-loader{justify-content:center;gap:10px;margin:24px 0;display:flex}.brick-loader div{border-radius:3px;width:20px;height:20px;animation:.8s infinite brickBounce}.brick-loader div:first-child{background:var(--red);animation-delay:0s}.brick-loader div:nth-child(2){background:var(--yellow);animation-delay:.15s}.brick-loader div:nth-child(3){background:var(--blue);animation-delay:.3s}.brick-loader div:nth-child(4){background:var(--green);animation-delay:.45s}@keyframes brickBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.loader-status{color:#ffffff80;margin-top:8px;font-family:Space Mono,monospace;font-size:.9rem}.loader-substatus{color:#ffffff40;min-height:18px;margin-top:6px;font-family:Space Mono,monospace;font-size:.75rem}.error-box{background:#e3000b26;border:2px solid #e3000b;border-radius:12px;padding:24px}.error-title{color:#f45;margin-bottom:10px;font-size:1.05rem;font-weight:900}.error-msg{color:#ffffffbf;margin-bottom:16px;font-size:.875rem;line-height:1.6}.result-header{background:#0000004d;border-radius:12px;align-items:center;gap:16px;margin-bottom:24px;padding:20px 24px;display:flex}.severity-badge{text-transform:uppercase;letter-spacing:1px;white-space:nowrap;border-radius:20px;padding:6px 16px;font-size:.8rem;font-weight:900}.severity-low{color:var(--green);border:2px solid var(--green);background:#00a65033}.severity-med{color:var(--yellow);border:2px solid var(--yellow);background:#ffd70033}.severity-high{color:#f45;background:#e3000b33;border:2px solid #f45}.section-label{text-transform:uppercase;letter-spacing:1px;color:#fff6;margin-bottom:12px;font-size:.75rem;font-weight:700;display:block}.piece-list{flex-direction:column;gap:10px;margin-bottom:28px;display:flex}.piece-item{border-left:4px solid var(--red);background:#0000004d;border-radius:10px;align-items:center;gap:14px;padding:14px 16px;display:flex}.piece-color-dot{border-radius:50%;flex-shrink:0;width:24px;height:24px;box-shadow:inset 0 -3px #0000004d}.piece-name{flex:1;font-size:.95rem;font-weight:800}.piece-qty{background:var(--red);color:#fff;border-radius:6px;padding:2px 10px;font-family:Space Mono,monospace;font-size:.85rem;font-weight:900}.piece-link{color:#5ab4ff;white-space:nowrap;background:#006db74d;border:1px solid #006db799;border-radius:6px;padding:6px 12px;font-size:.8rem;font-weight:700;text-decoration:none;transition:background .2s}.piece-link:hover{background:#006db780}.repair-steps{flex-direction:column;gap:16px;display:flex}.repair-step{background:#0000004d;border:2px solid #ffffff0d;border-radius:12px;align-items:flex-start;gap:16px;padding:20px;transition:border-color .2s;display:flex}.repair-step:hover{border-color:#ffd7004d}.repair-step.completed{opacity:.5}.step-number-badge{background:var(--blue);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;font-weight:900;display:flex;box-shadow:0 3px #003d6b}.step-content{flex:1}.step-title{margin-bottom:4px;font-size:1rem;font-weight:900}.step-desc{color:#fff9;font-size:.875rem;line-height:1.5}.step-ref{color:var(--yellow);opacity:.8;margin-top:6px;font-family:Space Mono,monospace;font-size:.75rem}.step-check{cursor:pointer;color:#0000;background:0 0;border:2px solid #fff3;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;margin-top:4px;font-size:.85rem;transition:all .2s;display:flex}.step-check:hover{border-color:var(--green)}.step-check.checked{background:var(--green);border-color:var(--green);color:#fff}.success-banner{border:2px solid var(--green);text-align:center;background:#00a65026;border-radius:12px;margin-top:20px;padding:20px 24px;display:none}.success-banner.show{display:block}.success-banner h3{color:var(--green);margin-bottom:4px;font-size:1.3rem;font-weight:900}.success-banner p{color:#fff9;font-size:.9rem}@media (max-width:600px){header{padding:20px}header h1{font-size:1.4rem}.tagline{display:none}.panel{padding:24px 20px}.angle-grid{grid-template-columns:1fr 1fr}}
