:root{--primary:#06f;--primary-bright:#007aff;--navy:#183153;--background:#f5f8fc;--surface:#f2f2f7;--surface-elevated:#e8e8ed;--text-primary:#000;--text-secondary:#555;--border:#d5d5da;--thick-border:3px solid #183153;--success:#00cc6a;--green:#4ade80;--purple:#a78bfa;--coral:#fdba74;--yellow:#facc15;--teal:#2dd4bf;--rose:#fb7185;--spacing-xs:0.5rem;--spacing-sm:0.75rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--radius-sm:0.5rem;--radius-md:0.75rem;--radius-lg:1rem;--radius-xl:1.25rem;--radius-2xl:1.5rem;--radius-card:20px;--radius-pill:100px;--radius-icon:16px;--shadow-card:4px 4px 0 #183153;--shadow-card-lg:6px 6px 0 #183153;--font-body:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter",system-ui,sans-serif}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background:var(--background);color:var(--text-primary);min-height:100dvh;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;background:none}button,input{font-family:inherit;border:none}input{outline:none}.suite-page,.suite-page-center{min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:var(--spacing-xl) var(--spacing-md)}.suite-page-center{justify-content:center}.suite-container{width:100%;max-width:420px}.suite-logo{display:flex;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:var(--spacing-2xl)}.suite-logo-text{font-size:2rem;font-weight:900;color:var(--navy);letter-spacing:-.02em}.suite-logo-subtitle{font-size:1.125rem;font-weight:700;color:var(--primary);letter-spacing:.15em;text-transform:uppercase}.suite-tagline{font-size:.9375rem;font-weight:500;color:var(--text-secondary);text-align:center;margin-bottom:var(--spacing-xl)}.nearly-btn{display:inline-flex;align-items:center;justify-content:center;gap:.625rem;padding:.875rem 2rem;font-size:1rem;font-weight:800;border:3px solid var(--navy);border-radius:var(--radius-pill);position:relative;top:0;left:0;transition:top .1s ease,left .1s ease,box-shadow .1s ease;box-shadow:var(--shadow-card);cursor:pointer;text-decoration:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.nearly-btn.pressed,.nearly-btn:active{box-shadow:none;top:4px;left:4px}@media (hover:hover){.nearly-btn:hover{box-shadow:none;top:4px;left:4px}}.nearly-btn-primary{background:#fff;color:var(--navy)}.nearly-btn-blue{background:var(--primary-bright);color:#fff}.nearly-btn-green{background:var(--green);color:var(--navy)}.nearly-btn-large{padding:1rem 2.5rem;font-size:1.125rem;width:100%}.nearly-btn-full{width:100%}.nearly-btn:disabled{opacity:.5;cursor:not-allowed}.nearly-btn:disabled,.nearly-card{box-shadow:var(--shadow-card);top:0;left:0}.nearly-card{background:#fff;border:3px solid var(--navy);border-radius:var(--radius-card);padding:clamp(1.25rem,3vw,1.75rem);position:relative;transition:top .1s ease,left .1s ease,box-shadow .1s ease}.nearly-card-interactive{cursor:pointer;-webkit-tap-highlight-color:transparent}.nearly-card-interactive:active{box-shadow:none;top:4px;left:4px}@media (hover:hover){.nearly-card-interactive:hover{box-shadow:none;top:4px;left:4px}}.nearly-input-wrapper{position:relative;width:100%}.nearly-input{width:100%;padding:.875rem 1.25rem;font-size:1rem;font-weight:600;color:var(--navy);background:#fff;border:3px solid var(--navy);border-radius:var(--radius-xl);outline:none;transition:box-shadow .15s ease}.nearly-input::placeholder{color:var(--text-secondary);font-weight:500}.nearly-input:focus{box-shadow:0 0 0 3px rgba(0,102,255,.2)}.nearly-input-label{display:block;font-size:.8125rem;font-weight:700;color:var(--navy);margin-bottom:.5rem}.phone-input-row{display:flex;gap:.75rem;width:100%}.phone-prefix-select{width:90px;font-size:1rem;font-weight:700;color:var(--navy);background:#fff;border:3px solid var(--navy);border-radius:var(--radius-xl);outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%23183153' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding:.875rem 2rem .875rem .75rem}.phone-prefix-select:focus{box-shadow:0 0 0 3px rgba(0,102,255,.2)}.phone-number-input{flex:1 1}.otp-boxes{display:flex;gap:.75rem;justify-content:center;margin-bottom:var(--spacing-lg)}.otp-box{width:60px;height:68px;text-align:center;font-size:1.5rem;font-weight:800;color:var(--navy);background:#fff;border:3px solid var(--navy);border-radius:var(--radius-xl);outline:none;transition:box-shadow .15s ease;caret-color:var(--primary)}.otp-box:focus{box-shadow:0 0 0 3px rgba(0,102,255,.2)}.otp-box.filled{background:var(--surface)}.scanner-container{position:relative;width:100%;max-width:100%;aspect-ratio:1;overflow:hidden;border-radius:var(--radius-card);border:3px solid var(--navy);background:#000}.scanner-container video{width:100%;height:100%;object-fit:cover}.scanner-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.scanner-frame{width:220px;height:220px;border:3px solid var(--primary-bright);border-radius:24px;box-shadow:0 0 0 9999px rgba(0,0,0,.4)}.scanner-hint{position:absolute;top:var(--spacing-lg);left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:#fff;padding:.5rem 1rem;border-radius:var(--radius-pill);font-size:.8125rem;font-weight:600;white-space:nowrap}.result-sheet-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .2s ease}.result-sheet{width:100%;max-width:420px;background:#fff;border-radius:var(--radius-card) var(--radius-card) 0 0;border:3px solid var(--navy);border-bottom:none;padding:var(--spacing-xl) var(--spacing-lg) var(--spacing-2xl);animation:slideUp .25s ease}.result-customer{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xl)}.result-avatar{width:72px;height:72px;border-radius:50%;border:3px solid var(--navy);background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:1.75rem}.result-avatar,.result-name{font-weight:800;color:var(--navy)}.result-name{font-size:1.25rem}.result-username{font-size:.875rem;font-weight:500;color:var(--text-secondary)}.result-stamps{text-align:center;margin-bottom:var(--spacing-xl)}.result-stamps-count{font-size:2rem;font-weight:900;color:var(--navy)}.result-stamps-label{font-size:.8125rem;font-weight:600;color:var(--text-secondary)}.result-actions{display:flex;flex-direction:column;gap:var(--spacing-sm)}.top-bar{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:rgba(245,248,252,.92);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:2px solid var(--navy)}.top-bar-title{font-size:1.0625rem;font-weight:800;color:var(--navy)}.top-bar-btn{font-size:.875rem;font-weight:700;color:var(--primary);padding:.375rem .75rem;border-radius:var(--radius-sm);transition:background .15s ease}.top-bar-btn:active{background:var(--surface)}.cafe-list{flex-direction:column}.cafe-card,.cafe-list{display:flex;gap:var(--spacing-md)}.cafe-card{align-items:center}.cafe-card-photo{width:56px;height:56px;border-radius:var(--radius-icon);border:3px solid var(--navy);background:var(--surface);flex-shrink:0;object-fit:cover}.cafe-card-info{flex:1 1;min-width:0}.cafe-card-name{font-size:1rem;font-weight:800;color:var(--navy)}.cafe-card-address{font-size:.8125rem;font-weight:500;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cafe-card-arrow{color:var(--text-secondary);font-size:1.25rem;flex-shrink:0}.settings-section{margin-bottom:var(--spacing-xl)}.settings-section-title{font-size:.75rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--spacing-sm);padding-left:.25rem}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);background:#fff;border:3px solid var(--navy);border-radius:var(--radius-xl);margin-bottom:.5rem}.settings-row-label{font-size:.9375rem;font-weight:700;color:var(--navy)}.settings-row-value{font-size:.875rem;font-weight:600;color:var(--text-secondary)}.settings-stat-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--spacing-sm);gap:var(--spacing-sm)}.settings-stat{text-align:center;padding:var(--spacing-md);background:#fff;border:3px solid var(--navy);border-radius:var(--radius-xl)}.settings-stat-number{font-size:1.75rem;font-weight:900;color:var(--navy)}.settings-stat-label{font-size:.75rem;font-weight:600;color:var(--text-secondary)}.lang-picker{display:flex;gap:.5rem}.lang-btn{padding:.375rem .75rem;font-size:.8125rem;font-weight:700;color:var(--text-secondary);border:2px solid var(--border);border-radius:var(--radius-sm);transition:all .15s ease}.lang-btn.active{color:var(--navy);border-color:var(--navy);background:var(--surface)}.text-center{text-align:center}.text-secondary{color:var(--text-secondary)}.text-sm{font-size:.8125rem}.text-xs{font-size:.75rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.w-full{width:100%}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.error-message{background:#fee2e2;color:#991b1b;border:2px solid #fecaca;border-radius:var(--radius-md)}.error-message,.info-message{padding:var(--spacing-sm) var(--spacing-md);font-size:.8125rem;font-weight:600;margin-bottom:var(--spacing-md)}.info-message{background:#dbeafe;color:#1e40af;border:2px solid #bfdbfe;border-radius:var(--radius-md)}.success-message{background:#dcfce7;color:#166534;border:2px solid #bbf7d0;border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md);font-size:.8125rem;font-weight:600;margin-bottom:var(--spacing-md)}.spinner{width:24px;height:24px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}.spinner-large{width:40px;height:40px}.success-check{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);padding:var(--spacing-xl)}.success-check-icon{width:80px;height:80px;border-radius:50%;background:var(--green);border:3px solid var(--navy);display:flex;align-items:center;justify-content:center;font-size:2rem;animation:popIn .3s ease}.success-check-text{font-size:1.125rem;font-weight:800;color:var(--navy)}.suite-footer{margin-top:auto;padding-top:var(--spacing-xl);text-align:center}.suite-footer a{font-size:.8125rem;font-weight:600;color:var(--text-secondary);text-decoration:none;transition:color .15s ease}.suite-footer a:hover{color:var(--primary)}.deco-circle{border-radius:50%;opacity:.08}.deco-circle,.deco-square{position:absolute;background:var(--navy);pointer-events:none}.deco-square{border-radius:12px;opacity:.06}.camera-permission{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-lg);padding:var(--spacing-2xl);text-align:center}.camera-permission-icon{font-size:3rem;opacity:.4}.camera-permission-text{font-size:.9375rem;font-weight:600;color:var(--text-secondary);max-width:280px;line-height:1.5}.manual-entry{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-lg)}.manual-entry-input{text-align:center;font-size:1.25rem;letter-spacing:.1em}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes popIn{0%{transform:scale(0)}70%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes spin{to{transform:rotate(1turn)}}@supports (padding:env(safe-area-inset-bottom)){.suite-page,.suite-page-center{padding-bottom:calc(var(--spacing-xl) + env(safe-area-inset-bottom))}.result-sheet{padding-bottom:calc(var(--spacing-2xl) + env(safe-area-inset-bottom))}.top-bar{padding-top:calc(var(--spacing-md) + env(safe-area-inset-top))}}