.qr-tool{background:var(--color-white);border:2px solid var(--color-black);border-radius:var(--border-radius);padding:2rem;max-width:960px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr)auto;gap:2rem;align-items:start}.qr-form{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.qr-field{display:flex;flex-direction:column;gap:.4rem}.qr-field>span{font-size:16px;font-weight:700;color:var(--color-black)}.qr-field textarea,.qr-field select,.qr-field input[type=text],.qr-field input[type=number]{font-family:var(--font-regular);font-size:18px;padding:.7em 1em;border:2px solid var(--color-black);border-radius:10px;color:var(--color-black);background:var(--color-off-white);width:100%;outline:none;transition:border-color .2s,box-shadow .2s}.qr-field textarea:focus,.qr-field select:focus,.qr-field input[type=text]:focus,.qr-field input[type=number]:focus{border-color:var(--color-black);box-shadow:0 0 0 3px rgba(17,16,22,.15)}.qr-field textarea{min-height:110px;resize:vertical;line-height:1.5}.qr-row{display:flex;flex-wrap:wrap;gap:1rem}.qr-row .qr-field{flex:1 1 150px}.qr-preview{display:flex;flex-direction:column;align-items:center;gap:1rem}.qr-canvas-wrap{background:var(--color-white);border:2px solid rgba(17,16,22,.15);border-radius:var(--border-radius);padding:12px;line-height:0}#qrCanvas{display:block;max-width:100%}.qr-downloads{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center}.qr-note{font-size:13px;color:rgba(17,16,22,.6);text-align:center;margin:0;max-width:280px}.qr-note-hint{font-size:12px;line-height:1.5;color:rgba(17,16,22,.55);text-align:center;margin:0;max-width:280px}.qr-error{font-size:14px;font-weight:600;color:var(--color-red-text);margin:0;display:none}.qr-error.show{display:block}.qr-hint{display:block;font-size:12px;line-height:1.4;color:rgba(17,16,22,.6);margin-top:.35rem}.qr-wifi{border:2px solid rgba(17,16,22,.12);border-radius:14px;padding:1.1rem;display:flex;flex-direction:column;gap:.9rem;background:var(--color-white)}.qr-wifi-intro{font-size:14px;line-height:1.5;margin:0}.qr-wifi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:.9rem}.qr-wifi-hint{font-size:13px;line-height:1.5;margin:0;padding-left:.8rem;border-left:3px solid var(--color-red);color:rgba(17,16,22,.75)}.qr-field.is-disabled{opacity:.45}.qr-field.is-disabled input{cursor:not-allowed}.qr-presets{display:flex;flex-wrap:wrap;gap:.5rem}.qr-preset{display:inline-flex;align-items:center;min-height:var(--tap-min);font-family:var(--font-regular);font-size:13px;font-weight:600;padding:5px 12px;border:2px solid rgba(17,16,22,.25);border-radius:100px;background:0 0;cursor:pointer;transition:border-color .2s,color .2s}.qr-preset:hover{border-color:var(--color-red);color:var(--color-red-text)}.qr-logo-box{border:2px solid rgba(17,16,22,.15);border-radius:var(--border-radius);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.75rem}.qr-logo-title{font-size:14px;font-weight:600}.qr-optional{font-weight:400;color:rgba(17,16,22,.55)}.qr-logo-actions{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.qr-logo-pick,.qr-logo-remove{display:inline-flex;align-items:center;min-height:var(--tap-min);font-family:var(--font-regular);font-size:14px;font-weight:600;padding:7px 16px;border:2px solid var(--color-black);border-radius:100px;background:0 0;color:var(--color-black);cursor:pointer;transition:background .2s,color .2s}.qr-logo-pick:hover{background:var(--color-black);color:var(--color-off-white)}.qr-logo-remove{border-color:rgba(17,16,22,.3);font-weight:500}.qr-logo-remove:hover{border-color:var(--color-red);color:var(--color-red-text)}.qr-logo-name{font-size:13px;color:rgba(17,16,22,.6);word-break:break-all}#qrLogoFile{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.qr-logo-opts{display:flex;flex-direction:column;gap:.75rem}.qr-logo-opts input[type=range]{width:100%;accent-color:var(--color-red)}.qr-check{padding-block:11px;display:flex;align-items:flex-start;gap:.5rem;font-size:14px;line-height:1.45;cursor:pointer}.qr-check input{width:18px;height:18px;margin-top:2px;flex-shrink:0;accent-color:var(--color-red)}.qr-scan{font-size:13px;font-weight:600;margin:0;display:none}.qr-scan.show{display:block}.qr-scan.ok{color:#1a7a2e}.qr-scan.bad{color:var(--color-red-text)}.qr-scan.busy{color:rgba(17,16,22,.6);font-weight:500}@media(max-width:780px){.qr-tool{grid-template-columns:minmax(0,1fr);padding:1.25rem}.qr-preview{order:-1}}