@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes scrollDown{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(12px)}}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.fade-in{animation:fadeIn .8s forwards}.fade-in-up{animation:fadeInUp 1s ease-out}.slide-in-left{animation:slideInLeft 1.5s ease-in-out}:root{--color-white: #ffffff;--color-light-grey: #f5f5f7;--color-grey: #d2d2d7;--color-medium-grey: #86868b;--color-dark-grey: #424245;--color-black: #1d1d1f;--color-text-primary: #1d1d1f;--color-text-secondary: #86868b;--color-text-tertiary: #a1a1a6;--color-background: #ffffff;--color-background-secondary: #f5f5f7;--color-background-tertiary: #fafafa;--color-border: #d2d2d7;--color-border-light: rgba(0, 0, 0, .08);--color-accent: #0071e3;--color-accent-hover: #0077ed;--color-accent-tint: rgba(0, 113, 227, .1);--color-success: #30d158;--color-warning: #ff9500;--color-error: #ff3b30;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--spacing-3xl: 6rem;--shadow-1: 0 1px 3px rgba(0, 0, 0, .12);--shadow-2: 0 4px 12px rgba(0, 0, 0, .08);--shadow-3: 0 8px 24px rgba(0, 0, 0, .12);--shadow-4: 0 16px 48px rgba(0, 0, 0, .16);--shadow-focus: 0 0 0 4px var(--color-accent-tint);--material-ultrathin: rgba(255, 255, 255, .5);--material-thin: rgba(255, 255, 255, .72);--material-regular: rgba(255, 255, 255, .85);--material-thick: rgba(255, 255, 255, .95);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 18px;--radius-pill: 980px;--transition-fast: .15s cubic-bezier(.25, .46, .45, .94);--transition-base: .3s cubic-bezier(.25, .46, .45, .94);--transition-slow: .5s cubic-bezier(.25, .46, .45, .94);--transition-spring: .4s cubic-bezier(.34, 1.56, .64, 1)}@media (prefers-color-scheme: dark){:root{--color-text-primary: #f5f5f7;--color-text-secondary: #a1a1a6;--color-text-tertiary: #86868b;--color-background: #000000;--color-background-secondary: #1d1d1f;--color-background-tertiary: #2c2c2e;--color-border: #424245;--color-border-light: rgba(255, 255, 255, .12);--color-accent-tint: rgba(0, 113, 227, .2);--material-ultrathin: rgba(30, 30, 30, .5);--material-thin: rgba(30, 30, 30, .72);--material-regular: rgba(30, 30, 30, .85);--material-thick: rgba(30, 30, 30, .95);--shadow-1: 0 1px 3px rgba(0, 0, 0, .3);--shadow-2: 0 4px 12px rgba(0, 0, 0, .25);--shadow-3: 0 8px 24px rgba(0, 0, 0, .3);--shadow-4: 0 16px 48px rgba(0, 0, 0, .4)}}body.light-theme{--color-text-primary: #1d1d1f;--color-text-secondary: #86868b;--color-text-tertiary: #a1a1a6;--color-background: #ffffff;--color-background-secondary: #f5f5f7;--color-background-tertiary: #fafafa;--color-border: #d2d2d7;--color-border-light: rgba(0, 0, 0, .08);--color-accent-tint: rgba(0, 113, 227, .1);--material-ultrathin: rgba(255, 255, 255, .5);--material-thin: rgba(255, 255, 255, .72);--material-regular: rgba(255, 255, 255, .85);--material-thick: rgba(255, 255, 255, .95)}body.dark-theme{--color-text-primary: #f5f5f7;--color-text-secondary: #a1a1a6;--color-text-tertiary: #86868b;--color-background: #000000;--color-background-secondary: #1d1d1f;--color-background-tertiary: #2c2c2e;--color-border: #424245;--color-border-light: rgba(255, 255, 255, .12);--color-accent-tint: rgba(0, 113, 227, .2);--material-ultrathin: rgba(30, 30, 30, .5);--material-thin: rgba(30, 30, 30, .72);--material-regular: rgba(30, 30, 30, .85);--material-thick: rgba(30, 30, 30, .95);--shadow-1: 0 1px 3px rgba(0, 0, 0, .3);--shadow-2: 0 4px 12px rgba(0, 0, 0, .25);--shadow-3: 0 8px 24px rgba(0, 0, 0, .3);--shadow-4: 0 16px 48px rgba(0, 0, 0, .4)}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--color-background);color:var(--color-text-primary);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;overflow-x:hidden;transition:background-color var(--transition-base),color var(--transition-base)}*:focus{outline:none}*:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}button:focus-visible,a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.bold-black-text{color:var(--color-black);font-weight:700}.navbar{position:fixed;top:0;width:100%;z-index:1030;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);background-color:var(--material-thin);border-bottom:.5px solid var(--color-border-light);transition:all .3s cubic-bezier(.25,.46,.45,.94)}.navbar-light .navbar-nav .nav-link{color:var(--color-text-primary)}.navbar-light .navbar-nav .nav-link:hover{color:var(--color-text-secondary)}.custom-toggler .navbar-toggler-icon{display:none}.custom-toggler .fa-bars{color:var(--color-black)}.button-primary{background-color:var(--color-accent);color:var(--color-white);border:none;padding:.75rem 1.5rem;border-radius:var(--radius-pill);font-size:1rem;font-weight:400;cursor:pointer;transition:all var(--transition-base);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);position:relative;overflow:hidden}.button-primary:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.15),transparent);opacity:0;transition:opacity var(--transition-fast)}.button-primary:hover{background-color:var(--color-accent-hover);transform:scale(1.02);box-shadow:var(--shadow-3),0 0 20px #0071e333}.button-primary:hover:before{opacity:1}.button-primary:active{transform:scale(.98);box-shadow:var(--shadow-1)}.button-primary:focus-visible{box-shadow:var(--shadow-focus)}.button-secondary{background-color:transparent;color:var(--color-accent);border:2px solid var(--color-accent);padding:.75rem 1.5rem;border-radius:var(--radius-pill);font-size:1rem;font-weight:400;cursor:pointer;transition:all var(--transition-base);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.button-secondary:hover{background-color:var(--color-accent);color:var(--color-white);transform:scale(1.02)}.button-secondary:active{transform:scale(.98)}.button-secondary:focus-visible{box-shadow:var(--shadow-focus)}.button-tinted{background-color:var(--color-accent-tint);color:var(--color-accent);border:none;padding:.75rem 1.5rem;border-radius:var(--radius-pill);font-size:1rem;font-weight:500;cursor:pointer;transition:all var(--transition-base);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.button-tinted:hover{background-color:var(--color-accent);color:var(--color-white);transform:scale(1.02)}.button-tinted:active{transform:scale(.98)}.button-tinted:focus-visible{box-shadow:var(--shadow-focus)}.button-plain{background:none;color:var(--color-accent);border:none;padding:.5rem 1rem;border-radius:var(--radius-md);font-size:1rem;font-weight:400;cursor:pointer;transition:all var(--transition-fast);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.button-plain:hover{background-color:var(--color-accent-tint)}.button-plain:active{transform:scale(.95)}.button-plain:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.button-icon{background:var(--material-thin);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);color:var(--color-text-primary);border:1px solid var(--color-border-light);padding:.75rem;border-radius:50%;width:44px;height:44px;cursor:pointer;transition:all var(--transition-base);text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.button-icon:hover{background:var(--color-white);color:var(--color-accent);transform:scale(1.08);box-shadow:var(--shadow-2)}.button-icon:active{transform:scale(1)}.button-icon:focus-visible{box-shadow:var(--shadow-focus)}.alert-error{background-color:var(--color-black);color:var(--color-white);padding:1rem;border-radius:.25rem}.alert-warning{background-color:var(--color-dark-grey);color:var(--color-white);padding:1rem;border-radius:.25rem}.alert-info{background-color:var(--color-medium-grey);color:var(--color-black);padding:1rem;border-radius:.25rem}.jumbotron{background:linear-gradient(135deg,#f5f5f7,#fff);color:var(--color-text-primary);padding:8rem 2rem 6rem;margin-bottom:0;margin-top:0;min-height:90vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden}.text-title-large{font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1.1;letter-spacing:-.025em;color:var(--color-text-primary)}.text-title{font-size:clamp(2rem,4vw,3rem);font-weight:600;line-height:1.2;letter-spacing:-.02em;color:var(--color-text-primary)}.text-headline{font-size:clamp(1.5rem,3vw,2rem);font-weight:600;line-height:1.3;letter-spacing:-.015em;color:var(--color-text-primary)}.text-body-large{font-size:1.25rem;font-weight:400;line-height:1.6;color:var(--color-text-primary)}.text-body{font-size:1rem;font-weight:400;line-height:1.5;color:var(--color-text-primary)}.text-caption{font-size:.875rem;font-weight:300;line-height:1.4;color:var(--color-text-secondary)}.text-small{font-size:.75rem;font-weight:400;line-height:1.3;color:var(--color-text-tertiary)}.section-title{font-size:clamp(2.25rem,4vw,3rem);font-weight:700;margin-top:0;margin-bottom:0;letter-spacing:-.015em;text-align:center;color:var(--color-text-primary);padding:0}@media (max-width: 768px){.section-title{font-size:2.25rem;margin-bottom:0}.container{padding:0 24px}.section{padding:5rem 0}}@media (max-width: 480px){.section-title{font-size:2rem;letter-spacing:-.02em}.container{padding:0 20px}.section{padding:4rem 0}}.container{max-width:1200px;margin:0 auto;padding:0 20px;width:100%}.section{padding:6rem 0;width:100%}.section:nth-child(2n){background-color:var(--color-light-grey)}.section .container{max-width:1200px;margin:0 auto;padding:0 20px}.project-card{margin-bottom:1.5rem;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 4px 16px #00000014;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:1px solid rgba(0,0,0,.05)}.project-card:hover{transform:translateY(-8px);box-shadow:0 12px 32px #0000001f}.contact-form{background-color:var(--color-white);padding:2rem;border-radius:18px;border:1px solid rgba(0,0,0,.08);box-shadow:0 4px 16px #0000000f}.contact-form input,.contact-form textarea{border:1px solid var(--color-border);border-radius:10px;padding:.875rem 1rem;font-size:1rem;transition:all .3s ease;background:var(--color-light-grey)}.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--color-accent);background:#fff;box-shadow:0 0 0 4px #0071e31a}.contact-form button{margin-top:1rem}.animated-title{animation:fadeIn 2s ease-in-out}.animated-subtitle{animation:fadeIn 2s ease-in-out;animation-delay:1s;animation-fill-mode:both}.container-fluid{width:100%;padding-left:var(--spacing-sm);padding-right:var(--spacing-sm)}.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)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.p-xl{padding:var(--spacing-xl)}.glass{background:var(--material-thin);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border:1px solid var(--color-border-light)}.glass-thick{background:var(--material-thick);-webkit-backdrop-filter:saturate(180%) blur(30px);backdrop-filter:saturate(180%) blur(30px);border:1px solid var(--color-border-light)}.shadow-1{box-shadow:var(--shadow-1)}.shadow-2{box-shadow:var(--shadow-2)}.shadow-3{box-shadow:var(--shadow-3)}.shadow-4{box-shadow:var(--shadow-4)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-circle{border-radius:50%}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-accent{color:var(--color-accent)}.bg-primary{background-color:var(--color-background)}.bg-secondary{background-color:var(--color-background-secondary)}.bg-tertiary{background-color:var(--color-background-tertiary)}.bg-accent{background-color:var(--color-accent);color:#fff}.interactive{transition:transform var(--transition-fast),box-shadow var(--transition-fast);cursor:pointer}.interactive:hover{transform:translateY(-2px);box-shadow:var(--shadow-3)}.interactive:active{transform:translateY(0);box-shadow:var(--shadow-1)}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}::selection{background-color:var(--color-accent);color:#fff}::-moz-selection{background-color:var(--color-accent);color:#fff}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--color-background-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--color-medium-grey)}.loading{position:relative;pointer-events:none;opacity:.6}.loading:after{content:"";position:absolute;top:50%;left:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid var(--color-accent);border-radius:50%;border-top-color:transparent;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skip-to-main{position:absolute;top:-40px;left:0;background:var(--color-accent);color:#fff;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);text-decoration:none;z-index:9999}.skip-to-main:focus{top:var(--spacing-sm);outline:2px solid white;outline-offset:2px}
