*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f7fa;min-height:100vh;padding:40px 20px}#root{max-width:1200px;margin:0 auto}.container{background:#fff;border-radius:8px;padding:40px;box-shadow:0 1px 3px #0000001a}h1{color:#1a202c;margin-bottom:8px;font-size:2rem;font-weight:700;letter-spacing:-.025em}.subtitle{color:#718096;margin-bottom:40px;font-size:1rem;font-weight:400}.loading{text-align:center;padding:40px;color:#666;font-size:1.2rem}.error{background:#fee;border:2px solid #fcc;border-radius:8px;padding:16px;color:#c33;margin-bottom:20px}.demo-section{margin-bottom:24px;padding:28px;background:#fff;border-radius:8px;border:1px solid #e2e8f0;transition:border-color .2s,box-shadow .2s}.demo-section:hover{border-color:#cbd5e0;box-shadow:0 4px 6px #0000000d}.demo-section h2{color:#2d3748;margin-bottom:20px;font-size:1.25rem;font-weight:600;letter-spacing:-.025em}.input-group{margin-bottom:16px}.input-group label{display:block;margin-bottom:8px;color:#4a5568;font-weight:500;font-size:.875rem}.input-group input,.input-group textarea{width:100%;padding:10px 12px;border:1px solid #cbd5e0;border-radius:6px;font-size:14px;font-family:Courier New,monospace;transition:border-color .2s,box-shadow .2s;background:#fff}.input-group input:focus,.input-group textarea:focus{outline:none;border-color:#4299e1;box-shadow:0 0 0 3px #4299e11a}.input-group textarea{min-height:80px;resize:vertical}button{background:#3182ce;color:#fff;border:none;padding:10px 20px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s;margin-right:8px;margin-bottom:8px}button:hover{background:#2c5282}button:active{background:#2a4365}button:disabled{opacity:.5;cursor:not-allowed;background:#a0aec0}.result{margin-top:20px;padding:16px;background:#f7fafc;border-radius:6px;border:1px solid #e2e8f0}.result h3{color:#2d3748;margin-bottom:12px;font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.result pre{background:#fff;padding:12px;border-radius:4px;overflow-x:auto;font-size:13px;line-height:1.6;border:1px solid #e2e8f0}.result .hash-value{font-family:Courier New,monospace;word-break:break-all;color:#2d3748}.matrix-info{display:flex;gap:16px;margin-bottom:12px}.matrix-info div{flex:1}.performance{margin-top:12px;padding:8px 12px;background:#edf2f7;border-radius:4px;color:#4a5568;font-size:13px;font-weight:500}.key-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px}.key-box{background:#f7fafc;padding:12px;border-radius:6px;border:1px solid #e2e8f0}.key-box h4{color:#4a5568;margin-bottom:8px;font-size:.875rem;font-weight:600}.key-box pre{font-size:11px;overflow-x:auto;background:#fff;padding:8px;border-radius:4px;border:1px solid #e2e8f0}.status-badge{display:inline-block;padding:6px 12px;border-radius:4px;font-size:13px;font-weight:500;margin-top:8px}.status-badge.success{background:#c6f6d5;color:#22543d}.status-badge.error{background:#fed7d7;color:#742a2a}.pi-result{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:20px;border-radius:8px;margin-top:16px}.pi-result .pi-value{font-size:2.5rem;font-weight:700;text-align:center;margin:16px 0;font-family:Courier New,monospace;letter-spacing:2px;text-shadow:0 2px 4px rgba(0,0,0,.2)}.pi-result .pi-info{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.pi-result .pi-info-item{background:#ffffff26;padding:12px;border-radius:6px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.pi-result .pi-info-item strong{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;opacity:.9;margin-bottom:4px}.pi-result .pi-info-item .value{font-size:1.1rem;font-weight:600;font-family:Courier New,monospace}.pi-result .convergence-badge{background:#fff3;padding:8px 16px;border-radius:20px;display:inline-block;margin-top:12px;font-size:.875rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
