:root{--background:#0a0a0a;--foreground:#fafafa;--card:#1a1a1a;--card-foreground:#fafafa;--popover:#1a1a1a;--popover-foreground:#fafafa;--primary:#ffe0c2;--primary-foreground:#081a1b;--secondary:#393028;--secondary-foreground:#ffe0c2;--muted:#262626;--muted-foreground:#a3a3a3;--accent:#393028;--accent-foreground:#ffe0c2;--destructive:#ef4444;--destructive-foreground:#fafafa;--border:#262626;--input:#262626;--ring:#ffe0c2;--chart-1:#ffe0c2;--chart-2:#393028;--chart-3:#262626;--chart-4:#a3a3a3;--chart-5:#fafafa;--sidebar:#0f0f0f;--sidebar-foreground:#fafafa;--sidebar-primary:#ffe0c2;--sidebar-primary-foreground:#081a1b;--sidebar-accent:#393028;--sidebar-accent-foreground:#ffe0c2;--sidebar-border:#262626;--sidebar-ring:#ffe0c2;--font-sans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--radius:0.5rem;--shadow-2xs:0 1px 3px 0px #0000004d;--shadow-xs:0 1px 3px 0px #0000004d;--shadow-sm:0 1px 3px 0px #0006,0 1px 2px -1px #0006;--shadow:0 1px 3px 0px #0006,0 1px 2px -1px #0006;--shadow-md:0 1px 3px 0px #0006,0 2px 4px -1px #0006;--shadow-lg:0 1px 3px 0px #0006,0 4px 6px -1px #0006;--shadow-xl:0 1px 3px 0px #0006,0 8px 10px -1px #0006;--shadow-2xl:0 1px 3px 0px #0009;--tracking-normal:0em;--spacing:0.25rem}body{background-color:#0a0a0a;color:#fafafa;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin:0}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-family:var(--font-mono)}.header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0a0a0af2;border-bottom:1px solid var(--border);left:0;padding:1rem 0;position:fixed;right:0;top:0;transition:all .3s ease;z-index:1000}.header-container{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 2rem}.logo h2{color:var(--foreground);font-size:1.5rem;font-weight:700;margin:0}.nav,.nav-list{display:flex}.nav-list{gap:2rem;list-style:none;margin:0;padding:0}.nav-list li button{background:none;border:none;color:var(--foreground);cursor:pointer;font-size:1rem;font-weight:500;padding:.5rem 0;position:relative;transition:color .3s ease}.nav-list li button:hover{color:var(--primary)}.nav-list li button:after{background:var(--primary);bottom:0;content:"";height:2px;left:0;position:absolute;transition:width .3s ease;width:0}.nav-list li button:hover:after{width:100%}.menu-toggle{background:none;border:none;cursor:pointer;display:none;flex-direction:column;gap:.25rem;padding:.5rem}.menu-toggle span{background:var(--foreground);height:3px;transition:all .3s ease;width:25px}@media (max-width:768px){.menu-toggle{display:flex}.nav{background:var(--card);box-shadow:var(--shadow-lg);left:0;opacity:0;position:absolute;right:0;top:100%;transform:translateY(-100%);transition:all .3s ease;visibility:hidden}.nav-open{opacity:1;transform:translateY(0);visibility:visible}.nav-list{flex-direction:column;gap:1rem;padding:1rem 2rem}.nav-list li button{border-bottom:1px solid var(--border);padding:.75rem 0;text-align:left;width:100%}}.hero{align-items:center;background:linear-gradient(135deg,var(--background) 0,var(--card) 100%);color:var(--foreground);display:flex;min-height:100vh;overflow:hidden;position:relative}.hero:before{background:#0000004d;bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.hero-container{margin:0 auto;max-width:1200px;padding:0 2rem;position:relative;text-align:center;z-index:2}.hero-content{margin:0 auto 4rem;max-width:800px}.hero-title{animation:fadeInUp 1s ease forwards;font-size:3.5rem;font-weight:700;margin-bottom:1rem;opacity:0}.hero-tagline{animation:fadeInUp 1s ease .2s forwards;font-size:1.5rem;font-weight:300;margin-bottom:1.5rem;opacity:0}.hero-description{animation:fadeInUp 1s ease .4s forwards;font-size:1.1rem;line-height:1.6;margin-bottom:2rem;opacity:0}.hero-buttons{animation:fadeInUp 1s ease .6s forwards;display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;opacity:0}.btn{border-radius:50px}.btn-primary:hover{background:var(--secondary)}.btn-secondary{border:2px solid var(--foreground);color:var(--foreground)}.btn-secondary:hover{background:var(--foreground);box-shadow:var(--shadow-lg);color:var(--background)}.hero-stats{animation:fadeInUp 1s ease .8s forwards;display:flex;gap:4rem;justify-content:center;opacity:0}.stat{text-align:center}.stat h3{color:var(--primary);font-size:2.5rem;font-weight:700;margin-bottom:.5rem}.stat p{font-size:1rem;opacity:.9}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.hero-title{font-size:2.5rem}.hero-tagline{font-size:1.2rem}.hero-buttons{align-items:center;flex-direction:column}.btn{max-width:300px;width:100%}.hero-stats{flex-direction:column;gap:2rem}.stat h3{font-size:2rem}}.about{background:var(--muted);padding:5rem 0}.about-content{grid-gap:4rem;align-items:start;display:grid;gap:4rem;grid-template-columns:1fr 1fr}.about-text h3{color:var(--foreground);font-size:1.8rem;margin-bottom:1.5rem}.about-text p{color:var(--muted-foreground);font-size:1.1rem;line-height:1.6;margin-bottom:2rem}.company-info{display:flex;flex-direction:column;gap:1rem}.info-item{align-items:center;color:var(--muted-foreground);display:flex;font-size:1rem}.info-item strong{color:var(--foreground);margin-right:1rem;min-width:80px}.timeline h3{color:var(--foreground);font-size:1.8rem;margin-bottom:2rem}.timeline-container{position:relative}.timeline-container:before{background:var(--primary);bottom:0;content:"";left:30px;position:absolute;top:0;width:2px}.timeline-item{display:flex;margin-bottom:2rem;position:relative}.timeline-year{background:var(--primary);border-radius:25px;color:var(--primary-foreground);font-weight:600;margin-right:2rem;min-width:60px;padding:.5rem 1rem;position:relative;text-align:center;z-index:2}.timeline-content{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);flex:1 1;padding:1.5rem;position:relative}.timeline-content:before{border-bottom:10px solid #0000;border-right:10px solid var(--card);border-top:10px solid #0000;content:"";height:0;left:-10px;position:absolute;top:20px;width:0}.timeline-content h4{color:var(--foreground);font-size:1.2rem;margin-bottom:.5rem}.timeline-content p{color:var(--muted-foreground);line-height:1.5;margin:0}@media (max-width:768px){.about{padding:3rem 0}.section-header h2{font-size:2rem}.about-content{gap:2rem;grid-template-columns:1fr}.timeline-container:before{left:20px}.timeline-year{margin-right:1rem;min-width:50px;padding:.4rem .8rem}.timeline-content{padding:1rem}}.services{background:var(--background);padding:5rem 0}.services-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.service-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);overflow:hidden;padding:2rem;position:relative;text-align:center;transition:all .3s ease}.service-card:before{background:linear-gradient(90deg,#0000,var(--primary),#0000);content:"";height:100%;left:-100%;opacity:.1;position:absolute;top:0;transition:left .5s ease;width:100%}.service-card:hover:before{left:100%}.service-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-10px)}.service-icon{align-items:center;background:var(--primary);border-radius:50%;color:var(--primary-foreground);display:inline-block;display:flex;font-size:3rem;height:80px;justify-content:center;margin:0 auto 1.5rem;padding:1rem;width:80px}.service-card h3{color:var(--foreground);font-size:1.5rem;font-weight:600;margin-bottom:1rem}.service-card p{color:var(--muted-foreground);line-height:1.6;margin-bottom:1.5rem}.service-features{list-style:none;margin:0;padding:0}.service-features li{color:var(--muted-foreground);padding:.5rem 0 .5rem 1.5rem;position:relative}.service-features li:before{color:var(--primary);content:"✓";font-weight:700;left:0;position:absolute}@media (max-width:768px){.services{padding:3rem 0}.services-grid{gap:1.5rem;grid-template-columns:1fr}.service-card{padding:1.5rem}.service-icon{font-size:2.5rem;height:70px;width:70px}}.projects{background:var(--muted);padding:5rem 0}.filter-buttons{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center;margin-bottom:3rem}.filter-btn{background:var(--card);border:2px solid var(--border);border-radius:25px;color:var(--foreground);cursor:pointer;font-weight:500;padding:.75rem 1.5rem;transition:all .3s ease}.filter-btn.active,.filter-btn:hover{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.projects-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.project-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);cursor:pointer;overflow:hidden;transition:all .3s ease}.project-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-10px)}.project-image{height:250px;overflow:hidden;position:relative}.project-image img{height:100%;object-fit:cover;transition:transform .3s ease;width:100%}.project-card:hover .project-image img{transform:scale(1.1)}.project-overlay{align-items:center;background:var(--primary);bottom:0;display:flex;justify-content:center;left:0;opacity:.9;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.project-card:hover .project-overlay{opacity:1}.view-project-btn{background:var(--primary-foreground);border:none;border-radius:25px;color:var(--primary);cursor:pointer;font-weight:600;padding:1rem 2rem;transform:translateY(20px);transition:transform .3s ease}.project-card:hover .view-project-btn{transform:translateY(0)}.project-info{padding:1.5rem}.project-category{background:var(--primary);border-radius:15px;color:var(--primary-foreground);display:inline-block;font-size:.8rem;font-weight:500;margin-bottom:1rem;padding:.25rem .75rem}.project-info h3{color:var(--foreground);font-size:1.3rem;margin-bottom:.75rem}.project-info p{color:var(--muted-foreground);line-height:1.6;margin-bottom:1rem}.project-tech{display:flex;flex-wrap:wrap;gap:.5rem}.tech-tag{background:var(--muted);border-radius:15px;color:var(--foreground);font-size:.8rem;font-weight:500;padding:.25rem .75rem}.modal-overlay{align-items:center;background:#000c;bottom:0;display:flex;justify-content:center;left:0;padding:2rem;position:fixed;right:0;top:0;z-index:2000}.modal-content{background:var(--card);border-radius:var(--radius);max-height:90vh;max-width:800px;overflow-y:auto;position:relative;width:100%}.modal-close{background:none;border:none;color:var(--muted-foreground);cursor:pointer;font-size:2rem;position:absolute;right:1rem;top:1rem;z-index:1}.modal-close:hover{color:var(--destructive)}.modal-header{padding:2rem 2rem 1rem}.modal-header h2{color:var(--foreground);font-size:2rem;margin-bottom:1rem}.project-meta{display:flex;gap:1rem}.project-meta .category{background:var(--primary);color:var(--primary-foreground)}.project-meta .category,.project-meta .status{border-radius:20px;font-size:.9rem;padding:.5rem 1rem}.project-meta .status{background:var(--secondary);color:var(--secondary-foreground)}.modal-body{padding:0 2rem 2rem}.modal-body img{border-radius:10px;height:300px;margin-bottom:2rem;object-fit:cover;width:100%}.project-details p{color:var(--muted-foreground);line-height:1.6;margin-bottom:2rem}.detail-section{margin-bottom:2rem}.detail-section h4{color:var(--foreground);font-size:1.2rem;margin-bottom:1rem}.tech-list{display:flex;flex-wrap:wrap;gap:.5rem}.detail-section ul{list-style:none;padding:0}.detail-section ul li{color:var(--muted-foreground);padding:.5rem 0 .5rem 1.5rem;position:relative}.detail-section ul li:before{color:var(--primary);content:"•";font-weight:700;left:0;position:absolute}.project-links{display:flex;flex-wrap:wrap;gap:1rem}@media (max-width:768px){.projects{padding:3rem 0}.projects-grid{gap:1.5rem;grid-template-columns:1fr}.project-card{margin:0 1rem}.modal-overlay{padding:1rem}.modal-body,.modal-header{padding:1.5rem}.modal-header h2{font-size:1.5rem}.project-meta{gap:.5rem}.project-links,.project-meta{flex-direction:column}.project-links .btn{text-align:center}}.team{background:var(--background);padding:5rem 0}.team-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.team-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);overflow:hidden;padding:2rem;position:relative;text-align:center;transition:all .3s ease}.team-card:before{background:linear-gradient(90deg,#0000,var(--primary),#0000);content:"";height:100%;left:-100%;opacity:.05;position:absolute;top:0;transition:left .5s ease;width:100%}.team-card:hover:before{left:100%}.team-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-10px)}.team-avatar{align-items:center;background:var(--primary);border:4px solid var(--secondary);border-radius:50%;display:flex;height:120px;justify-content:center;margin:0 auto 1.5rem;overflow:hidden;position:relative;transition:all .3s ease;width:120px}.team-card:hover .team-avatar{border-color:var(--primary);box-shadow:0 0 20px #ffe0c24d;transform:scale(1.05)}.avatar-initials{color:var(--primary-foreground);font-size:2.5rem;font-weight:700;line-height:1;text-align:center}.team-info h3{color:var(--foreground);font-size:1.5rem;font-weight:600;margin-bottom:.5rem}.team-role{color:var(--primary);font-size:1.1rem;font-weight:600;margin-bottom:1rem}.team-bio{color:var(--muted-foreground);line-height:1.6;margin-bottom:1.5rem}.team-skills{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:1.5rem}.skill-tag{background:var(--muted);border-radius:15px;color:var(--foreground);font-size:.8rem;font-weight:500;padding:.25rem .75rem}.team-links{gap:1rem}.social-link,.team-links{display:flex;justify-content:center}.social-link{align-items:center;background:var(--primary);border-radius:50%;color:var(--primary-foreground);height:40px;text-decoration:none;transition:all .3s ease;width:40px}.social-link:hover{background:var(--secondary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.social-link svg{height:20px;width:20px}@media (max-width:768px){.team{padding:3rem 0}.team-grid{gap:1.5rem;grid-template-columns:1fr}.team-card{margin:0 1rem;padding:1.5rem}.team-avatar{height:100px;width:100px}.avatar-initials{font-size:2rem}.team-info h3{font-size:1.3rem}.team-skills{justify-content:center}}.testimonials{background:var(--muted);padding:5rem 0}.testimonials-grid{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.testimonial-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:2rem;position:relative;transition:all .3s ease}.testimonial-card:hover{box-shadow:var(--shadow-xl);transform:translateY(-5px)}.testimonial-content{margin-bottom:2rem;position:relative}.quote-icon{color:var(--primary);font-family:serif;font-size:4rem;left:-.5rem;opacity:.3;position:absolute;top:-1rem}.testimonial-content p{color:var(--muted-foreground);font-size:1.1rem;font-style:italic;line-height:1.6;margin:0;padding-left:2rem}.testimonial-author{align-items:center;display:flex;justify-content:space-between}.author-info h4{color:var(--foreground);font-size:1.1rem;margin:0 0 .25rem}.author-info p{color:var(--muted-foreground);font-size:.9rem;margin:0}.rating{display:flex;gap:.25rem}.star{color:var(--border);font-size:1.2rem;transition:color .3s ease}.star.filled{color:var(--secondary)}@media (max-width:768px){.testimonials{padding:3rem 0}.testimonials-grid{gap:1.5rem;grid-template-columns:1fr}.testimonial-card{margin:0 1rem;padding:1.5rem}.quote-icon{font-size:3rem;top:-.5rem}.testimonial-content p{font-size:1rem;padding-left:1.5rem}.testimonial-author{align-items:flex-start;flex-direction:column;gap:1rem}}.contact{background:var(--background);padding:5rem 0}.contact-content{grid-gap:4rem;display:grid;gap:4rem;grid-template-columns:1fr 1fr}.contact-info h3{color:var(--foreground);font-size:1.8rem;margin-bottom:2rem}.contact-item{align-items:flex-start;display:flex;gap:1rem;margin-bottom:2rem}.contact-icon{align-items:center;background:var(--primary);border-radius:50%;color:var(--primary-foreground);display:flex;height:50px;justify-content:center;min-width:50px;padding:1rem}.contact-item div h4{color:var(--foreground);font-size:1.1rem;margin-bottom:.5rem}.contact-item div p{color:var(--muted-foreground);line-height:1.5;margin:0}.social-links{margin-top:2rem}.social-links h4{color:var(--foreground);margin-bottom:1rem}.social-icons{display:flex;gap:1rem}.social-icons a{align-items:center;background:var(--primary);border-radius:50%;color:var(--primary-foreground);display:flex;height:45px;justify-content:center;text-decoration:none;transition:all .3s ease;width:45px}.social-icons a:hover{background:var(--secondary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.contact-form h3{color:var(--foreground);font-size:1.8rem;margin-bottom:2rem}.form-group{margin-bottom:1.5rem}.form-group input,.form-group textarea{background:var(--input);border:2px solid var(--border);border-radius:var(--radius);color:var(--foreground);font-family:inherit;font-size:1rem;padding:1rem;transition:all .3s ease;width:100%}.form-group input:focus,.form-group textarea:focus{border-color:var(--ring);box-shadow:0 0 0 3px var(--ring);opacity:.1;outline:none}.form-group textarea{min-height:120px;resize:vertical}.success-message{background:var(--secondary);border:1px solid var(--border);border-radius:var(--radius);color:var(--secondary-foreground);padding:2rem;text-align:center}.success-message h4{color:var(--secondary-foreground);margin-bottom:.5rem}.success-message p{margin:0}@media (max-width:768px){.contact{padding:3rem 0}.contact-content{gap:2rem;grid-template-columns:1fr}.contact-form h3,.contact-info h3{font-size:1.5rem}.contact-item{margin-bottom:1.5rem}.contact-icon{height:45px;min-width:45px;padding:.75rem}.social-icons{justify-content:center}.form-group input,.form-group textarea{padding:.875rem}}.footer{background:var(--card);color:var(--foreground);padding:3rem 0 1rem}.footer-content{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:2rem}.footer-section h3,.footer-section h4{color:var(--foreground);margin-bottom:1rem}.footer-section h3{color:var(--primary);font-size:1.5rem}.footer-section h4{font-size:1.2rem}.footer-section p{color:var(--muted-foreground);line-height:1.6;margin-bottom:.5rem}.footer-section ul{list-style:none;margin:0;padding:0}.footer-section ul li{margin-bottom:.5rem}.footer-section ul li a{color:var(--muted-foreground);text-decoration:none;transition:color .3s ease}.footer-section ul li a:hover{color:var(--primary)}.footer-section .social-links{display:flex;flex-wrap:wrap;gap:1rem}.footer-section .social-links a{border-radius:5px;color:var(--muted-foreground);padding:.5rem;text-decoration:none;transition:all .3s ease}.footer-section .social-links a:hover{background:var(--primary);color:var(--primary);opacity:.1}.footer-bottom{align-items:center;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;padding-top:2rem}.footer-bottom p{color:var(--muted-foreground);margin:0}.back-to-top{background:var(--primary);border:none;border-radius:25px;color:var(--primary-foreground);cursor:pointer;font-size:.9rem;font-weight:500;padding:.75rem 1.5rem;transition:all .3s ease}.back-to-top:hover{background:var(--secondary);transform:translateY(-2px)}@media (max-width:768px){.footer{padding:2rem 0 1rem}.footer-content{gap:1.5rem;grid-template-columns:1fr;text-align:center}.footer-section .social-links{justify-content:center}.footer-bottom{flex-direction:column;gap:1rem;text-align:center}.back-to-top{order:-1}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--background);color:var(--foreground);font-family:var(--font-sans);line-height:1.6}.App{overflow-x:hidden}.container{margin:0 auto;max-width:1200px;padding:0 2rem}.section-header{margin-bottom:3rem;text-align:center}.section-header h2{color:var(--foreground);font-size:2.5rem;font-weight:700;margin-bottom:1rem;position:relative}.section-header h2:after{background:var(--primary);border-radius:2px;bottom:-.5rem;content:"";height:3px;left:50%;position:absolute;transform:translateX(-50%);width:60px}.section-header p{color:var(--muted-foreground);font-size:1.1rem;line-height:1.6;margin:0 auto;max-width:600px}.btn{border:none;border-radius:var(--radius);cursor:pointer;display:inline-block;font-family:inherit;font-size:1rem;font-weight:600;padding:1rem 2rem;text-align:center;text-decoration:none;transition:all .3s ease}.btn-primary{background:var(--primary);box-shadow:var(--shadow-md);color:var(--primary-foreground)}.btn-primary:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.btn-secondary{background:#0000;border:2px solid var(--primary);color:var(--primary)}.btn-secondary:hover{background:var(--primary);box-shadow:var(--shadow-md);color:var(--primary-foreground);transform:translateY(-2px)}@media (max-width:768px){.container{padding:0 1rem}.section-header h2{font-size:2rem}.section-header p{font-size:1rem}.btn{font-size:.9rem;padding:.875rem 1.5rem}}section{scroll-margin-top:80px}img{height:auto;max-width:100%;transition:opacity .3s ease}a:focus,button:focus,input:focus,textarea:focus{outline:2px solid var(--ring);outline-offset:2px}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--muted)}::-webkit-scrollbar-thumb{background:var(--primary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--secondary)}
/*# sourceMappingURL=main.553a7506.css.map*/