*{box-sizing:border-box;margin:0;padding:0}:root{--primary-bg:#4d9de0;--content-bg:#f4f1de;--content-bg-secondary:#e7cba9;--text-primary:#1e3f66;--accent-color:#ff6b35;--border-color:#000;--shadow-color:#000;--font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--font-weight-regular:400;--font-weight-bold:700;--line-height-body:1.6;--spacing-xs:8px;--spacing-sm:16px;--spacing-md:24px;--spacing-lg:32px;--spacing-xl:48px;--spacing-xxl:60px;--border-width:4px;--border-style:solid;--shadow-offset:8px;--shadow-hover-offset:4px;--transition-fast:0.2s ease;--transition-medium:0.3s ease-in-out}html{scroll-behavior:smooth}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#4d9de0;background-color:var(--primary-bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-family:var(--font-family);font-weight:400;font-weight:var(--font-weight-regular);line-height:1.6;line-height:var(--line-height-body);margin:0}body,h1,h2,h3,h4,h5,h6{color:#1e3f66;color:var(--text-primary)}h1,h2,h3,h4,h5,h6{font-weight:700;font-weight:var(--font-weight-bold);line-height:1.2}h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:2rem}h4{font-size:1.5rem}h5{font-size:1.3rem}h6{font-size:1.1rem}p{font-size:1rem;line-height:1.6;line-height:var(--line-height-body);margin-bottom:16px;margin-bottom:var(--spacing-sm)}a{color:#1e3f66;color:var(--text-primary);text-decoration:none;transition:color .2s ease;transition:color var(--transition-fast)}a:hover{color:#ff6b35;color:var(--accent-color)}.btn,button{background-color:#ff6b35;background-color:var(--accent-color);border:4px solid #000;border:var(--border-width) var(--border-style) var(--border-color);box-shadow:8px 8px 0 #000;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-family:var(--font-family);font-weight:700;font-weight:var(--font-weight-bold);letter-spacing:1px;padding:16px 24px;padding:var(--spacing-sm) var(--spacing-md);text-transform:uppercase;transition:all .3s ease-in-out;transition:all var(--transition-medium)}.btn:hover,button:hover{box-shadow:4px 4px 0 #000;box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(4px,4px);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.card{background-color:#f4f1de;background-color:var(--content-bg);border:4px solid #000;border:var(--border-width) var(--border-style) var(--border-color);box-shadow:8px 8px 0 #000;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);padding:32px;padding:var(--spacing-lg);transition:all .3s ease-in-out;transition:all var(--transition-medium)}.card:hover{box-shadow:4px 4px 0 #000;box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(4px,4px);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}@media screen and (max-width:768px){h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.5rem}p{font-size:.9rem}}@media screen and (max-width:480px){h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.3rem}p{font-size:.85rem}.btn,button{font-size:.9rem;padding:16px;padding:var(--spacing-sm)}}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app{background-color:var(--primary-bg);min-height:100vh}#background,canvas{display:none!important}.navbar{border-bottom:var(--border-width) var(--border-style) var(--border-color);box-shadow:0 var(--shadow-offset) 0 var(--shadow-color);padding:var(--spacing-md) 0;top:0;z-index:999}.navbar,.sidebar{background-color:var(--content-bg);position:sticky}.sidebar{align-self:start;border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);height:90vh;padding:var(--spacing-lg);top:100px;width:280px}.sidebar__title{font-size:1.2rem;letter-spacing:1px;margin-bottom:var(--spacing-md);text-transform:uppercase}.sidebar__list{display:flex;flex-direction:column;gap:var(--spacing-sm);list-style:none}.sidebar__button{align-items:center;background-color:#fff;border:var(--border-width) var(--border-style) #0000;box-shadow:2px 2px 0 var(--shadow-color);color:var(--text-primary);display:flex;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-fast)}.sidebar__button:hover{border-color:var(--border-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.sidebar__button--active{background-color:#4d9de01a;border-color:var(--accent-color)}.sidebar__badge{background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);color:#fff;font-size:.75rem;padding:2px 8px}.sidebar__toggle{bottom:var(--spacing-md);display:none;position:fixed;right:var(--spacing-md);z-index:1001}.sidebar__overlay{display:none}@media screen and (max-width:992px){.sidebar{background-color:var(--content-bg);border:none;border-right:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) 0 0 var(--shadow-color);height:100vh;left:-100%;padding:var(--spacing-xl) var(--spacing-lg);position:fixed;top:0;transition:left var(--transition-medium);width:min(86vw,340px);z-index:1002}.sidebar.sidebar--open{left:0}.sidebar__toggle{align-items:center;bottom:var(--spacing-md);display:inline-flex;justify-content:center;position:fixed;right:var(--spacing-md);z-index:1003}.sidebar__overlay{background:#00000080;display:block;inset:0;position:fixed;z-index:1001}}.navbar__container{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 var(--spacing-lg)}#navbar__logo{color:var(--text-primary);font-size:1.5rem;font-weight:var(--font-weight-bold);gap:var(--spacing-sm);letter-spacing:2px;text-transform:uppercase}#navbar__logo,.navbar__menu{align-items:center;display:flex}.navbar__menu{gap:var(--spacing-md);list-style:none}.navbar__item{position:relative}.navbar__links{border:2px solid #0000;color:var(--text-primary);font-weight:var(--font-weight-bold);letter-spacing:1px;padding:var(--spacing-sm) var(--spacing-md);text-transform:uppercase;transition:all var(--transition-medium)}.navbar__links:hover{background-color:var(--content-bg-secondary);border-color:var(--border-color);transform:translate(2px,2px)}.navbar__btn .button{background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;font-weight:var(--font-weight-bold);letter-spacing:1px;padding:var(--spacing-sm) var(--spacing-md);text-transform:uppercase;transition:all var(--transition-medium)}.navbar__btn .button:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.navbar__toggle{border:2px solid #0000;cursor:pointer;display:none;flex-direction:column;padding:var(--spacing-sm);transition:all var(--transition-fast)}.navbar__toggle:hover{background-color:var(--content-bg-secondary);border-color:var(--accent-color)}.navbar__toggle .bar{background-color:var(--text-primary);border-radius:2px;height:4px;margin:3px 0;transition:.3s;width:25px}.navbar__toggle.active .bar:first-child{background-color:var(--accent-color);transform:rotate(-45deg) translate(-5px,6px)}.navbar__toggle.active .bar:nth-child(2){opacity:0}.navbar__toggle.active .bar:nth-child(3){background-color:var(--accent-color);transform:rotate(45deg) translate(-5px,-6px)}@media screen and (max-width:768px){.navbar__toggle{display:flex}.navbar__menu{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);box-shadow:0 10px 27px #0000000d;flex-direction:column;left:-100%;padding:var(--spacing-lg);position:fixed;text-align:center;top:100px;transition:.3s;width:100%;z-index:999}.navbar__menu.active{left:0}.navbar__item{border:1px dashed var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--accent-color);margin:var(--spacing-md) 0;width:100%}}.mobile-overlay{background-color:#00000080;bottom:0;left:0;position:fixed;right:0;top:0;z-index:998}.layout--sidebar{margin:0;padding:var(--spacing-xxl) 0;width:100%}.layout--sidebar__grid{grid-gap:var(--spacing-xxl);align-items:start;display:grid;gap:var(--spacing-xxl);grid-template-columns:280px minmax(0,1fr);width:100%}.layout--sidebar__content{min-width:0}@media screen and (max-width:992px){.layout--sidebar{padding:var(--spacing-md) 0}.layout--sidebar__grid{display:block}}.main{align-items:center;display:flex;justify-content:center;min-height:80vh;padding:var(--spacing-xxl) 0}.main__container{grid-gap:var(--spacing-xxl);align-items:center;display:grid;gap:var(--spacing-xxl);grid-template-columns:1fr 1fr;margin:0 auto;max-width:1200px;padding:0 var(--spacing-lg)}.main__content{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);padding:var(--spacing-xxl);transition:all var(--transition-medium)}.main__content:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.main__content h1{color:var(--text-primary);font-size:3rem;margin-bottom:var(--spacing-sm)}.main__content h2{color:var(--accent-color);font-size:2.5rem;margin-bottom:var(--spacing-md)}.main__content p{color:var(--text-primary);font-size:1.2rem;margin-bottom:var(--spacing-xl)}.main__btn{background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;font-size:1.1rem;font-weight:var(--font-weight-bold);letter-spacing:2px;padding:var(--spacing-md) var(--spacing-xl);text-transform:uppercase;transition:all var(--transition-medium)}.main__btn:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.main__btn a{color:#fff;text-decoration:none}.main__img--container{align-items:center;display:flex;justify-content:center}#main__img{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);height:auto;max-width:400px;transition:all var(--transition-medium);width:100%}#main__img:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.services{background-color:var(--content-bg-secondary);padding:var(--spacing-xxl) 0}.services h1{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:var(--text-primary);font-size:3rem;margin:0 auto var(--spacing-xxl);max-width:800px;padding:var(--spacing-lg);text-align:center}.services__container{grid-gap:var(--spacing-xl);display:grid;gap:var(--spacing-xl);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin:0 auto;max-width:1200px;padding:0 var(--spacing-lg)}.services__card{background-color:var(--content-bg);background-position:50%;background-repeat:no-repeat;background-size:cover;border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);overflow:hidden;padding:var(--spacing-xl);position:relative;transition:all var(--transition-medium)}.services__card:first-child{background-image:linear-gradient(#f4f1ded9,#f4f1ded9),url(https://davidpc.ca/images/langchain-logo.png)}.services__card:nth-child(2){background-image:linear-gradient(#f4f1ded9,#f4f1ded9),url(https://davidpc.ca/images/json.png)}.services__card:nth-child(3){background-image:linear-gradient(#f4f1ded9,#f4f1ded9),url(https://davidpc.ca/images/velocitycreds4.png)}.services__card:nth-child(4){background-image:linear-gradient(#f4f1ded9,#f4f1ded9),url(https://davidpc.ca/images/gyb.png)}.services__card:nth-child(5){background-image:linear-gradient(#f4f1ded9,#f4f1ded9),url(https://davidpc.ca/images/logos_horizontal.png)}.services__card:nth-child(6){background-image:linear-gradient(#f4f1ded9,#f4f1ded9),url(https://davidpc.ca/images/terrarium.png)}.services__card:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.services__card:first-child:hover{background-image:linear-gradient(#f4f1debf,#f4f1debf),url(https://davidpc.ca/images/langchain-logo.png)}.services__card:nth-child(2):hover{background-image:linear-gradient(#f4f1debf,#f4f1debf),url(https://davidpc.ca/images/json.png)}.services__card:nth-child(3):hover{background-image:linear-gradient(#f4f1debf,#f4f1debf),url(https://davidpc.ca/images/velocitycreds4.png)}.services__card:nth-child(4):hover{background-image:linear-gradient(#f4f1debf,#f4f1debf),url(https://davidpc.ca/images/gyb.png)}.services__card:nth-child(5):hover{background-image:linear-gradient(#f4f1debf,#f4f1debf),url(https://davidpc.ca/images/logos_horizontal.png)}.services__card:nth-child(6):hover{background-image:linear-gradient(#f4f1debf,#f4f1debf),url(https://davidpc.ca/images/terrarium.png)}.services__card h2{font-size:1.5rem;font-weight:var(--font-weight-bold);margin-bottom:var(--spacing-md)}.services__card h2,.services__card p{color:var(--text-primary);position:relative;text-shadow:1px 1px 2px #fffc;z-index:2}.services__card p{font-size:1rem;font-weight:500;margin-bottom:var(--spacing-lg)}.services__card button{background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;font-weight:var(--font-weight-bold);letter-spacing:1px;padding:var(--spacing-md);position:relative;text-transform:uppercase;transition:all var(--transition-medium);width:100%;z-index:2}.services__card button:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.footer__container{background-color:var(--content-bg);border-top:var(--border-width) var(--border-style) var(--border-color);margin-top:auto}.footer__content{grid-gap:var(--spacing-xxl);display:grid;gap:var(--spacing-xxl);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin:0 auto;max-width:1200px;padding:var(--spacing-xxl) var(--spacing-lg)}.footer__section{display:flex;flex-direction:column;gap:var(--spacing-md)}.footer__brand{max-width:300px}.footer__logo{align-items:center;color:var(--text-primary);display:flex;font-size:1.8rem;font-weight:var(--font-weight-bold);gap:var(--spacing-sm);letter-spacing:2px;margin-bottom:var(--spacing-sm);text-transform:uppercase;transition:color var(--transition-fast)}.footer__logo:hover{color:var(--accent-color)}.footer__description{color:var(--text-primary);font-size:1rem;line-height:var(--line-height-body);margin:0}.footer__title{color:var(--text-primary);font-size:1.3rem;font-weight:var(--font-weight-bold);letter-spacing:1px;margin-bottom:var(--spacing-sm);position:relative;text-transform:uppercase}.footer__title:after{background-color:var(--accent-color);bottom:-4px;content:"";height:3px;left:0;position:absolute;width:40px}.footer__links{display:flex;flex-direction:column;gap:var(--spacing-sm)}.footer__link{border:2px solid #0000;color:var(--text-primary);font-size:.9rem;font-weight:var(--font-weight-bold);letter-spacing:1px;padding:var(--spacing-xs);text-transform:uppercase;transition:all var(--transition-fast);width:fit-content}.footer__link:hover{border-color:var(--accent-color);color:var(--accent-color);transform:translateX(4px)}.footer__social--icons{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.footer__social--icon{align-items:center;background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;display:flex;font-size:1.2rem;height:45px;justify-content:center;transition:all var(--transition-medium);width:45px}.footer__social--icon:hover{background-color:var(--text-primary);box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.footer__bottom{background-color:var(--text-primary);border-top:var(--border-width) var(--border-style) var(--border-color);padding:var(--spacing-lg) 0}.footer__bottom--content{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-md);justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 var(--spacing-lg)}.footer__copyright{color:var(--content-bg)}.footer__built,.footer__copyright{font-size:.9rem;font-weight:var(--font-weight-bold);letter-spacing:1px;margin:0;text-transform:uppercase}.footer__built{color:var(--accent-color)}.social__icons--contactme{display:flex;gap:var(--spacing-md);justify-content:center;margin:var(--spacing-lg) 0}.social__icons--contactme a{align-items:center;background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;display:flex;font-size:1.5rem;height:60px;justify-content:center;transition:all var(--transition-medium);width:60px}.social__icons--contactme a:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.website__rights{color:var(--text-primary);font-weight:var(--font-weight-bold);letter-spacing:1px;text-transform:uppercase}.project__header{background:linear-gradient(135deg,var(--content-bg) 0,var(--content-bg-secondary) 100%);border:var(--border-width) var(--border-style) var(--border-color);margin-top:var(--spacing-sm);overflow:hidden;padding:var(--spacing-xxl);position:relative;text-align:center}.project__header:before{background:linear-gradient(90deg,#0000,#4d9de01a,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.project__header:hover:before{left:100%}.project__header h1{color:var(--text-primary);display:inline-block;font-size:3.5rem;font-weight:700;letter-spacing:.08em;margin-bottom:var(--spacing-md);position:relative;text-shadow:2px 2px 4px #0000001a;text-transform:uppercase}.project__header h1:after{background:var(--accent-color);border-radius:3px;bottom:-12px;content:"";height:6px;left:50%;position:absolute;transform:translateX(-50%);width:80px}.project__header p{color:var(--text-primary);font-size:1.3rem;font-weight:400;line-height:1.6;margin-bottom:var(--spacing-lg);text-shadow:1px 1px 2px #0000001a}.project__header a{background:#4d9de01a;border-radius:6px;color:var(--accent-color);display:inline-block;font-weight:var(--font-weight-bold);padding:4px 12px;position:relative;text-decoration:none;transition:all var(--transition-fast)}.project__header a:before{background:var(--accent-color);bottom:0;content:"";height:3px;left:0;position:absolute;transition:width var(--transition-fast);width:0}.project__header a:hover{background:#4d9de033;box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.project__header a:hover:before{width:100%}.project{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);margin:var(--spacing-xl);padding:var(--spacing-xxl)}.project h1{color:var(--text-primary);display:inline-block;font-size:2.8rem;font-weight:700;letter-spacing:.05em;margin-bottom:var(--spacing-lg);position:relative;text-transform:uppercase;transition:all var(--transition-medium)}.project h1:after{background:var(--accent-color);bottom:-8px;content:"";height:4px;left:0;position:absolute;transition:width var(--transition-medium);width:60px}.project h1:hover:after{width:100%}.project p{color:var(--text-primary);font-size:1.15rem;line-height:1.8;margin-bottom:var(--spacing-lg);position:relative;text-align:justify;transition:transform var(--transition-fast)}.project p:hover{transform:translateX(6px)}.project p:first-of-type{background:linear-gradient(90deg,#4d9de01a,#0000);border-left:4px solid var(--accent-color);border-radius:0 8px 8px 0;font-size:1.25rem;font-weight:500;padding:var(--spacing-md)}.project li{border-bottom:1px solid var(--border-color);color:var(--text-primary);font-size:1.05rem;font-weight:600;line-height:1.7;margin-bottom:var(--spacing-xs);padding-left:var(--spacing-md);position:relative}.project li:before{color:var(--text-primary);font-weight:400;left:0;opacity:.6;position:absolute}.project p a{background:#4d9de01a;border-radius:4px;color:var(--accent-color);font-weight:var(--font-weight-bold);padding:3px 8px;position:relative;text-decoration:none;transition:all var(--transition-fast)}.project p a:before{background:var(--accent-color);bottom:0;content:"";height:3px;left:0;position:absolute;transition:width var(--transition-fast);width:0}.project p a:hover{background:#4d9de033;box-shadow:0 4px 8px #0000001a;transform:translateY(-2px)}.project p a:hover:before{width:100%}.project .list{background:#f4f1de4d;border-left:6px solid var(--accent-color);border-radius:8px;box-shadow:0 4px 12px #0000001a;margin:var(--spacing-lg) 0;padding:var(--spacing-lg);transition:all var(--transition-medium)}.project .list:hover{box-shadow:0 8px 24px #00000026;transform:translateY(-4px)}.project .list li{background:var(--content-bg-secondary);border:2px solid #0000;border-radius:6px;margin-bottom:var(--spacing-md);padding:var(--spacing-md);transition:all var(--transition-fast)}.project .list li:hover{background:#4d9de00d;border-color:var(--accent-color)}.project p b,.project p strong{color:var(--accent-color);font-weight:700;text-shadow:0 1px 2px #0000001a}.img__wrapper{display:flex;flex-wrap:wrap;gap:var(--spacing-md);justify-content:center;margin:var(--spacing-lg) 0;text-align:center}.img__wrapper img{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);flex:1 1;height:300px;max-width:450px;min-width:280px;object-fit:cover;object-position:center;transition:all var(--transition-medium);width:100%}.img__wrapper img:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.img__wrapper--wide{margin:var(--spacing-lg) 0;text-align:center}.img__wrapper--wide img{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);height:500px;max-width:900px;object-fit:cover;object-position:center;transition:all var(--transition-medium);width:100%}.img__wrapper--wide img:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}@media screen and (max-width:480px){.project{margin:0;padding:var(--spacing-xs)}}.iframe__wrapper{margin:var(--spacing-lg) 0;text-align:center}.iframe__wrapper iframe{height:540px;max-width:960px;width:100%}.fs__button,.iframe__wrapper iframe{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color)}.fs__button{background:linear-gradient(135deg,var(--accent-color) 0,#ff5722 100%);color:#fff;cursor:pointer;font-weight:var(--font-weight-bold);letter-spacing:1px;margin-top:var(--spacing-md);overflow:hidden;padding:var(--spacing-md) var(--spacing-lg);position:relative;text-transform:uppercase;transition:all var(--transition-medium)}.fs__button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.fs__button:hover:before{left:100%}.fs__button:hover{background:linear-gradient(135deg,#ff5722 0,var(--accent-color) 100%);box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset)) scale(1.05)}.contact__header{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);margin-top:var(--spacing-sm);padding:var(--spacing-xxl);text-align:center}.contact__header h1{color:var(--text-primary);font-size:3rem;margin-bottom:var(--spacing-md)}.contact__header p{color:var(--text-primary);font-size:1.2rem;line-height:var(--line-height-body);margin:0 auto;max-width:800px}.contact__content{background-color:var(--content-bg-secondary);padding:var(--spacing-xxl) var(--spacing-lg)}.contact__container{grid-gap:var(--spacing-xxl);align-items:start;display:grid;gap:var(--spacing-xxl);grid-template-columns:1fr 1.5fr;margin:0 auto;max-width:1200px}.contact__info{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);padding:var(--spacing-xxl);transition:all var(--transition-medium)}.contact__info:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.contact__info h2{color:var(--text-primary);font-size:2rem;margin-bottom:var(--spacing-md);position:relative}.contact__info h2:after{background-color:var(--accent-color);bottom:-4px;content:"";height:4px;left:0;position:absolute;width:50px}.contact__info>p{color:var(--text-primary);font-size:1.1rem;line-height:var(--line-height-body)}.contact__info>p,.contact__methods{margin-bottom:var(--spacing-xl)}.contact__method{align-items:center;border:2px solid #0000;display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-lg);padding:var(--spacing-md);transition:all var(--transition-fast)}.contact__method:hover{background-color:var(--content-bg-secondary);border-color:var(--accent-color);transform:translateX(4px)}.contact__method-icon{align-items:center;background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;display:flex;flex-shrink:0;font-size:1.2rem;height:50px;justify-content:center;width:50px}.contact__method-info h3{font-size:1.1rem;letter-spacing:1px;margin-bottom:var(--spacing-xs);text-transform:uppercase}.contact__method-info a,.contact__method-info h3{color:var(--text-primary);font-weight:var(--font-weight-bold)}.contact__method-info a{text-decoration:none;transition:color var(--transition-fast)}.contact__method-info a:hover{color:var(--accent-color)}.contact__social{text-align:center}.contact__social h3{color:var(--text-primary);font-size:1.1rem;font-weight:var(--font-weight-bold);letter-spacing:1px;margin-bottom:var(--spacing-md);text-transform:uppercase}.contact__form-section{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);transition:all var(--transition-medium)}.contact__form-section:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.form-container{padding:var(--spacing-xxl)}.form-container h2{color:var(--text-primary);font-size:2rem;margin-bottom:var(--spacing-sm);position:relative}.form-container h2:after{background-color:var(--accent-color);bottom:-4px;content:"";height:4px;left:0;position:absolute;width:50px}.form-container>p{color:var(--text-primary);font-size:1rem;line-height:var(--line-height-body);margin-bottom:var(--spacing-xl)}.contact__form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.form-row{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:1fr 1fr}.form-group{flex-direction:column}.form-group,.form-group label{display:flex;gap:var(--spacing-sm)}.form-group label{align-items:center;color:var(--text-primary);font-size:.9rem;font-weight:var(--font-weight-bold);letter-spacing:1px;text-transform:uppercase}.form-group label i{color:var(--accent-color);font-size:1rem}.form-group input,.form-group textarea{background-color:#fff;border:var(--border-width) var(--border-style) var(--border-color);box-shadow:2px 2px 0 var(--shadow-color);color:var(--text-primary);font-family:var(--font-family);font-size:1rem;padding:var(--spacing-md);transition:all var(--transition-fast)}.form-group input:focus,.form-group textarea:focus{box-shadow:0 0 0 3px var(--accent-color);outline:none;transform:translate(-2px,-2px)}.form-group textarea{min-height:120px;resize:vertical}.form-submit-btn{align-items:center;background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;display:flex;font-size:1.1rem;font-weight:var(--font-weight-bold);gap:var(--spacing-sm);justify-content:center;letter-spacing:1px;margin-top:var(--spacing-md);padding:var(--spacing-lg) var(--spacing-xl);text-transform:uppercase;transition:all var(--transition-medium)}.form-submit-btn:hover{background-color:var(--text-primary);box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.form-note{color:var(--text-primary);font-size:.9rem;margin-top:var(--spacing-md);opacity:.8;text-align:center}.form-note a{color:var(--accent-color);font-weight:var(--font-weight-bold);text-decoration:none}.form-note a:hover{text-decoration:underline}.resume__container{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);margin:var(--spacing-xl);padding:var(--spacing-xxl)}.resume__wrapper{background-color:var(--content-bg-secondary);padding:var(--spacing-xxl) var(--spacing-lg)}.resume__download-section{display:flex;flex-wrap:wrap;gap:var(--spacing-md);justify-content:center;margin-bottom:var(--spacing-xl)}.resume__download-btn,.resume__view-btn{align-items:center;background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;display:flex;font-weight:var(--font-weight-bold);gap:var(--spacing-sm);letter-spacing:1px;padding:var(--spacing-md) var(--spacing-lg);text-decoration:none;text-transform:uppercase;transition:all var(--transition-medium)}.resume__download-btn:hover,.resume__view-btn:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);color:#fff;transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.resume__view-btn{background-color:var(--text-primary)}.resume__iframe-container{background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);overflow:hidden;position:relative;width:100%}.resume__iframe{border:none;display:block;height:80vh;min-height:600px;width:100%}.resume__fallback{background-color:var(--content-bg);color:var(--text-primary);padding:var(--spacing-xxl);text-align:center}.resume__fallback p{font-size:1.1rem;margin-bottom:var(--spacing-md)}.resume__fallback-link{background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);color:#fff;display:inline-block;font-weight:var(--font-weight-bold);letter-spacing:1px;margin-top:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);text-decoration:none;text-transform:uppercase;transition:all var(--transition-medium)}.resume__fallback-link:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);color:#fff;transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.resume{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);height:auto;max-width:100%}.about__header--wrapper{background-color:var(--content-bg);padding:var(--spacing-xxl);text-align:center}.aboutme__headshot{border:var(--border-width) var(--border-style) var(--border-color);border-radius:50%;box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);display:block;height:300px;margin:var(--spacing-lg) auto;transition:all var(--transition-medium);width:300px}.aboutme__headshot:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.awslogo__wrapper{display:flex;gap:var(--spacing-md);justify-content:center;margin:var(--spacing-lg) 0}.awslogo__wrapper img{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);height:auto;max-width:150px;transition:all var(--transition-medium)}.awslogo__wrapper img:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}@media screen and (max-width:768px){.project__header{padding:var(--spacing-xl) var(--spacing-lg)}.project__header h1{font-size:2.5rem}.project__header p{font-size:1.05rem}.project{margin:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg)}.project h1{font-size:2.2rem}.project p{font-size:1rem}.project p:first-of-type{font-size:1.1rem}.project li{font-size:.95rem}.about .contact__header{padding:var(--spacing-xl) var(--spacing-lg)}.about .contact__header h1{font-size:2.2rem}.main__container{gap:var(--spacing-lg);grid-template-columns:1fr}.main__content{padding:var(--spacing-lg)}.main__content h1{font-size:2.5rem}.main__content h2{font-size:2rem}.footer__content,.services__container{grid-template-columns:1fr}.footer__content{gap:var(--spacing-lg);padding:var(--spacing-lg)}.footer__section{text-align:center}.footer__links{align-items:center}.footer__social--icons{justify-content:center}.footer__bottom--content{flex-direction:column;gap:var(--spacing-sm);text-align:center}.iframe__wrapper iframe{height:270px}.aboutme__headshot{height:250px;width:250px}.awslogo__wrapper{flex-wrap:wrap;justify-content:center}.awslogo__wrapper img{max-width:130px}.project p,.project p:first-of-type{text-align:left}}@media screen and (max-width:480px){.project__header{padding:var(--spacing-lg) var(--spacing-md)}.project__header h1{font-size:2rem}.project__header p{font-size:.95rem}.navbar__container{padding:0 var(--spacing-md)}.main{padding:var(--spacing-lg) 0}.main__content{padding:var(--spacing-md)}.main__content h1{font-size:2rem}.main__content h2{font-size:1.5rem}.services{padding:var(--spacing-lg) 0}.services__container{padding:0 var(--spacing-md)}.services__card{background-position:50%;background-size:cover;padding:var(--spacing-md)}.services__card:first-child{background-image:linear-gradient(#f4f1decc,#f4f1decc),url(https://davidpc.ca/images/velocitycreds4.png)}.services__card:nth-child(2){background-image:linear-gradient(#f4f1decc,#f4f1decc),url(https://davidpc.ca/images/gyb.png)}.services__card:nth-child(3){background-image:linear-gradient(#f4f1decc,#f4f1decc),url(https://davidpc.ca/images/logos_horizontal.png)}.services__card:nth-child(4){background-image:linear-gradient(#f4f1decc,#f4f1decc),url(https://davidpc.ca/images/terrarium.png)}.project{margin:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-sm)}.project h1{font-size:1.8rem}.project p{font-size:.95rem}.project p:first-of-type{font-size:1rem}.project li{font-size:.9rem}.form-container{padding:var(--spacing-lg)}.about .contact__header,.contact__content{padding:var(--spacing-lg) var(--spacing-md)}.about .contact__header h1{font-size:1.8rem}.contact__container{gap:var(--spacing-lg);grid-template-columns:1fr}.contact__info{padding:var(--spacing-lg)}.contact__method{flex-direction:column;gap:var(--spacing-sm);text-align:center}.contact__method-icon{font-size:1.1rem;height:45px;width:45px}.form-row{grid-template-columns:1fr}.resume__container{margin:var(--spacing-md);padding:var(--spacing-lg)}.resume__wrapper{padding:var(--spacing-lg) var(--spacing-md)}.resume__download-section{align-items:center;flex-direction:column}.resume__download-btn,.resume__view-btn{justify-content:center;max-width:280px;width:100%}.resume__iframe{height:70vh;min-height:400px}.iframe__wrapper iframe{height:200px}.img__wrapper{align-items:center;flex-direction:column;margin:var(--spacing-md) 0}.img__wrapper img{height:220px;margin-bottom:var(--spacing-sm);max-width:100%;min-width:auto;width:100%}.img__wrapper--wide{margin:var(--spacing-md) 0}.img__wrapper--wide img{height:220px;max-width:100%;width:100%}.social__icons--contactme{flex-wrap:wrap}.social__icons--contactme a{font-size:1.2rem;height:50px;width:50px}.about__header--wrapper{padding:var(--spacing-lg) var(--spacing-md)}.aboutme__headshot{height:200px;margin:var(--spacing-md) auto;width:200px}.awslogo__wrapper{align-items:center;flex-direction:column;gap:var(--spacing-sm)}.awslogo__wrapper img{max-width:120px}.project p{text-align:left!important}.project p,.project p:hover{transform:none!important}.project p:first-of-type{text-align:left!important}.footer__content{padding:var(--spacing-lg) var(--spacing-md)}.footer__brand{max-width:100%}.footer__logo{font-size:1.5rem;justify-content:center}.footer__title{font-size:1.1rem}.footer__social--icon{font-size:1rem;height:40px;width:40px}}.not-found__buttons{display:flex;flex-wrap:wrap;gap:var(--spacing-md)}.not-found__visual{align-items:center;background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);display:flex;flex-direction:column;justify-content:center;padding:var(--spacing-xxl);text-align:center;transition:all var(--transition-medium)}.not-found__visual:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.not-found__icon{align-items:center;background-color:var(--accent-color);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);display:flex;font-size:4rem;height:120px;justify-content:center;margin-bottom:var(--spacing-lg);transition:all var(--transition-medium);width:120px}.not-found__icon:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.not-found__message h3{color:var(--text-primary);font-size:1.5rem;margin-bottom:var(--spacing-sm)}.not-found__message p{color:var(--text-primary);font-size:1.1rem;margin-bottom:0}@media screen and (max-width:768px){.not-found__buttons{flex-direction:column;gap:var(--spacing-sm)}.not-found__visual{padding:var(--spacing-lg)}.not-found__icon{font-size:3rem;height:80px;width:80px}.not-found__message h3{font-size:1.2rem}}@media screen and (max-width:480px){.not-found__buttons{align-items:center}.not-found__buttons .main__btn{margin-left:0!important;width:100%}.not-found__visual{padding:var(--spacing-md)}.not-found__icon{font-size:2rem;height:60px;width:60px}.not-found__message h3{font-size:1.1rem}.not-found__message p{font-size:.9rem}}.report__pairs{display:flex;flex-direction:column;gap:var(--spacing-xxl)}.report__pair{grid-gap:var(--spacing-xl);align-items:center;background-color:var(--content-bg);border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);display:grid;gap:var(--spacing-xl);grid-template-columns:1.2fr 1fr;padding:var(--spacing-xxl);transition:all var(--transition-medium)}.report__pair:hover{box-shadow:var(--shadow-hover-offset) var(--shadow-hover-offset) 0 var(--shadow-color);transform:translate(var(--shadow-hover-offset),var(--shadow-hover-offset))}.report__text h3{margin-bottom:var(--spacing-sm)}.report__text p{line-height:var(--line-height-body);margin-bottom:0}.report__image img{border:var(--border-width) var(--border-style) var(--border-color);box-shadow:var(--shadow-offset) var(--shadow-offset) 0 var(--shadow-color);height:auto;width:100%}.report__pair--reverse{grid-template-columns:1fr 1.2fr}@media screen and (max-width:992px){.report__pair,.report__pair--reverse{gap:var(--spacing-md);grid-template-columns:1fr;margin:0;padding:var(--spacing-sm)}}@media screen and (max-width:480px){.report__pair,.report__pair--reverse{gap:var(--spacing-sm);padding:var(--spacing-xs)}}
/*# sourceMappingURL=main.8ad5c1fa.css.map*/