.modal-overlay{position:fixed;display:flex;z-index:3000;backdrop-filter:blur(4px);background:#2d1a0fd9;justify-content:center;align-items: center;width:100%;height:100%;padding:20px;top:0;left:0}.alert-modal{background:var(--white);border:4px solid var(--border-dark);border-bottom:12px solid var(--border-dark);border-right:8px solid var(--border-dark);display:flex;text-align:center;animation:modal-pop .3s cubic-bezier(.34,1.56,.64,1);border-radius:32px;flex-direction:column;align-items: center;gap:24px;width:100%;max-width:400px;padding:32px}@keyframes modal-pop{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.alert-icon{background:var(--bg-pale);color:var(--primary);display:flex;border:3px solid var(--border-dark);border-radius:20px;justify-content:center;align-items: center;width:64px;height:64px}.alert-modal h2{color:var(--border-dark);text-transform:uppercase;margin:0;font-size:1.5rem;font-weight:900}.alert-modal p{color:var(--text-muted);margin:0;font-weight:700;line-height:1.5}.btn-modal-close{width:100%}.auth-container{display:flex;background:var(--background);flex-direction:column;justify-content:center;align-items: center;width:100%;height:100%;padding:20px}.auth-hero{text-align:center;margin-bottom:32px}.auth-hero .logo-icon{background:var(--surface);color:var(--primary);border-radius:var(--radius-lg);display:inline-flex;box-shadow:var(--shadow-sm);border:1px solid var(--border);margin-bottom:16px;padding:24px}.auth-hero h1{color:var(--secondary);letter-spacing:-.025em;margin:0;font-size:2.5rem;font-weight:800}.auth-hero p{color:var(--text-muted);max-width:300px;margin-top:8px;margin-left:auto;margin-right:auto;font-weight:500}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;box-shadow:var(--shadow-md);flex-direction:column;gap:24px;width:100%;max-width:400px;padding:32px}.auth-card-title{color:var(--secondary);text-align:center;margin:0;font-size:1.25rem;font-weight:700}.input-group{display:flex;flex-direction:column;gap:8px}.input-group label{color:var(--text-muted);font-size:.875rem;font-weight:600}.input-group input{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);transition:var(--transition);padding:12px 16px;font-size:1rem;font-weight:400}.input-group input:focus{outline:none;background:var(--surface);border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-light)}.auth-actions{display:flex;flex-direction:column;gap:16px}.divider{display:flex;text-align:center;color:var(--text-muted);letter-spacing:.05em;align-items: center;font-size:.75rem;font-weight:600}.divider:before,.divider:after{content:"";border-bottom:1px solid var(--border);flex:1}.divider span{padding:0 10px}.btn-icon-inline{margin-right:8px}.auth-footer{text-align:center;color:var(--text-muted);margin-top:32px;font-size:.875rem}.confirm-modal{background:var(--white);border:4px solid var(--border-dark);border-bottom:12px solid var(--border-dark);border-right:8px solid var(--border-dark);display:flex;text-align:center;animation:modal-pop .3s cubic-bezier(.34,1.56,.64,1);border-radius:32px;flex-direction:column;align-items: center;gap:24px;width:100%;max-width:400px;padding:32px}.confirm-icon{background:var(--bg-pale);color:var(--primary);display:flex;border:3px solid var(--border-dark);border-radius:20px;justify-content:center;align-items: center;width:64px;height:64px}.confirm-modal h2{color:var(--border-dark);text-transform:uppercase;margin:0;font-size:1.5rem;font-weight:900}.confirm-modal p{color:var(--text-muted);margin:0;font-weight:700;line-height:1.5}.confirm-actions{display:flex;flex-direction:column;gap:12px;width:100%}.btn-confirm,.btn-cancel{width:100%}.city-search-container{position:relative;width:100%}.city-search-input{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);transition:var(--transition);width:100%;padding:12px 16px;font-size:1rem}.city-search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.city-search-dropdown{position:absolute;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:2000;overflow-y:auto;animation:slideDown .2s ease-out;max-height:240px;top:calc(100% + 4px);left:0;right:0}.city-search-option{cursor:pointer;transition:var(--transition);border-bottom:1px solid var(--border);padding:12px 16px}.city-search-option:last-child{border-bottom:none}.city-search-option:hover{background:var(--primary-light)}.city-search-option-main{color:var(--text);font-weight:600}.city-search-option-sub{color:var(--text-muted);margin-top:2px;font-size:.75rem}.city-search-option.disabled{color:var(--text-muted);cursor:default;text-align:center;padding:20px}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.discovery-map-container{position:relative;z-index:1;display:block;background:#f0f0f0;flex:1;width:100%;height:100%;min-height:400px}.discovery-container{display:flex;position:relative;background:var(--background);flex-direction:column;width:100vw;height:100vh}.bottom-sheet{position:absolute;background:var(--surface);border-top:1px solid var(--border);border-radius:var(--radius-lg)var(--radius-lg)0 0;z-index:1000;box-shadow:var(--shadow-lg);animation:slideUp .3s cubic-bezier(.16,1,.3,1);padding:24px;bottom:0;left:0;right:0}.sheet-handle{background:var(--border);border-radius:10px;width:40px;height:4px;margin:0 auto 20px}.sheet-content h2{color:var(--secondary);margin:0 0 12px;font-size:1.5rem;font-weight:800}.caper-meta{display:flex;gap:8px;margin-bottom:20px}.badge{background:var(--primary-light);color:var(--primary);text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--accent);border-radius:100px;padding:6px 14px;font-size:.75rem;font-weight:700}.caper-description{color:var(--text-muted);margin-bottom:24px;line-height:1.6}.btn-logout-overlay{position:absolute;z-index:1001;background:var(--surface);border:1px solid var(--border);cursor:pointer;color:var(--text-muted);display:flex;box-shadow:var(--shadow-sm);transition:var(--transition);border-radius:50%;justify-content:center;align-items: center;width:44px;height:44px;top:20px;right:20px}.btn-logout-overlay:hover{color:var(--danger);border-color:var(--danger);box-shadow:var(--shadow-md)}.btn-location-overlay,.btn-radius-overlay{position:absolute;z-index:1001;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;color:var(--text);display:flex;box-shadow:var(--shadow-sm);transition:var(--transition);align-items: center;gap:8px;padding:8px 16px;font-weight:600;top:20px}.btn-location-overlay{left:20px}.btn-radius-overlay{left:180px}.btn-location-overlay:hover,.btn-radius-overlay:hover{border-color:var(--primary);color:var(--primary);box-shadow:var(--shadow-md)}.current-radius-pill{background:var(--primary-light);color:var(--primary);border-radius:10px;padding:2px 8px;font-size:.75rem}@media (max-width:500px){.btn-radius-overlay{top:75px;left:20px}}.radius-picker-overlay{position:absolute;backdrop-filter:blur(8px);z-index:2000;display:flex;background:#0f172a99;justify-content:center;align-items: center;padding:20px;inset:0}.radius-picker-card{background:var(--surface);box-shadow:var(--shadow-xl);position:relative;text-align:center;border-radius:24px;width:100%;max-width:400px;padding:32px}.radius-control{margin:32px 0}.radius-slider{background:var(--border);outline:none;-webkit-appearance:none;border-radius:3px;width:100%;height:6px}.radius-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--primary);cursor:pointer;box-shadow:var(--shadow-md);border:4px solid #fff;border-radius:50%;width:24px;height:24px}.radius-marks{display:flex;color:var(--text-muted);justify-content:space-between;margin-top:12px;font-size:.75rem}.btn-apply{background:var(--primary);color:#fff;cursor:pointer;transition:var(--transition);border:none;border-radius:12px;width:100%;padding:14px;font-weight:700}.btn-apply:active{transform:scale(.98)}.current-city-pill{font-size:.875rem}.btn-close-picker{position:absolute;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;padding:4px;top:16px;right:16px}.btn-close-picker:hover{color:var(--danger)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.city-picker-overlay{position:fixed;backdrop-filter:blur(8px);z-index:2000;display:flex;background:#0f172a99;justify-content:center;align-items: center;padding:20px;inset:0}.city-picker-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center;width:100%;max-width:400px;padding:32px}.city-picker-card h2{color:var(--secondary);margin:0 0 12px;font-weight:800}.city-picker-card p{color:var(--text-muted);margin-bottom:24px;line-height:1.5}.city-label{color:var(--primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;font-size:.75rem;font-weight:700}.no-capers-overlay{position:absolute;z-index:500;width:90%;max-width:300px;top:50%;left:50%;transform:translate(-50%,-50%)}.no-capers-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);text-align:center;border:1px solid var(--border);padding:32px 24px}.muted-icon{color:var(--text-muted);opacity:.5;margin-bottom:16px}.no-capers-card h3{color:var(--secondary);margin:0 0 8px;font-weight:800}.no-capers-card p{color:var(--text-muted);margin-bottom:20px;font-size:.875rem}.btn-change-city{background:var(--primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);border:none;padding:10px 20px;font-weight:700}.btn-change-city:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.navigation-view{display:flex;flex-direction:column;flex:1;align-items: center;gap:32px;padding:40px 24px}.compass-container{display:flex;flex-direction:column;align-items: center;gap:16px}.compass-ring{background:var(--surface);border:1px solid var(--border);display:flex;position:relative;box-shadow:var(--shadow-md);border-radius:50%;justify-content:center;align-items: center;width:220px;height:220px}.compass-needle{color:var(--primary);transform:rotate(var(--rotation,0deg));transition:transform .2s ease-out}.distance-label{background:var(--secondary);color:#fff;z-index:2;box-shadow:var(--shadow-sm);border-radius:100px;margin-top:-12px;padding:8px 24px;font-size:1.25rem;font-weight:700}.riddle-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);border-left:8px solid var(--primary);box-shadow:var(--shadow-sm);width:100%;padding:24px}.riddle-card h3{color:var(--primary);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;font-size:.85rem;font-weight:700}.riddle-card p{color:var(--text);margin:0;font-size:1.125rem;font-weight:500;line-height:1.5}.validation-hint{display:flex;color:var(--text-muted);justify-content:center;align-items: center;gap:6px;margin-top:12px;font-size:.8rem;font-weight:600}.navigation-actions{display:flex;flex-direction:column;gap:12px;width:100%}.file-input{display:none}.btn-capture{background:var(--success);color:#fff}.navigation-screen{display:flex;background:var(--background);flex-direction:column;width:100%;height:100%}.validation-overlay{position:fixed;backdrop-filter:blur(4px);display:flex;z-index:2000;color:#fff;background:#0f172acc;flex-direction:column;justify-content:center;align-items: center;gap:16px;width:100%;height:100%;font-weight:600;top:0;left:0}.loader{border:4px solid #ffffff4d;border-bottom-color:var(--primary);display:inline-block;box-sizing:border-box;animation:rotation 1s linear infinite;border-radius:50%;width:48px;height:48px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nav-header{background:var(--surface);border-bottom:1px solid var(--border);display:flex;box-shadow:var(--shadow-sm);justify-content:space-between;align-items: center;padding:16px 20px;font-weight:700}.btn-back{color:var(--text-muted);cursor:pointer;display:flex;transition:var(--transition);background:0 0;border:none;align-items: center}.btn-back:hover{color:var(--primary)}.review-modal-overlay{position:fixed;display:flex;z-index:2000;background:#2d1a0fcc;justify-content:center;align-items: center;width:100%;height:100%;padding:20px;top:0;left:0}.review-modal-content{background:var(--bg-cream);border:4px solid var(--border-dark);border-bottom:8px solid var(--border-dark);border-radius:var(--radius-lg);display:flex;position:relative;text-align:center;flex-direction:column;gap:16px;width:100%;max-width:400px;padding:32px 24px}.review-modal-content h2{margin:0;font-weight:900}.review-modal-content p{color:var(--text-muted);margin:0;font-weight:600}.review-modal-close{position:absolute;cursor:pointer;color:var(--text-muted);background:0 0;border:none;top:16px;right:16px}.star-rating{display:flex;justify-content:center;gap:8px;margin:8px 0}.star-button{cursor:pointer;background:0 0;border:none;padding:4px;transition:transform .1s}.star-button:hover{transform:scale(1.1)}.star-button:active{transform:scale(.9)}.review-modal-content textarea{background:var(--white);border:3px solid var(--border-dark);border-radius:var(--radius-md);resize:none;width:100%;padding:12px;font-family:inherit;font-size:1rem}.review-modal-content textarea:focus{outline:none;border-color:var(--primary)}.review-error{color:var(--error);margin:0;font-size:.9rem;font-weight:700}.summary-screen{background:var(--background);display:flex;overflow-y:auto;flex-direction:column;gap:24px;width:100%;height:100%;padding:40px 24px}.summary-hero{text-align:center}.summary-hero h1{color:var(--secondary);letter-spacing:-.025em;margin:16px 0 4px;font-weight:800}.secret-reveal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:24px}.secret-reveal h3{color:var(--primary);text-transform:uppercase;letter-spacing:.05em;margin:0 0 12px;font-size:.85rem;font-weight:700}.secret-text{color:var(--text);line-height:1.6}.summary-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;box-shadow:var(--shadow-sm);flex-direction:column;align-items: center;gap:8px;padding:20px}.stat-value{color:var(--primary);font-size:1.5rem;font-weight:800}.stat-label{color:var(--text-muted);text-transform:uppercase;font-size:.75rem;font-weight:600}.artifact-image-container{background:var(--background);border:1px solid var(--border);aspect-ratio:1;border-radius:var(--radius-md);display:flex;overflow:hidden;justify-content:center;align-items: center;width:100%}.artifact-img{object-fit:cover;width:100%;height:100%}.artifact-placeholder{background:var(--primary-light);color:var(--primary);aspect-ratio:1;border-radius:var(--radius-md);display:flex;justify-content:center;align-items: center;width:100%;font-size:1.5rem}.route-replay h3,.artifacts-section h3{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px;font-size:.85rem;font-weight:700}#summary-map{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);height:180px}.summary-actions{display:flex;flex-direction:column;gap:12px;margin-top:24px}.btn-share{background:var(--success);color:#fff}.btn-share:hover{filter:brightness(.9)}.review-thanks{display:flex;background:var(--surface);border:1px solid var(--success);border-radius:var(--radius-lg);color:var(--success);box-shadow:var(--shadow-sm);justify-content:center;align-items: center;gap:8px;padding:16px;font-weight:600}.artifacts-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.artifact-item{display:flex;flex-direction:column;align-items: center;gap:8px}.artifact-name{text-align:center;color:var(--text);font-size:.7rem;font-weight:600}:root{--primary:#0d9488;--primary-hover:#0f766e;--primary-light:#f0fdfa;--secondary:#0f172a;--accent:#2dd4bf;--background:#f8fafc;--surface:#fff;--text:#0f172a;--text-muted:#64748b;--border:#e2e8f0;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--transition:all .2s cubic-bezier(.4,0,.2,1)}.user-location-marker{display:flex;pointer-events:none;justify-content:center;align-items: center}.pulse-dot{z-index:2;background:#2563eb;border:2px solid #fff;border-radius:50%;width:12px;height:12px;box-shadow:0 0 4px #0000004d}.pulse-ring{position:absolute;animation:pulse-ring 2s infinite;z-index:1;background:#2563eb66;border-radius:50%;width:30px;height:30px}@keyframes pulse-ring{0%{transform:scale(.5);opacity:.8}80%,to{transform:scale(2.5);opacity:0}}*{box-sizing:border-box;-webkit-font-smoothing:antialiased}body{background-color:var(--background);color:var(--text);overflow:hidden;width:100vw;height:100vh;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif}#root{width:100vw;height:100vh}.app-container{display:flex;flex-direction:column;width:100vw;height:100vh}.btn-primary,.btn-start,.btn-verify{background:var(--primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);display:flex;border:none;justify-content:center;align-items: center;gap:10px;padding:12px 24px;font-size:1rem;font-weight:600}.btn-primary:hover,.btn-start:hover,.btn-verify:hover{background-color:var(--primary-hover);box-shadow:0 4px 12px #0d948833}.btn-outline{color:var(--text);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);display:flex;background:#fff;justify-content:center;align-items: center;padding:12px 24px;font-size:1rem;font-weight:600}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.btn-text{color:var(--text-muted);text-decoration:underline;cursor:pointer;background:0 0;border:none;font-weight:500}.logo-icon{color:var(--primary);margin-bottom:20px}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1)infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.scanning-text{color:var(--text-muted);margin-top:20px;font-weight:500}.modal-backdrop{position:absolute;cursor:default;background:0 0;border:none;width:100%;height:100%;padding:0;inset:0}
