@import"https://fonts.googleapis.com/css2?family=League+Spartan:wght@300;400;500;600;700&display=swap";:root{--primary: #003087;--primary-dark: #152d4a;--primary-light: #2A2D32;--background: #f8fafb;--surface: #ffffff;--text-primary: #4F81B7;--text-secondary: #4F81B7;--text-muted: #4F81B7;--border: #d4dfe6;--border-light: #e8eff4;--success: #2d9e5f;--success-light: #e8f5ee;--error: #d64545;--error-light: #fdeaea;--warning: #e8a430;--warning-light: #fef6e6;--shadow-sm: 0 2px 8px rgba(0, 0, 128, .08);--shadow-md: 0 4px 20px rgba(0, 0, 128, .12);--shadow-lg: 0 8px 40px rgba(0, 0, 128, .16);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:League Spartan,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--background);color:var(--text-primary);line-height:1.5;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:League Spartan,sans-serif;font-weight:700;color:var(--text-primary);line-height:1.2}a{color:var(--primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-dark)}input,select,textarea{font-family:League Spartan,sans-serif;font-size:1rem}button{font-family:League Spartan,sans-serif;cursor:pointer}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}::selection{background:var(--primary);color:#fff}.card-tile{width:300px;height:185px;border-radius:24px;padding:1.4rem;background:var(--bg);color:var(--text);display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;box-shadow:0 10px 40px #0000801f;transition:box-shadow .3s,transform .3s;-webkit-user-select:none;user-select:none}.card-tile:before{content:"";position:absolute;top:-40px;right:-40px;width:160px;height:160px;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 70%);border-radius:50%;pointer-events:none}.card-tile:after{content:"";position:absolute;bottom:-30px;right:-20px;width:120px;height:120px;border-radius:50%;background:var(--accent);opacity:.2;pointer-events:none}.card-active:hover{transform:translateY(-4px);box-shadow:0 20px 50px #0000802e;cursor:pointer}.card-expiring{animation:pulse-glow 2s infinite}@keyframes pulse-glow{0%,to{box-shadow:0 10px 40px #d6454533}50%{box-shadow:0 10px 40px #d6454580}}.expiry-badge{position:absolute;top:1rem;right:1rem;background:#ffffff40;color:var(--text);font-size:.65rem;font-weight:700;padding:.2rem .6rem;border-radius:999px;z-index:2;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.05em}.card-top{display:flex;justify-content:space-between;align-items:flex-start;z-index:1}.card-retailer{font-family:League Spartan,sans-serif;font-size:1.2rem;font-weight:700;letter-spacing:-.01em}.card-chip{font-size:1.3rem;opacity:.7}.card-middle{z-index:1}.card-balance{font-family:League Spartan,sans-serif;font-size:2.2rem;font-weight:700;display:block;line-height:1;letter-spacing:-.02em}.card-balance-label{font-size:.72rem;opacity:.6;text-transform:uppercase;letter-spacing:.1em}.card-bottom{z-index:1}.card-progress-bar{height:4px;background:#ffffff40;border-radius:2px;overflow:hidden;margin-bottom:.5rem}.card-progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .5s ease;min-width:4px}.card-meta{display:flex;justify-content:space-between;align-items:center;font-size:.7rem;opacity:.8}.card-expiry{font-size:.85rem;font-weight:600;opacity:1}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--background, #f8fafb);color:var(--text-primary, #4F81B7);font-family:League Spartan,sans-serif;min-height:100vh}.dashboard{max-width:900px;margin:0 auto;padding:2rem 1.5rem 4rem}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3rem}.logo{font-family:League Spartan,sans-serif;font-size:2rem;font-weight:700;color:var(--primary, #003087);letter-spacing:-.02em}.add-btn{background:var(--primary, #003087);color:#fff;border:none;padding:.7rem 1.6rem;border-radius:var(--radius-full, 999px);font-family:League Spartan,sans-serif;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 4px 15px #00008040}.add-btn:hover{transform:scale(1.05);box-shadow:0 6px 20px #00008059;background:var(--primary-dark, #003087)}.total-section{text-align:center;margin-bottom:2.5rem;background:var(--surface, white);border-radius:var(--radius-xl, 28px);padding:2rem;box-shadow:var(--shadow-md, 0 4px 30px rgba(0, 0, 128, .08));border:1px solid var(--border, #d4dfe6)}.total-label{font-family:League Spartan,sans-serif;font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;color:var(--primary, #003087);font-weight:600;margin-bottom:.3rem}.total-amount{font-family:League Spartan,sans-serif;font-size:clamp(3rem,8vw,5rem);font-weight:700;line-height:1;color:var(--primary, #003087)}.card-count{color:var(--text-muted, #4F81B7);font-size:.9rem;margin-top:.4rem}.controls{display:flex;justify-content:flex-end;gap:.8rem;margin-bottom:2rem;align-items:center;position:relative}.filter-wrapper{position:relative}.filter-btn{background:var(--surface, white);color:var(--primary, #003087);border:2px solid var(--border, #d4dfe6);padding:.5rem 1.2rem;border-radius:var(--radius-full, 999px);font-size:.85rem;font-weight:600;cursor:pointer;font-family:League Spartan,sans-serif;transition:all .2s;display:flex;align-items:center;gap:.4rem}.filter-btn:hover{border-color:var(--primary, #003087)}.filter-btn.open{background:var(--primary, #003087);color:#fff;border-color:var(--primary, #003087)}.filter-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--surface, white);border:1px solid var(--border, #d4dfe6);border-radius:var(--radius-lg, 16px);padding:1rem;box-shadow:var(--shadow-lg, 0 8px 30px rgba(0, 0, 128, .12));z-index:100;min-width:200px}.filter-dropdown p{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted, #4F81B7);font-weight:600;margin-bottom:.6rem}.filter-options{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.8rem}.filter-option{background:none;border:2px solid var(--border, #d4dfe6);border-radius:var(--radius-full, 999px);padding:.35rem .9rem;font-size:.85rem;font-weight:600;cursor:pointer;font-family:League Spartan,sans-serif;color:var(--text-primary, #4F81B7);text-align:left;transition:all .15s}.filter-option:hover{border-color:var(--primary, #003087);color:var(--primary, #003087)}.filter-option.selected{background:#0000801f;border-color:var(--primary, #003087);color:var(--primary, #003087)}.filter-confirm{width:100%;background:var(--primary, #003087);color:#fff;border:none;border-radius:var(--radius-full, 999px);padding:.5rem;font-size:.85rem;font-weight:700;cursor:pointer;font-family:League Spartan,sans-serif;transition:all .2s}.filter-confirm:hover{background:var(--primary-dark, #152d4a)}.sort-select{background:var(--surface, white);color:var(--text-primary, #4F81B7);border:2px solid var(--border, #d4dfe6);padding:.5rem 1.2rem;border-radius:var(--radius-full, 999px);font-size:.85rem;font-weight:600;font-family:League Spartan,sans-serif;cursor:pointer;outline:none;transition:all .2s}.sort-select:hover{border-color:var(--primary, #003087)}.carousel{display:flex;align-items:center;justify-content:center;gap:1rem;position:relative;height:260px;margin-bottom:1.5rem}.carousel-track{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.carousel-item{position:absolute;transition:all .4s cubic-bezier(.25,.46,.45,.94);transform:translate(calc(var(--offset) * 240px)) scale(calc(1 - (abs(var(--offset))*.1)));z-index:calc(10 - abs(var(--offset)));cursor:pointer}.carousel-item.active{z-index:10;cursor:default}.carousel-item.hidden{opacity:0;pointer-events:none}.arrow{background:var(--surface, white);border:2px solid var(--border, #d4dfe6);color:var(--primary, #003087);width:46px;height:46px;border-radius:50%;font-size:1.1rem;cursor:pointer;transition:all .2s;flex-shrink:0;z-index:20;font-weight:700}.arrow:hover{background:var(--primary, #003087);color:#fff;border-color:var(--primary, #003087)}.dots{display:flex;justify-content:center;gap:.5rem;margin-top:.5rem}.dot{width:8px;height:8px;border-radius:50%;background:var(--border, #d4dfe6);cursor:pointer;transition:all .2s}.dot-active{background:var(--primary, #003087);width:24px;border-radius:4px}.empty-state{text-align:center;color:var(--text-muted, #4F81B7);padding:4rem}.fly-card-scene{position:fixed;top:var(--start-top);left:var(--start-left);width:var(--start-width);height:var(--start-height);z-index:999;pointer-events:none;perspective:1200px;animation:flyExpand 1.1s cubic-bezier(.4,0,.2,1) forwards}.fly-card-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;animation:cardSpin 1.1s cubic-bezier(.4,0,.2,1) forwards;border-radius:24px}.fly-card-front,.fly-card-back{position:absolute;width:100%;height:100%;border-radius:24px;backface-visibility:hidden;-webkit-backface-visibility:hidden;padding:1.4rem;color:#fff;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.fly-card-front:before{content:"";position:absolute;top:-40px;right:-40px;width:160px;height:160px;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 70%);border-radius:50%}.fly-card-back{transform:rotateY(180deg)}.fly-card-retailer{font-family:League Spartan,sans-serif;font-size:1.2rem;font-weight:700}.fly-card-balance{font-family:League Spartan,sans-serif;font-size:2.2rem;font-weight:700}.fly-card-exp{font-size:.75rem;opacity:.7}@keyframes flyExpand{0%{top:var(--start-top);left:var(--start-left);width:var(--start-width);height:var(--start-height);border-radius:24px}50%{top:50%;left:50%;width:var(--start-width);height:var(--start-height);border-radius:24px;transform:translate(-50%,-50%)}to{top:0;left:0;width:100vw;height:100vh;border-radius:0;transform:none}}@keyframes cardSpin{0%{transform:rotateY(0)}10%{transform:rotateY(-15deg)}to{transform:rotateY(360deg)}}.header-actions{display:flex;gap:.8rem;align-items:center}.logout-btn{background:transparent;color:var(--text-muted, #4F81B7);border:2px solid var(--border, #d4dfe6);padding:.7rem 1.4rem;border-radius:var(--radius-full, 999px);font-family:League Spartan,sans-serif;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s}.logout-btn:hover{border-color:var(--primary, #003087);color:var(--primary, #003087)}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;color:var(--text-muted, #4F81B7);gap:1rem}.spinner{width:48px;height:48px;border:4px solid var(--border, #d4dfe6);border-top-color:var(--primary, #003087);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-state p{font-size:1rem;font-weight:500}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;background:var(--error-light, #fdeaea);border-radius:var(--radius-lg, 16px);border:1px solid rgba(214,69,69,.2);gap:1rem;margin:2rem 0}.error-state p{color:var(--error, #d64545);font-weight:500}.error-state button{background:var(--primary, #003087);color:#fff;border:none;padding:.6rem 1.4rem;border-radius:var(--radius-full, 999px);font-family:League Spartan,sans-serif;font-weight:600;cursor:pointer;transition:all .2s}.error-state button:hover{transform:scale(1.05);background:var(--primary-dark, #003087)}.detail-page{min-height:100vh;background:var(--background, #f8fafb);font-family:League Spartan,sans-serif}.detail-hero{position:relative;padding:2rem 2rem 2.5rem;color:#fff;overflow:hidden}.detail-hero:before{content:"";position:absolute;top:-60px;right:-60px;width:250px;height:250px;background:radial-gradient(circle,rgba(255,255,255,.15) 0%,transparent 70%);border-radius:50%;pointer-events:none}.detail-hero:after{content:"";position:absolute;bottom:-40px;left:-40px;width:180px;height:180px;background:#ffffff14;border-radius:50%;pointer-events:none}.back-btn{background:#fff3;border:none;color:#fff;padding:.5rem 1.1rem;border-radius:var(--radius-full, 999px);font-family:League Spartan,sans-serif;font-size:.85rem;font-weight:600;cursor:pointer;margin-bottom:1.5rem;display:inline-block;transition:background .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.back-btn:hover{background:#ffffff4d}.detail-hero-content{max-width:600px;margin:0 auto;position:relative;z-index:1}.detail-hero-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.detail-retailer{font-family:League Spartan,sans-serif;font-size:1.8rem;font-weight:700}.detail-chip{font-size:1.8rem;opacity:.8}.detail-hero-balance{font-family:League Spartan,sans-serif;font-size:clamp(3rem,8vw,4.5rem);font-weight:700;line-height:1;margin-bottom:.3rem}.detail-hero-sub{font-size:.85rem;opacity:.7;margin-bottom:1rem}.detail-progress-bar{height:6px;background:#ffffff40;border-radius:3px;overflow:hidden;margin-bottom:.8rem}.detail-progress-fill{height:100%;background:#fffc;border-radius:3px;transition:width .5s ease;min-width:6px}.detail-hero-bottom{display:flex;justify-content:space-between;font-size:.8rem;opacity:.75}.detail-category{text-transform:capitalize;background:#fff3;padding:.2rem .7rem;border-radius:var(--radius-full, 999px);font-size:.75rem;font-weight:600}.detail-body{max-width:600px;margin:0 auto;padding:2rem 1.5rem 4rem;display:flex;flex-direction:column;gap:2rem}.detail-section{background:var(--surface, white);border-radius:var(--radius-lg, 20px);padding:1.5rem;border:1px solid var(--border, #d4dfe6);box-shadow:var(--shadow-sm, 0 2px 20px rgba(0, 0, 128, .06))}.section-title{font-family:League Spartan,sans-serif;font-size:1.1rem;font-weight:700;color:var(--text-primary, #4F81B7);margin-bottom:1rem}.detail-field{margin-bottom:1rem}.detail-field:last-child{margin-bottom:0}.field-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted, #4F81B7);font-weight:600;margin-bottom:.4rem}.field-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}.field-value{font-family:League Spartan,sans-serif;font-size:1rem;font-weight:500;color:var(--text-primary, #4F81B7);letter-spacing:.05em}.field-btns{display:flex;gap:.4rem;flex-shrink:0}.field-btn{background:var(--background, #f8fafb);border:1.5px solid var(--border, #d4dfe6);color:var(--primary, #003087);padding:.3rem .8rem;border-radius:var(--radius-full, 999px);font-size:.78rem;font-weight:600;cursor:pointer;font-family:League Spartan,sans-serif;transition:all .15s;white-space:nowrap}.field-btn:hover{background:var(--primary, #003087);color:#fff;border-color:var(--primary, #003087)}.spend-row{display:flex;gap:.8rem}.spend-input{flex:1;border:2px solid var(--border, #d4dfe6);border-radius:var(--radius-md, 12px);padding:.7rem 1rem;font-family:League Spartan,sans-serif;font-size:.95rem;outline:none;background:var(--background, #f8fafb);color:var(--text-primary, #4F81B7);transition:border-color .2s}.spend-input:focus{border-color:var(--primary, #003087)}.spend-btn{color:#fff;border:none;border-radius:var(--radius-md, 12px);padding:.7rem 1.4rem;font-family:League Spartan,sans-serif;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap;background:var(--primary, #003087)}.spend-btn:hover{opacity:.85;transform:scale(1.02)}.no-transactions{color:var(--text-muted, #4F81B7);font-size:.9rem;text-align:center;padding:1rem 0}.transactions-list{display:flex;flex-direction:column;gap:.8rem}.transaction-row{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;background:var(--background, #f8fafb);border-radius:var(--radius-md, 12px);border:1px solid var(--border, #d4dfe6)}.transaction-amount{font-weight:700;color:var(--primary, #003087);font-size:1rem;margin-right:.8rem}.transaction-date{font-size:.8rem;color:var(--text-muted, #4F81B7)}.transaction-balance{font-size:.85rem;color:var(--text-primary, #4F81B7);font-weight:600}.detail-error{text-align:center;padding:4rem;color:var(--text-muted, #4F81B7)}.detail-error p{margin-bottom:1rem;font-size:1.1rem}.back-link{background:var(--primary, #003087);color:#fff;border:none;padding:.6rem 1.2rem;border-radius:var(--radius-full, 999px);font-family:League Spartan,sans-serif;font-size:.9rem;font-weight:600;cursor:pointer}.back-link:hover{background:var(--primary-dark, #152d4a)}.detail-loading{text-align:center;padding:4rem;color:var(--text-muted, #4F81B7);font-size:1.1rem}.spend-btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.spend-input:disabled{opacity:.6;cursor:not-allowed}.danger-section{background:var(--error-light, #fdeaea);border-color:#d6454533}.delete-btn{width:100%;padding:.9rem 1.4rem;background:var(--error, #d64545);color:#fff;border:none;border-radius:var(--radius-md, 12px);font-family:League Spartan,sans-serif;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s}.delete-btn:hover{background:#c03939;transform:scale(1.02)}.toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);padding:.9rem 1.5rem;border-radius:var(--radius-md, 12px);font-family:League Spartan,sans-serif;font-size:.95rem;font-weight:600;z-index:1000;animation:slideUp .3s ease;box-shadow:var(--shadow-lg, 0 4px 20px rgba(0, 0, 0, .15))}.toast-success{background:var(--success, #2d9e5f);color:#fff}.toast-error{background:var(--error, #d64545);color:#fff}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.modal-overlay{position:fixed;inset:0;background:#1a2a3680;display:flex;align-items:center;justify-content:center;z-index:999;padding:1rem}.modal-content{background:var(--surface, white);border-radius:var(--radius-lg, 20px);padding:2rem;max-width:400px;width:100%;box-shadow:var(--shadow-lg, 0 10px 40px rgba(0, 0, 0, .2))}.modal-content h3{font-family:League Spartan,sans-serif;font-size:1.4rem;font-weight:700;color:var(--text-primary, #4F81B7);margin-bottom:.8rem}.modal-content p{color:var(--text-secondary, #4F81B7);font-size:.95rem;line-height:1.5;margin-bottom:1.5rem}.modal-buttons{display:flex;gap:.8rem;justify-content:flex-end}.modal-btn{padding:.7rem 1.4rem;border-radius:var(--radius-sm, 10px);font-family:League Spartan,sans-serif;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;border:none}.modal-btn:disabled{opacity:.6;cursor:not-allowed}.cancel-btn{background:var(--background, #f8fafb);color:var(--text-secondary, #4F81B7);border:1px solid var(--border, #d4dfe6)}.cancel-btn:hover:not(:disabled){background:var(--border, #d4dfe6)}.confirm-btn{background:var(--error, #d64545);color:#fff}.confirm-btn:hover:not(:disabled){background:#c03939}.addcard-page{min-height:100vh;background:var(--background, #f8fafb);font-family:League Spartan,sans-serif}.addcard-header{background:var(--primary, #003087);padding:2rem 2rem 2.5rem;color:#fff;position:relative;overflow:hidden}.addcard-header:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);pointer-events:none}.back-btn{background:#ffffff26;border:1px solid rgba(255,255,255,.25);color:#fff;padding:.5rem 1.1rem;border-radius:var(--radius-full, 999px);font-family:League Spartan,sans-serif;font-size:.85rem;font-weight:500;letter-spacing:.05em;cursor:pointer;margin-bottom:1.5rem;display:inline-block;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.back-btn:hover{background:#ffffff40;border-color:#fff6}.addcard-title{font-family:League Spartan,sans-serif;font-size:2.2rem;font-weight:700;margin-bottom:.3rem;color:#fff;letter-spacing:-.01em}.addcard-sub{font-size:.9rem;color:#ffffffb3;letter-spacing:.02em}.addcard-body{max-width:600px;margin:0 auto;padding:2rem 1.5rem 4rem;display:flex;flex-direction:column;gap:1.5rem}.addcard-section{background:var(--surface, white);border:1px solid var(--border, #d4dfe6);border-radius:var(--radius-lg, 16px);padding:1.5rem;position:relative;overflow:hidden;box-shadow:var(--shadow-sm, 0 2px 8px rgba(0, 0, 128, .08))}.section-title{font-family:League Spartan,sans-serif;font-size:1.1rem;font-weight:600;color:var(--text-primary, #4F81B7);margin-bottom:1.2rem}.upload-options{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.upload-option{background:var(--background, #f8fafb);border:2px solid var(--border, #d4dfe6);border-radius:var(--radius-md, 12px);padding:2rem 1rem;display:flex;flex-direction:column;align-items:center;gap:.6rem;cursor:pointer;transition:all .2s;font-family:League Spartan,sans-serif;text-align:center}.upload-option:hover{border-color:var(--primary, #003087);background:#0000800d}.upload-option-icon{font-size:2rem;opacity:.7}.upload-option-title{font-size:.85rem;font-weight:600;color:var(--text-primary, #4F81B7)}.upload-option-sub{font-size:.72rem;color:var(--text-muted, #4F81B7)}.qr-section{display:flex;flex-direction:column;align-items:center;padding:2rem;gap:1rem}.qr-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.2em;color:var(--text-muted, #4F81B7);font-weight:600}.qr-code-wrapper{padding:1.2rem;background:var(--surface, white);border:1px solid var(--border, #d4dfe6);border-radius:var(--radius-md, 12px)}.qr-waiting{display:flex;gap:.4rem;align-items:center}.qr-dot{width:6px;height:6px;border-radius:50%;background:var(--primary, #003087);animation:dotPulse 1.2s ease-in-out infinite}.qr-dot:nth-child(2){animation-delay:.2s}.qr-dot:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.qr-sub{font-size:.8rem;color:var(--text-muted, #4F81B7)}.qr-cancel{background:transparent;border:1px solid var(--border, #d4dfe6);color:var(--text-secondary, #4F81B7);padding:.4rem 1.2rem;font-size:.8rem;font-family:League Spartan,sans-serif;cursor:pointer;transition:all .2s;margin-top:.5rem;border-radius:var(--radius-full, 999px)}.qr-cancel:hover{border-color:var(--primary, #003087);color:var(--primary, #003087)}.upload-preview{position:relative;width:100%;border-radius:var(--radius-md, 12px);overflow:hidden}.upload-source-badge{position:absolute;top:.8rem;right:.8rem;background:#000080e6;border:1px solid rgba(255,255,255,.2);color:#fff;padding:.35rem .7rem;font-size:.7rem;letter-spacing:.05em;font-family:League Spartan,sans-serif;z-index:10;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--radius-sm, 8px)}.upload-source-badge.device{background:var(--primary, #003087)}.upload-source-badge.phone{background:var(--success, #2d9e5f)}.upload-preview img{width:100%;max-height:220px;object-fit:cover;display:block}.retake-btn{position:absolute;bottom:.8rem;left:.8rem;background:#1a2a36cc;border:1px solid rgba(255,255,255,.2);color:#fff;padding:.4rem .9rem;font-size:.8rem;font-family:League Spartan,sans-serif;cursor:pointer;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:var(--radius-full, 999px)}.retake-btn:hover{background:#1a2a36f2}.scan-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#00008099;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem}.scan-line{width:80%;height:2px;background:var(--primary-light, #2A2D32);box-shadow:0 0 10px var(--primary-light, #2A2D32),0 0 20px var(--primary-light, #2A2D32);animation:scanMove 1s ease-in-out infinite alternate}@keyframes scanMove{0%{transform:translateY(-50px);opacity:.5}to{transform:translateY(50px);opacity:1}}.scan-label{font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:#fff;font-family:League Spartan,sans-serif;font-weight:600}.scan-done{position:absolute;bottom:.8rem;right:.8rem;background:var(--primary, #003087);border:1px solid var(--primary-light, #2A2D32);color:#fff;padding:.3rem .8rem;font-size:.75rem;font-family:League Spartan,sans-serif;border-radius:var(--radius-full, 999px)}.form-group{margin-bottom:1rem}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted, #4F81B7);font-weight:600;margin-bottom:.5rem}.form-group input,.form-group select{width:100%;border:2px solid var(--border, #d4dfe6);border-radius:var(--radius-md, 12px);padding:.75rem 1rem;font-family:League Spartan,sans-serif;font-size:.9rem;outline:none;background:var(--background, #f8fafb);color:var(--text-primary, #4F81B7);transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:var(--primary, #003087);background:var(--surface, white)}.form-group select option{background:var(--surface, white)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.submit-btn{width:100%;background:var(--primary, #003087);color:#fff;border:none;padding:1rem;border-radius:var(--radius-md, 12px);font-family:League Spartan,sans-serif;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 4px 15px #00008040}.submit-btn:hover{background:var(--primary-dark, #003087);transform:scale(1.01);box-shadow:0 6px 20px #00008059}.submit-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.error-toast{background:var(--error-light, #fdeaea);border:1px solid var(--error, #d64545);color:var(--error, #d64545);padding:1rem;border-radius:var(--radius-md, 12px);margin-bottom:1rem;font-size:.875rem}.auth-page{min-height:100vh;background:var(--background, #f8fafb);display:flex;align-items:center;justify-content:center;padding:2rem;font-family:League Spartan,sans-serif}.auth-container{background:var(--surface, white);border-radius:var(--radius-xl, 28px);padding:3rem 2.5rem;max-width:420px;width:100%;box-shadow:var(--shadow-md, 0 4px 30px rgba(0, 0, 128, .08));border:1px solid var(--border, #d4dfe6)}.auth-logo{font-family:League Spartan,sans-serif;font-size:2rem;font-weight:700;color:var(--primary, #003087);text-align:center;margin-bottom:2rem;letter-spacing:-.02em}.auth-title{font-family:League Spartan,sans-serif;font-size:1.8rem;font-weight:600;color:var(--text-primary, #4F81B7);text-align:center;margin-bottom:.5rem}.auth-subtitle{font-size:.95rem;color:var(--text-muted, #4F81B7);text-align:center;margin-bottom:2rem}.auth-form{display:flex;flex-direction:column;gap:1.2rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.85rem;font-weight:500;color:var(--text-primary, #4F81B7)}.form-group input{padding:.9rem 1rem;border:2px solid var(--border, #d4dfe6);border-radius:var(--radius-md, 12px);font-size:1rem;font-family:League Spartan,sans-serif;transition:all .2s;background:var(--background, #f8fafb);color:var(--text-primary, #4F81B7)}.form-group input:focus{outline:none;border-color:var(--primary, #003087);background:var(--surface, white)}.form-group input::placeholder{color:var(--text-muted, #4F81B7)}.auth-error{background:var(--error-light, #fdeaea);border:1px solid rgba(214,69,69,.3);color:var(--error, #d64545);padding:.8rem 1rem;border-radius:var(--radius-md, 12px);font-size:.9rem;text-align:center}.auth-btn{background:var(--primary, #003087);color:#fff;border:none;padding:1rem;border-radius:var(--radius-md, 12px);font-size:1rem;font-weight:600;font-family:League Spartan,sans-serif;cursor:pointer;transition:all .2s;box-shadow:0 4px 15px #00008040;margin-top:.5rem}.auth-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #00008059;background:var(--primary-dark, #152d4a)}.auth-btn:disabled{opacity:.7;cursor:not-allowed}.auth-switch{text-align:center;margin-top:1.5rem;font-size:.9rem;color:var(--text-muted, #4F81B7)}.auth-switch a{color:var(--primary, #003087);text-decoration:none;font-weight:600}.auth-switch a:hover{text-decoration:underline}
