.qr-page{min-height:100vh;color:var(--text-primary);box-sizing:border-box;background:linear-gradient(135deg,#1a1a1a 0%,#2d2d2d 100%);padding:1rem;overflow-x:hidden}.qr-page *,.qr-page :before,.qr-page :after{box-sizing:border-box}.qr-page .container{width:100%;max-width:1200px;margin:0 auto}.qr-hero{text-align:center;padding:80px 0 60px;position:relative}.qr-hero:before{content:"";z-index:1;background:radial-gradient(circle at 25% 30%,#ff6b6b1a 0%,#0000 50%),radial-gradient(circle at 75% 70%,#ff6b6b1a 0%,#0000 50%);position:absolute;inset:0}.qr-hero h1{color:var(--text-primary);z-index:2;margin-bottom:24px;font-size:clamp(2.5rem,5vw,3.5rem);font-weight:700;position:relative}.qr-tagline{color:var(--text-secondary);z-index:2;max-width:600px;margin:0 auto;font-size:clamp(1.1rem,2.5vw,1.4rem);font-style:italic;position:relative}.qr-layout{grid-template-columns:1fr 1fr;align-items:start;gap:2rem;margin-bottom:2rem;display:grid}.qr-form-panel,.qr-preview-panel{border:1px solid var(--border-color);background-color:#2d2d2d;border-radius:12px;padding:2rem}.qr-field{margin-bottom:1.5rem}.qr-label{color:var(--text-secondary);margin-bottom:.6rem;font-size:.88rem;font-weight:600;display:block}.qr-input{width:100%;color:var(--text-primary);border:1px solid var(--border-color);background-color:#1a1a1a;border-radius:6px;outline:none;padding:12px 16px;font-family:inherit;font-size:.95rem;transition:border-color .3s,box-shadow .3s}.qr-input:focus{border-color:var(--primary-color);box-shadow:0 0 0 2px #ff6b6b1f}.qr-input::placeholder{color:#555}.qr-dropzone{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;background:#1a1a1a;border:2px dashed #505050;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:2.5rem 1.5rem;transition:border-color .3s,background .3s;display:flex}.qr-dropzone:hover,.qr-dropzone--active{border-color:var(--primary-color);background:#ff6b6b0a}.qr-dropzone-icon{margin-bottom:4px;font-size:2.4rem;line-height:1;display:block}.qr-dropzone-title{color:var(--text-primary);font-size:.95rem;font-weight:600}.qr-dropzone-hint{color:#666;font-size:.8rem}.qr-logo-preview{border:1px solid var(--border-color);background:#1a1a1a;border-radius:8px;align-items:center;gap:1rem;padding:.9rem 1rem;display:flex}.qr-logo-img{object-fit:contain;background:#fff;border-radius:6px;flex-shrink:0;width:52px;height:52px;padding:4px}.qr-logo-name{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.88rem;overflow:hidden}.qr-logo-remove{color:#fff;cursor:pointer;background:linear-gradient(135deg,#e74c3c,#c0392b);border:none;border-radius:8px;flex-shrink:0;padding:10px 18px;font-family:inherit;font-size:.85rem;font-weight:600;transition:all .3s;box-shadow:0 4px 15px #e74c3c4d}.qr-logo-remove:hover{background:linear-gradient(135deg,#c0392b,#a93226);transform:translateY(-2px);box-shadow:0 6px 20px #e74c3c66}.qr-logo-remove:active{transform:translateY(0);box-shadow:0 2px 10px #e74c3c4d}.qr-error{color:#fff;background:linear-gradient(135deg,#e74c3c,#c0392b);border-radius:8px;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.9rem;font-weight:500;box-shadow:0 4px 15px #e74c3c4d}.qr-generate-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff6b6b,#ff5252);border:none;border-radius:8px;width:100%;padding:14px 24px;font-family:inherit;font-size:1rem;font-weight:600;transition:all .3s;position:relative;overflow:hidden;box-shadow:0 4px 15px #ff6b6b4d}.qr-generate-btn:hover:not(:disabled){background:linear-gradient(135deg,#ff5252,#e84040);transform:translateY(-2px);box-shadow:0 6px 20px #ff6b6b66}.qr-generate-btn:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 10px #ff6b6b4d}.qr-generate-btn:disabled{opacity:.6;cursor:not-allowed}.qr-preview-panel{flex-direction:column;align-items:center;gap:1.5rem;min-height:460px;display:flex}.qr-image{border-radius:12px;width:100%;max-width:360px;height:auto;display:block;box-shadow:0 8px 32px #00000080}.qr-encoded-url{color:#666;word-break:break-all;text-align:center;max-width:360px;font-size:.8rem;line-height:1.5}.qr-encoded-url span{color:var(--primary-color);font-weight:500}.qr-placeholder{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;margin:auto;display:flex}.qr-placeholder-grid{opacity:.2;grid-template-columns:repeat(5,1fr);gap:5px;width:88px;display:grid}.qr-placeholder-cell{aspect-ratio:1;background:var(--text-primary);border-radius:2px;animation:2.4s ease-in-out infinite qr-cell-pulse}.qr-placeholder-cell:nth-child(3n+1){animation-delay:0s}.qr-placeholder-cell:nth-child(3n+2){animation-delay:.3s}.qr-placeholder-cell:nth-child(3n+3){animation-delay:.6s}.qr-placeholder-cell:nth-child(5n+1){background:var(--primary-color)}@keyframes qr-cell-pulse{0%,to{opacity:1}50%{opacity:.25}}.qr-placeholder p{color:#666;max-width:200px;font-size:.95rem}.qr-download-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#27ae60,#229954);border:none;border-radius:8px;width:100%;max-width:360px;padding:14px 24px;font-family:inherit;font-size:1rem;font-weight:600;transition:all .3s;box-shadow:0 4px 15px #27ae604d}.qr-download-btn:hover{background:linear-gradient(135deg,#229954,#1e8449);transform:translateY(-2px);box-shadow:0 6px 20px #27ae6066}.qr-download-btn:active{transform:translateY(0);box-shadow:0 2px 10px #27ae604d}@media (max-width:768px){.qr-layout{grid-template-columns:1fr}.qr-hero{padding:40px 0 30px}.qr-preview-panel{min-height:300px}.qr-generate-btn:hover:not(:disabled),.qr-logo-remove:hover,.qr-download-btn:hover{transform:none}}@media (max-width:480px){.qr-page{padding:.5rem .25rem}.qr-hero{padding:30px 0 20px}.qr-form-panel,.qr-preview-panel{padding:1.5rem 1rem}}
