*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}button,a,label{outline:none}button:focus-visible,a:focus-visible{outline:2px solid #4facfe;outline-offset:2px}body{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;background:linear-gradient(160deg,#e8f4ff,#f0f0ff);min-height:100vh;color:#1a1a1a}.app{max-width:1200px;margin:0 auto;padding:2rem}header{border-bottom:1px solid #e0e0e0;padding-bottom:1rem;margin-bottom:2rem}h1{font-size:1.8rem;font-weight:700}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:transparent}.login-card{background:#fff;border-radius:20px;padding:2.5rem 2rem;width:100%;max-width:400px;box-shadow:0 8px 40px #4facfe26;display:flex;flex-direction:column;gap:1rem}.login-card .login-title{text-align:center;font-size:2rem;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#4facfe,#667eea);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.login-card .login-subtitle{text-align:center;color:#888;margin-top:-8px;font-size:.95rem}.google-btn{display:flex;align-items:center;justify-content:center;padding:.65rem;border:1px solid #ddd;border-radius:8px;background:#fff;cursor:pointer;font-weight:500;font-size:.95rem}.google-btn:hover{background:#f5f5f5}.google-btn svg{margin-right:8px}.divider{text-align:center;color:#aaa;font-size:.85rem}.auth-tabs{display:flex;gap:4px;background:#f0f0f0;border-radius:8px;padding:4px}.auth-tabs .tab{flex:1;padding:.45rem;border:none;border-radius:6px;background:transparent;cursor:pointer;font-weight:500}.auth-tabs .tab.active{background:#fff;box-shadow:0 1px 4px #0000001a}.auth-form{display:flex;flex-direction:column;gap:.75rem}.auth-form .auth-input{padding:.65rem .75rem;border:1px solid #ddd;border-radius:8px;font-size:.95rem;outline:none}.auth-form .auth-input:focus{border-color:#4facfe;box-shadow:0 0 0 3px #4facfe26}.auth-form .submit-btn{padding:.65rem;background:linear-gradient(135deg,#4facfe,#667eea);color:#fff;border:none;border-radius:50px;font-weight:600;cursor:pointer;font-size:.95rem;box-shadow:0 4px 14px #4facfe66}.auth-form .submit-btn:hover{opacity:.9}.auth-form .submit-btn:disabled{opacity:.6;cursor:not-allowed}.auth-form .form-error{color:#e53e3e;font-size:.85rem}.auth-form .form-message{color:#38a169;font-size:.85rem}.guest-btn{background:none;border:none;color:#888;cursor:pointer;font-size:.85rem;text-decoration:underline;text-align:center}.guest-btn:hover{color:#555}.dashboard{min-height:100vh;background:transparent}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#ffffffb3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(79,172,254,.15)}.dashboard-header h1{font-size:1.5rem;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#4facfe,#667eea);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.dashboard-header .logout-btn{cursor:pointer;padding:.4rem 1rem;border:1px solid rgba(79,172,254,.3);border-radius:50px;background:transparent;font-weight:500;font-size:.9rem;color:#667eea}.dashboard-header .logout-btn:hover{background:#4facfe14}.dashboard-main{max-width:900px;margin:0 auto;padding:2rem 2rem 6rem}.dashboard-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.dashboard-top h2{font-size:1.2rem;font-weight:600}.dashboard-top .create-btn-group{display:flex;align-items:center;gap:.75rem}.dashboard-top .qr-count{font-size:.8rem;color:#aaa}.dashboard-top .create-btn-tooltip{position:relative}.dashboard-top .create-btn-tooltip:after{content:"Max QR code limit reached";position:absolute;bottom:calc(100% + 8px);right:0;background:#1a1a1a;color:#fff;padding:.45rem .75rem;border-radius:7px;font-size:.78rem;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s}.dashboard-top .create-btn-tooltip:before{content:"";position:absolute;bottom:calc(100% + 2px);right:18px;border:5px solid transparent;border-top-color:#1a1a1a;pointer-events:none;opacity:0;transition:opacity .15s}.dashboard-top .create-btn-tooltip:hover:after,.dashboard-top .create-btn-tooltip:hover:before{opacity:1}.dashboard-top .create-btn{padding:.5rem 1.2rem;background:linear-gradient(135deg,#4facfe,#667eea);color:#fff;border:none;border-radius:10px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px #4facfe66}.dashboard-top .create-btn:hover:not(:disabled){opacity:.9}.dashboard-top .create-btn:disabled{opacity:.4;cursor:not-allowed}.create-form{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;background:#fff;border:1px solid rgba(79,172,254,.2);border-radius:20px;padding:1.5rem;box-shadow:0 8px 32px #4facfe1a}.create-form .form-input{width:100%;box-sizing:border-box;padding:.65rem .9rem;border:1px solid #e0e0e0;border-radius:10px;font-size:.95rem;outline:none;transition:border-color .2s,box-shadow .2s}.create-form .form-input:focus{border-color:#4facfe;box-shadow:0 0 0 3px #4facfe1f}.destination-section{display:flex;flex-direction:column;gap:.6rem}.destination-label{font-size:.85rem;font-weight:600;color:#444;margin:0}.service-list{display:flex;gap:.6rem;flex-wrap:wrap}.service-card{display:flex;align-items:center;gap:.5rem;padding:.55rem 1rem;border:1.5px solid #e0e0e0;border-radius:50px;background:#fff;cursor:pointer;font-size:.9rem;font-weight:500;transition:border-color .15s,background .15s,box-shadow .15s}.service-card:hover{border-color:#4facfe;box-shadow:0 2px 8px #4facfe26}.service-card.selected{border-color:#4facfe;background:#4facfe12;color:#667eea}.service-card.add-service{border-style:dashed;color:#888}.service-card.add-service:hover{border-color:#4facfe;color:#4facfe}.service-card.add-service:disabled{opacity:.5;cursor:not-allowed}.folder-section{display:flex;flex-direction:column;gap:.35rem}.folder-hint{font-size:.78rem;color:#888;margin:0}.limit-section{background:#4facfe0a;border:1px solid rgba(79,172,254,.12);border-radius:12px;padding:.75rem 1rem}.limit-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.limit-section-label{font-size:.88rem;font-weight:600;color:#333;margin:0 0 .2rem}.limit-hint{font-size:.78rem;color:#888;margin:0}.limit-input-row{display:flex;align-items:center;gap:.4rem;flex-shrink:0}.limit-number-input{width:72px;padding:.45rem .6rem;border:1px solid #ddd;border-radius:8px;font-size:.95rem;text-align:center;outline:none}.limit-number-input:focus{border-color:#1a1a1a}.limit-number-input::-webkit-outer-spin-button,.limit-number-input::-webkit-inner-spin-button{-webkit-appearance:none}.limit-number-input{-moz-appearance:textfield}.limit-unit{font-size:.85rem;color:#666}.form-actions{display:flex;justify-content:flex-end;gap:.5rem}.form-actions .cancel-btn{padding:.6rem 1.2rem;background:transparent;color:#888;border:1px solid #e0e0e0;border-radius:50px;font-weight:500;cursor:pointer}.form-actions .cancel-btn:hover{border-color:#aaa;color:#555}.form-actions .submit-btn{padding:.6rem 1.4rem;background:linear-gradient(135deg,#4facfe,#667eea);color:#fff;border:none;border-radius:50px;font-weight:600;cursor:pointer;box-shadow:0 4px 14px #4facfe59}.form-actions .submit-btn:hover{opacity:.9}.form-actions .submit-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.toggle{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0}.toggle input{display:none}.toggle .slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background:#ddd;border-radius:22px;transition:.2s}.toggle .slider:before{content:"";position:absolute;width:16px;height:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s}.toggle input:checked+.slider{background:linear-gradient(135deg,#4facfe,#667eea)}.toggle input:checked+.slider:before{transform:translate(18px)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.modal{background:#fff;border-radius:20px;padding:2rem;max-width:380px;width:100%;box-shadow:0 16px 48px #00000026}.modal h3{font-size:1.1rem;font-weight:700;margin-bottom:.5rem}.modal p{font-size:.9rem;color:#666;line-height:1.6;margin-bottom:1.5rem}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.modal-actions .modal-cancel{padding:.6rem 1.2rem;background:transparent;border:1px solid #e0e0e0;border-radius:50px;font-weight:500;cursor:pointer;color:#888}.modal-actions .modal-cancel:hover{border-color:#aaa;color:#555}.modal-actions .modal-delete{padding:.6rem 1.2rem;background:#e53e3e;color:#fff;border:none;border-radius:50px;font-weight:600;cursor:pointer}.modal-actions .modal-delete:hover{background:#c53030}.empty-state{text-align:center;color:#888;margin-top:4rem}@media (max-width: 540px){.dashboard-header{padding:.75rem 1rem}.dashboard-main{padding:1rem}.qr-card{flex-direction:column;align-items:stretch;gap:.75rem}.qr-card .qr-code-block{align-self:center}.qr-card .qr-inline-actions{justify-content:space-between}.limit-row{flex-wrap:wrap;gap:.75rem}}.qr-grid{display:flex;flex-direction:column;gap:1rem}.qr-card{display:flex;align-items:center;gap:1.5rem;background:#fff;border-radius:20px;padding:1.25rem;box-shadow:0 4px 20px #4facfe1a;border:1px solid rgba(79,172,254,.08)}.qr-card .qr-code-block{display:flex;flex-direction:column;align-items:center;gap:.5rem;flex-shrink:0}.qr-card .qr-code{line-height:0;padding:12px;border:2px solid rgba(79,172,254,.35);border-radius:16px;box-shadow:0 4px 16px #4facfe1f}.qr-card .download-qr-btn{width:140px;padding:.35rem 0;border:1px solid rgba(79,172,254,.3);border-radius:50px;background:#fff;color:#667eea;font-size:.78rem;font-weight:500;cursor:pointer;text-align:center;transition:background .15s}.qr-card .download-qr-btn:hover{background:#4facfe0f}.qr-card .qr-info{flex:1;position:relative}.qr-card .qr-info h3{font-size:1rem;font-weight:600;margin-bottom:.25rem}.qr-card .qr-info .upload-count{display:flex;align-items:center;gap:.5rem;color:#555;font-size:.9rem;margin-bottom:.25rem}.qr-card .qr-info .edit-limit-btn{background:none;border:none;color:#aaa;font-size:.75rem;cursor:pointer;padding:0;text-decoration:underline}.qr-card .qr-info .edit-limit-btn:hover{color:#555}.qr-card .qr-info .limit-edit-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}.qr-card .qr-info .limit-edit-input{width:64px;padding:.3rem .5rem;border:1px solid #ddd;border-radius:6px;font-size:.85rem;text-align:center;outline:none}.qr-card .qr-info .limit-edit-input:focus{border-color:#1a1a1a}.qr-card .qr-info .limit-edit-input::-webkit-outer-spin-button,.qr-card .qr-info .limit-edit-input::-webkit-inner-spin-button{-webkit-appearance:none}.qr-card .qr-info .limit-edit-input{-moz-appearance:textfield}.qr-card .qr-info .limit-unit-small{font-size:.8rem;color:#888}.qr-card .qr-info .save-limit-btn{background:linear-gradient(135deg,#4facfe,#667eea);color:#fff;border:none;border-radius:50px;padding:.3rem .7rem;font-size:.8rem;font-weight:600;cursor:pointer}.qr-card .qr-info .save-limit-btn:hover{opacity:.9}.qr-card .qr-info .cancel-limit-btn{background:none;border:none;color:#aaa;font-size:.8rem;cursor:pointer;padding:0}.qr-card .qr-info .cancel-limit-btn:hover{color:#555}.qr-card .qr-info .qr-link{color:#aaa;font-size:.75rem;word-break:break-all;cursor:pointer;position:relative;transition:color .15s}.qr-card .qr-info .qr-link:hover{color:#4facfe}.qr-card .qr-info .copy-toast{position:absolute;left:50%;transform:translate(-50%);bottom:calc(100% + 6px);background:#1a1a1a;color:#fff;font-size:.75rem;padding:.3rem .7rem;border-radius:6px;white-space:nowrap;pointer-events:none}.qr-card .qr-inline-actions{display:flex;align-items:center;gap:.75rem;margin-top:.5rem}.qr-card .toggle-group{display:flex;align-items:center;gap:.5rem}.qr-card .toggle-label{font-size:.8rem;color:#888}.qr-card .delete-btn{padding:.4rem .9rem;border:1px solid #fca5a5;border-radius:8px;background:#fff;color:#e53e3e;font-size:.85rem;cursor:pointer}.qr-card .delete-btn:hover{background:#fff5f5}.upload-page{min-height:100vh;height:100vh;overflow:hidden;display:flex;align-items:center;justify-content:center;background:transparent;padding:16px;box-sizing:border-box}.brand-link{text-decoration:none;color:inherit}.upload-card{background:#fff;border-radius:20px;padding:2.5rem 2rem 1.5rem;width:100%;max-width:400px;box-shadow:0 8px 40px #4facfe26;text-align:center;position:relative}.upload-card .upload-brand{font-size:.85rem;font-weight:700;background:linear-gradient(135deg,#4facfe,#667eea);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;display:block;margin-top:2rem}.upload-card h1{font-size:1.8rem;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#4facfe,#667eea);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:.1rem}.upload-card .upload-subtitle{color:#888;margin-bottom:1.5rem;font-size:.95rem}.upload-form{display:flex;flex-direction:column;gap:1rem}.file-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px dashed rgba(79,172,254,.4);border-radius:14px;padding:2.5rem 2rem;cursor:pointer;font-size:.95rem;color:#888;transition:border-color .2s,background .2s;background:#4facfe08}.file-drop:hover{border-color:#4facfe;background:#4facfe12;color:#4facfe}.file-input{display:none}.upload-btn{padding:.75rem;background:linear-gradient(135deg,#4facfe,#667eea);color:#fff;border:none;border-radius:50px;font-weight:600;font-size:.95rem;cursor:pointer;box-shadow:0 4px 14px #4facfe66}.upload-btn:hover{opacity:.9}.upload-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.upload-error{color:#e53e3e;font-size:.85rem}.success-icon{font-size:3rem;margin-bottom:1rem}.success-actions{display:flex;flex-direction:column;gap:1rem;margin-top:1.5rem}.create-own-link{font-size:.85rem;color:#aaa;text-decoration:none}.create-own-link:hover{color:#667eea}.privacy-policy{max-width:720px;margin:0 auto;padding:48px 24px;line-height:1.7;color:#222}.privacy-policy h1{margin-bottom:4px}.privacy-policy h2{margin-top:32px}.privacy-policy p,.privacy-policy ul{margin-top:8px}.privacy-policy ul{padding-left:24px}.privacy-policy a{color:inherit}.terms-of-service{max-width:720px;margin:0 auto;padding:48px 24px;line-height:1.7;color:#222}.terms-of-service h1{margin-bottom:4px}.terms-of-service h2{margin-top:32px}.terms-of-service p,.terms-of-service ul{margin-top:8px}.terms-of-service ul{padding-left:24px}.terms-of-service a{color:inherit}
