:root{--bg-primary: #ffffff;--bg-secondary: #f8f9fa;--text-primary: #212529;--text-secondary: #6c757d;--accent: #2d6a4f;--accent-hover: #1b4332;--border: #dee2e6;--card-bg: #ffffff;--card-shadow: 0 2px 8px rgba(0, 0, 0, .08);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .2s;--duration-normal: .3s;--duration-slow: .4s}[data-theme=dark]{--bg-primary: #121212;--bg-secondary: #1e1e1e;--text-primary: #e9ecef;--text-secondary: #adb5bd;--accent: #40916c;--accent-hover: #52b788;--border: #343a40;--card-bg: #1e1e1e;--card-shadow: 0 2px 8px rgba(0, 0, 0, .3)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:auto}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;transition:background-color var(--duration-normal) var(--ease-smooth),color var(--duration-normal) var(--ease-smooth)}a{color:var(--accent);text-decoration:none;transition:color var(--duration-fast) var(--ease-smooth)}a:hover{color:var(--accent-hover)}.app{min-height:100vh;display:flex;flex-direction:column}.main{flex:1;max-width:1100px;margin:0 auto;padding:0 1.5rem;width:100%}.header{position:sticky;top:0;background-color:var(--bg-primary);border-bottom:1px solid var(--border);z-index:100;transition:background-color var(--duration-normal) var(--ease-smooth),border-color var(--duration-normal) var(--ease-smooth)}.nav{max-width:1100px;margin:0 auto;padding:1rem 1.5rem;display:flex;justify-content:space-between;align-items:center}.nav-logo{font-size:1.5rem;font-weight:700;color:var(--text-primary);transition:color var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-bounce)}.nav-logo:hover{transform:scale(1.02)}.nav-links{display:flex;align-items:center;gap:1.5rem}.nav-links a{color:var(--text-secondary);font-size:.95rem;position:relative;transition:color var(--duration-fast) var(--ease-smooth)}.nav-links a:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:2px;background-color:var(--accent);transition:width var(--duration-normal) var(--ease-smooth)}.nav-links a:hover{color:var(--accent)}.nav-links a:hover:after{width:100%}.theme-toggle{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.1rem;padding:.5rem;display:flex;align-items:center;justify-content:center;transition:color var(--duration-fast) var(--ease-smooth),transform var(--duration-normal) var(--ease-bounce)}.theme-toggle:hover{color:var(--accent);transform:rotate(15deg) scale(1.1)}.section{padding:5rem 0}.section-title{font-size:1.75rem;margin-bottom:2rem;color:var(--text-primary)}.about{padding-top:6rem}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}.about-content{text-align:left}.about-centered{text-align:center}.about-centered .about-description{margin-left:auto;margin-right:auto}.about-centered .about-links{justify-content:center}.about-name{font-size:3rem;font-weight:700;margin-bottom:.5rem;animation:fadeInUp .6s var(--ease-out) both}.about-role{font-size:1.25rem;color:var(--accent);margin-bottom:1.5rem;animation:fadeInUp .6s var(--ease-out) .1s both}.about-description{max-width:600px;margin-bottom:2rem;color:var(--text-secondary);font-size:1.1rem;animation:fadeInUp .6s var(--ease-out) .2s both}.about-links{display:flex;gap:1rem;flex-wrap:wrap;animation:fadeInUp .6s var(--ease-out) .3s both}.about-image{display:flex;justify-content:center;align-items:center;animation:fadeIn .8s var(--ease-out) .2s both}.about-image img{max-width:100%;max-height:400px;border-radius:12px;object-fit:cover;box-shadow:0 8px 32px #0000001f;transition:transform var(--duration-normal) var(--ease-smooth),box-shadow var(--duration-normal) var(--ease-smooth)}.about-image img:hover{transform:scale(1.02);box-shadow:0 12px 48px #00000026}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background-color:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.95rem;font-weight:500;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-bounce),box-shadow var(--duration-fast) var(--ease-smooth)}.btn:hover{background-color:var(--accent-hover);color:#fff;transform:translateY(-2px) scale(1.02);box-shadow:0 4px 12px #2d6a4f4d}.btn:active{transform:translateY(0) scale(.98)}.btn-outline{background-color:transparent;border:1px solid var(--border);color:var(--text-primary)}.btn-outline:hover{background-color:var(--bg-secondary);color:var(--text-primary);border-color:var(--accent);box-shadow:0 4px 12px #0000001a}.btn-small{padding:.5rem 1rem;font-size:.85rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem}.project-card{background-color:var(--card-bg);border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:var(--card-shadow);cursor:pointer;transition:transform var(--duration-normal) var(--ease-smooth),box-shadow var(--duration-normal) var(--ease-smooth),border-color var(--duration-fast) var(--ease-smooth)}.project-card:hover{transform:translateY(-6px);box-shadow:0 12px 32px #00000026;border-color:var(--accent)}.project-thumbnail{position:relative;width:100%;height:200px;overflow:hidden;background-color:var(--bg-secondary)}.project-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-smooth)}.project-card:hover .project-thumbnail img{transform:scale(1.05)}.project-thumbnail-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0000004d;transition:background-color var(--duration-fast) var(--ease-smooth)}.project-thumbnail-play svg{font-size:2.5rem;color:#fff;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transition:transform var(--duration-normal) var(--ease-bounce)}.project-card:hover .project-thumbnail-play{background:#0006}.project-card:hover .project-thumbnail-play svg{transform:scale(1.15)}.project-thumbnail-carousel{position:absolute;bottom:.75rem;right:.75rem;background:#0009;color:#fff;padding:.35rem .6rem;border-radius:16px;display:flex;align-items:center;gap:.35rem;font-size:.75rem}.project-media{position:relative;width:100%;height:200px;overflow:hidden;background-color:var(--bg-secondary);cursor:pointer}.project-media img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-smooth)}.project-card:hover .project-media img{transform:scale(1.05)}.media-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,transparent 50%);opacity:0;display:flex;align-items:flex-end;justify-content:center;padding-bottom:1rem;transition:opacity var(--duration-normal) var(--ease-smooth)}.project-card:hover .media-overlay{opacity:1}.media-overlay span{color:#fff;font-size:.85rem;font-weight:500;display:flex;align-items:center;gap:.5rem}.media-indicator{position:absolute;bottom:.75rem;right:.75rem;display:flex;gap:4px}.media-indicator span{width:6px;height:6px;border-radius:50%;background-color:#ffffff80}.media-indicator span.active{background-color:#fff}.video-thumbnail{width:100%;height:100%;background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--border) 100%);display:flex;align-items:center;justify-content:center}.video-thumbnail .play-icon{font-size:3rem;color:var(--accent);opacity:.8;transition:transform var(--duration-normal) var(--ease-bounce),opacity var(--duration-fast) var(--ease-smooth)}.project-card:hover .video-thumbnail .play-icon{transform:scale(1.1);opacity:1}.project-image{width:100%;height:200px;overflow:hidden;background-color:var(--bg-secondary)}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-slow) var(--ease-smooth)}.project-card:hover .project-image img{transform:scale(1.05)}.project-content{padding:1.25rem}.project-title{font-size:1.15rem;margin-bottom:.75rem;color:var(--text-primary)}.project-description{color:var(--text-secondary);font-size:.9rem;margin-bottom:1rem;line-height:1.5}.project-stack{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.project-links{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.project-links .btn-small{flex:0 0 auto;white-space:nowrap}.tag{display:inline-block;padding:.25rem .6rem;background-color:var(--bg-secondary);color:var(--text-secondary);border-radius:4px;font-size:.75rem;font-weight:500;transition:background-color var(--duration-fast) var(--ease-smooth),color var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-bounce)}.tag:hover{background-color:var(--accent);color:#fff;transform:translateY(-1px)}.project-stack .tag,.project-modal-stack .tag{cursor:default;pointer-events:none}.tag-large{padding:.5rem 1rem;font-size:.9rem}.skills-list{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.skill-tag{position:relative;cursor:pointer}.skill-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%) translateY(-4px);background-color:var(--text-primary);color:var(--bg-primary);padding:.75rem 1rem;border-radius:8px;font-size:.85rem;min-width:180px;max-width:280px;text-align:left;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-smooth);z-index:10}.skill-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--text-primary)}.skill-tag:hover .skill-tooltip{opacity:1;visibility:visible;transform:translate(-50%) translateY(-8px)}.skill-tooltip-list{list-style:none;margin:0;padding:0}.skill-tooltip-list li{position:relative;padding-left:1rem;line-height:1.5}.skill-tooltip-list li:before{content:"•";position:absolute;left:0;color:var(--accent)}#contact{text-align:center}.contact-text{color:var(--text-secondary);margin-bottom:1.5rem;font-size:1.1rem}.contact-details{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)}.contact-info{display:inline-flex;flex-direction:column;gap:.5rem}.contact-info-item{display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.95rem}.contact-info-icon{color:var(--accent);font-size:1.1rem;flex-shrink:0}.contact-info-text{color:var(--text-primary);font-family:monospace}.copy-btn{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:.35rem;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:color var(--duration-fast) var(--ease-smooth),background-color var(--duration-fast) var(--ease-smooth)}.copy-btn:hover{color:var(--accent);background-color:var(--border)}.copy-btn svg{font-size:.9rem}.contact-info-label{font-size:.7rem;text-transform:uppercase;color:var(--text-secondary);background-color:var(--bg-secondary);padding:.15rem .4rem;border-radius:4px;font-weight:500}.contact-modal{position:relative;background-color:var(--card-bg);border-radius:16px;max-width:480px;width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 64px #0000004d;transform:scale(.95) translateY(20px);transition:transform var(--duration-normal) var(--ease-bounce)}.modal-overlay.open .contact-modal{transform:scale(1) translateY(0)}.contact-modal-close{position:absolute;top:1rem;right:1rem;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);font-size:1rem;cursor:pointer;padding:.5rem;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;z-index:10;transition:background-color var(--duration-fast) var(--ease-smooth),color var(--duration-fast) var(--ease-smooth)}.contact-modal-close:hover{background:var(--border);color:var(--text-primary)}.contact-modal-content{padding:2rem}.contact-modal-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.contact-modal-subtitle{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.95rem}.contact-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.5rem;text-align:left}.form-group label{font-size:.85rem;font-weight:500;color:var(--text-primary)}.form-group input,.form-group textarea{padding:.75rem 1rem;border:1px solid var(--border);border-radius:8px;background-color:var(--bg-primary);color:var(--text-primary);font-size:.95rem;font-family:inherit;transition:border-color var(--duration-fast) var(--ease-smooth),box-shadow var(--duration-fast) var(--ease-smooth)}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2d6a4f26}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-secondary);opacity:.7}.form-group textarea{resize:vertical;min-height:100px}.contact-form-submit{margin-top:.5rem;width:100%;justify-content:center}.contact-form-submit:disabled{opacity:.7;cursor:not-allowed}.contact-form-error{color:#dc3545;font-size:.85rem;margin:0}.contact-form-success{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem 0}.contact-form-success .success-icon{width:60px;height:60px;background-color:var(--accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.75rem}.contact-form-success p{color:var(--text-primary);font-size:1.1rem;font-weight:500;margin:0}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner{animation:spin 1s linear infinite}.footer{padding:2rem 1.5rem;text-align:center;border-top:1px solid var(--border);color:var(--text-secondary);font-size:.9rem;transition:border-color var(--duration-normal) var(--ease-smooth)}.modal-overlay{position:fixed;inset:0;background-color:#000000e6;z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-normal) var(--ease-smooth),visibility var(--duration-normal) var(--ease-smooth)}.modal-overlay.open{opacity:1;visibility:visible;pointer-events:auto}.modal-content{position:relative;max-width:90vw;max-height:90vh;transform:scale(.95);transition:transform var(--duration-normal) var(--ease-bounce)}.modal-overlay.open .modal-content{transform:scale(1)}.modal-content img,.modal-content iframe{max-width:100%;max-height:85vh;border-radius:8px}.modal-content iframe{width:80vw;height:45vw;max-height:80vh;border:none}.modal-close{position:absolute;top:-40px;right:0;background:none;border:none;color:#fff;font-size:2rem;cursor:pointer;padding:.5rem;transition:transform var(--duration-fast) var(--ease-bounce),opacity var(--duration-fast) var(--ease-smooth)}.modal-close:hover{transform:scale(1.1);opacity:.8}.modal-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1a;border:none;color:#fff;font-size:1.5rem;padding:1rem .75rem;cursor:pointer;border-radius:4px;transition:background-color var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-bounce)}.modal-nav:hover{background:#fff3}.modal-nav.prev{left:-60px}.modal-nav.next{right:-60px}.modal-nav:hover{transform:translateY(-50%) scale(1.1)}.modal-counter{position:absolute;bottom:-30px;left:50%;transform:translate(-50%);color:#ffffffb3;font-size:.9rem}.project-modal{position:relative;background-color:var(--card-bg);border-radius:16px;max-width:700px;width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 24px 64px #0000004d;transform:scale(.95) translateY(20px);transition:transform var(--duration-normal) var(--ease-bounce)}.modal-overlay.open .project-modal{transform:scale(1) translateY(0)}.project-modal-close{position:absolute;top:1rem;right:1rem;background:#00000080;border:none;color:#fff;font-size:1.25rem;cursor:pointer;padding:.5rem;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;z-index:10;transition:background-color var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-bounce)}.project-modal-close:hover{background:#000000b3;transform:scale(1.1)}.project-modal-media{position:relative;width:100%;aspect-ratio:16 / 9;background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--border) 100%);overflow:hidden}.project-modal-media-content{position:relative;width:100%;height:100%;cursor:pointer;display:flex;align-items:center;justify-content:center}.project-modal-media-content img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-normal) var(--ease-smooth)}.project-modal-media-content:hover img{transform:scale(1.02)}.project-modal-media-content .video-thumbnail{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;color:var(--text-secondary);transition:color var(--duration-fast) var(--ease-smooth)}.project-modal-media-content .video-thumbnail .play-icon{font-size:3rem;color:var(--accent);transition:transform var(--duration-normal) var(--ease-bounce)}.project-modal-media-content:hover .video-thumbnail .play-icon{transform:scale(1.15)}.project-modal-play-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:70px;height:70px;background:#0009;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.75rem;transition:transform var(--duration-normal) var(--ease-bounce),background-color var(--duration-fast) var(--ease-smooth)}.project-modal-media-content:hover .project-modal-play-overlay{transform:translate(-50%,-50%) scale(1.1);background:#000000bf}.project-modal-carousel-overlay{position:absolute;bottom:1rem;right:1rem;background:#0009;color:#fff;padding:.4rem .75rem;border-radius:20px;display:flex;align-items:center;gap:.4rem;font-size:.85rem}.project-modal-media img{width:100%;height:100%;object-fit:cover}.project-modal-media iframe{width:100%;height:100%;border:none}.project-modal-nav{position:absolute;top:50%;transform:translateY(-50%);background:#00000080;border:none;color:#fff;font-size:1.25rem;padding:.75rem;cursor:pointer;border-radius:50%;transition:background-color var(--duration-fast) var(--ease-smooth),transform var(--duration-fast) var(--ease-bounce)}.project-modal-nav:hover{background:#000000b3;transform:translateY(-50%) scale(1.1)}.project-modal-nav.prev{left:1rem}.project-modal-nav.next{right:1rem}.project-modal-media-counter{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background:#0009;color:#fff;padding:.35rem .75rem;border-radius:20px;font-size:.8rem}.project-modal-content{padding:1.75rem}.project-modal-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:1rem}.project-modal-description{color:var(--text-secondary);font-size:1rem;line-height:1.7;margin-bottom:1.5rem}.project-modal-stack{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.project-modal-links{display:flex;gap:1rem;flex-wrap:wrap}.project-modal-links .btn{flex:0 1 auto;min-width:140px;max-width:50%;justify-content:center}@media(max-width:768px){.project-modal{max-width:95vw;max-height:95vh}.project-modal-content{padding:1.25rem}.project-modal-title{font-size:1.25rem}.project-modal-links .btn{flex:1 1 100%}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.scroll-animate{opacity:0;transform:translateY(12px);transition:opacity .35s var(--ease-out),transform .35s var(--ease-out)}.scroll-animate.visible{opacity:1;transform:translateY(0)}.scroll-animate-left{opacity:0;transform:translate(-12px);transition:opacity .35s var(--ease-out),transform .35s var(--ease-out)}.scroll-animate-left.visible{opacity:1;transform:translate(0)}.scroll-animate-right{opacity:0;transform:translate(12px);transition:opacity .35s var(--ease-out),transform .35s var(--ease-out)}.scroll-animate-right.visible{opacity:1;transform:translate(0)}.scroll-animate-scale{opacity:0;transform:scale(.97);transition:opacity .3s var(--ease-out),transform .3s var(--ease-out)}.scroll-animate-scale.visible{opacity:1;transform:scale(1)}.stagger-1{transition-delay:.03s}.stagger-2{transition-delay:.06s}.stagger-3{transition-delay:.09s}.stagger-4{transition-delay:.12s}@media(max-width:768px){.nav-links{gap:1rem}.nav-links a{font-size:.85rem}.about-grid{grid-template-columns:1fr;gap:2rem;text-align:center}.about-content{text-align:center;order:1}.about-image{order:0}.about-image img{max-height:300px}.about-links{justify-content:center}.about-name{font-size:2.25rem}.about-role{font-size:1.1rem}.about-description{font-size:1rem;margin-left:auto;margin-right:auto}.section{padding:3rem 0}.projects-grid{grid-template-columns:1fr}.modal-nav.prev{left:10px}.modal-nav.next{right:10px}}@media(max-width:480px){.nav-links a:not(:last-child){display:none}.about-name{font-size:1.75rem}.btn{padding:.6rem 1.2rem}}
