.container{box-sizing:border-box;width:100%;margin:0 auto;padding-left:.75rem;padding-right:.75rem}@media(min-width:576px){.container{max-width:540px}}@media(min-width:768px){.container{max-width:720px}}@media(min-width:992px){.container{max-width:960px}}@media(min-width:1200px){.container{max-width:1140px}}@media(min-width:1400px){.container{max-width:1320px}}.grid{display:grid;gap:1.5rem}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}@media(max-width:991px){.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}@media(max-width:575px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}.flex-row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-start}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}@media(max-width:991px){.card-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:767px){.card-grid{grid-template-columns:1fr}}.btn{display:inline-block;padding:.6rem 1.5rem;font-size:1rem;font-weight:500;border-radius:.375rem;cursor:pointer;text-decoration:none;border:1px solid transparent;font-family:Poppins,sans-serif;transition:transform .15s ease-out,box-shadow .15s ease-out}.btn:active{transform:scale(.97);box-shadow:0 2px 4px #00000026!important}.btn:hover:not(:active){box-shadow:0 6px 14px #0003!important}.btn:disabled,.btn.disabled{opacity:.65;cursor:not-allowed}.btn{background:transparent;color:#232931}.btn-primary{display:inline-block;padding:.6rem 1.5rem;font-size:1rem;font-weight:500;border-radius:.375rem;cursor:pointer;text-decoration:none;border:1px solid transparent;font-family:Poppins,sans-serif;transition:transform .15s ease-out,box-shadow .15s ease-out}.btn-primary:active{transform:scale(.97);box-shadow:0 2px 4px #00000026!important}.btn-primary:hover:not(:active){box-shadow:0 6px 14px #0003!important}.btn-primary:disabled,.btn-primary.disabled{opacity:.65;cursor:not-allowed}.btn-primary{background-color:#3e64ff;border-color:#3e64ff;color:#fff}.btn-primary:hover:not(:active){background-color:#0b3bff;border-color:#0b3bff;color:#fff}.btn-primary:active{background-color:#002ff1;border-color:#002ff1}.btn-secondary{display:inline-block;padding:.6rem 1.5rem;font-size:1rem;font-weight:500;border-radius:.375rem;cursor:pointer;text-decoration:none;border:1px solid transparent;font-family:Poppins,sans-serif;transition:transform .15s ease-out,box-shadow .15s ease-out}.btn-secondary:active{transform:scale(.97);box-shadow:0 2px 4px #00000026!important}.btn-secondary:hover:not(:active){box-shadow:0 6px 14px #0003!important}.btn-secondary:disabled,.btn-secondary.disabled{opacity:.65;cursor:not-allowed}.btn-secondary{background-color:#232931;border-color:#232931;color:#fff}.btn-secondary:hover:not(:active){background-color:#393f47;border-color:#393f47;color:#fff}.btn-secondary:active{background-color:#2d3238;border-color:#2d3238}.btn-ghost{display:inline-block;padding:.6rem 1.5rem;font-size:1rem;font-weight:500;border-radius:.375rem;cursor:pointer;text-decoration:none;border:1px solid transparent;font-family:Poppins,sans-serif;transition:transform .15s ease-out,box-shadow .15s ease-out}.btn-ghost:active{transform:scale(.97);box-shadow:0 2px 4px #00000026!important}.btn-ghost:hover:not(:active){box-shadow:0 6px 14px #0003!important}.btn-ghost:disabled,.btn-ghost.disabled{opacity:.65;cursor:not-allowed}.btn-ghost{background-color:transparent;border-color:#3e64ff;color:#3e64ff}.btn-ghost:hover:not(:active){background-color:#3e64ff;color:#fff}.btn-ghost:active{background-color:#0b3bff;color:#fff}.btn-text{background:none;border:none;color:#232931;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;padding:.5rem 1rem;text-decoration:none;transition:color .15s ease-out}.btn-text:hover{color:#3e64ff;text-decoration:underline}.btn-text:disabled,.btn-text.disabled{opacity:.65;cursor:not-allowed}.projects{margin-top:6em;padding:0;background:#fff;padding-top:3rem;padding-bottom:1.5rem}@media(max-width:767.98px){.projects{margin-top:0;padding:6em 0}}.projects__intro{text-align:center;margin-bottom:4rem}.projects__intro h2{font-size:50px;font-weight:700;color:#000;margin:0 0 1.5rem}@media(max-width:575px){.projects__intro h2{font-size:38px}}.projects__intro p{max-width:42rem;margin:.75rem auto 0;color:#0000009e}.projects--featured{margin-top:0;padding-top:6em;padding-bottom:7.6875rem}.projects--featured .projects__intro{margin-bottom:3rem}@media(max-width:767.98px){.projects--featured{padding-bottom:213px}}@media(max-width:767.98px){.projects:not(.projects--featured){padding-bottom:calc(6em + 72px)}}.project-card{height:auto;display:flex;flex-direction:column;border:0;border-radius:.5rem;overflow:hidden;background:#fff;box-shadow:0 2px 8px #00000014;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.project-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0000001f}.project-card__media{display:block;flex-shrink:0;aspect-ratio:16/9;box-sizing:border-box;background:#f8fafc;border:1px solid #f1f5f9;padding:2rem;width:100%;cursor:zoom-in;overflow:hidden}.project-card__media img{width:100%;height:100%;min-height:0;object-fit:contain;border-radius:.5rem}.project-card__body{display:flex;flex:1;flex-direction:column;gap:0;padding:1.5rem;color:#000}.project-card__body h3{margin:0 0 .5rem;font-size:1.25rem;font-weight:700;color:#000}.project-card__meta-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.project-card__meta-row p{margin:0;color:#3e64ff;text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:600}.project-card__meta{display:flex;flex-wrap:wrap;gap:.5rem .75rem;font-size:.9rem;color:#0000008c}.project-card__badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .75rem;border-radius:9999px;border:1px solid rgba(37,99,235,.65);color:#2563eb;background:transparent;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.project-card__badge-dot{position:relative;width:8px;height:8px;border-radius:999px;background:#2563eb;box-shadow:0 0 #2563eb73;animation:project-live-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.project-card__description{color:#000000b8;line-height:1.7;flex:1}.project-card__description p:last-child{margin-bottom:0}.project-card-motion{height:100%}.project-card-motion>.project-card{height:100%}@keyframes project-live-pulse{0%{box-shadow:0 0 #2563eb73}to{box-shadow:0 0 0 8px #2563eb00}}@keyframes project-image-loading{0%{background-position:220% 0,0 0}to{background-position:-220% 0,0 0}}.project-modal,.project-lightbox{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:#080c12b8;backdrop-filter:blur(12px)}.project-modal__shell{position:relative;display:flex;flex-direction:column;width:min(720px,100%);max-height:calc(100vh - 3rem);overflow:hidden;border-radius:28px;background:#fff;box-shadow:0 32px 80px #080c1247}.project-modal__shell--expandable{height:min(852px,100dvh - 3rem)}.project-modal__topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid #f1f5f9}.project-modal__topbar h3{margin:0;color:#000;font-size:1.25rem;font-weight:700;line-height:1.5}.project-modal__close,.project-lightbox__close,.project-modal__zoom,.project-modal__nav,.project-lightbox__nav{border:0;cursor:pointer}.project-modal__close,.project-lightbox__close{width:1em;height:1em;padding:.25em;border-radius:0;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293A1 1 0 0 1 .293 14.293L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;color:transparent;font-size:1rem;opacity:.5;text-indent:-9999px}.project-modal__close:hover,.project-modal__close:focus,.project-lightbox__close:hover,.project-lightbox__close:focus{opacity:.75}.project-modal__close{position:static;flex:0 0 auto}.project-lightbox__close{position:absolute;top:1rem;right:1rem;z-index:4;filter:invert(1)}.project-modal__gallery{position:relative;flex:0 0 auto;aspect-ratio:16/9;max-height:min(52vh,100vh - 23rem);min-height:220px;background:#111827;overflow:hidden}.project-modal__image-button{position:relative;width:100%;height:100%;border:0;padding:0;cursor:zoom-in;background:transparent}.project-modal__image-button .project-modal__image{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;display:block}.project-modal__slide{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;background:#111827;overflow:hidden}.project-modal__image-backdrop{position:absolute;inset:-32px;z-index:0;width:calc(100% + 64px);height:calc(100% + 64px);object-fit:cover;filter:blur(24px) saturate(.9) brightness(.7);transform:scale(1.08)}.project-modal__image-loading{position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent),#111827;background-size:220% 100%,100% 100%;animation:project-image-loading 1s ease-in-out infinite}.project-modal__zoom{position:absolute;top:1rem;right:1rem;z-index:3;width:2.5rem;height:2.5rem;border-radius:999px;background:#080c129e;color:#fff;font-size:1rem;display:flex;align-items:center;justify-content:center}.project-modal__nav,.project-lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:2.75rem;height:2.75rem;border-radius:999px;background:#ffffffeb;color:#232931;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center}.project-modal__nav--prev,.project-lightbox__nav--prev{left:1rem}.project-modal__nav--next,.project-lightbox__nav--next{right:1rem}.project-modal__dots{position:absolute;left:50%;bottom:.75rem;transform:translate(-50%);z-index:3;display:flex;gap:8px;max-width:calc(100% - 40px);padding:6px 20px;overflow-x:auto;overflow-y:hidden;border-radius:20px;background:#00000080;backdrop-filter:blur(4px);scrollbar-width:none}.project-modal__dots::-webkit-scrollbar{display:none}.project-modal__dots button{flex:0 0 auto;width:8px;height:8px;padding:0;border:0;border-radius:4px;background:#ffffff73;box-shadow:none;transition:width .3s ease-in-out,background-color .3s ease}.project-modal__dots .is-active{background:#fff;width:24px;transform:none}.project-modal__content{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow:hidden}.project-modal__body{flex:1 1 auto;min-height:0;padding:1.5rem 1.75rem;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.project-modal__meta-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:1rem;width:100%;margin-bottom:1.25rem}.project-modal__title-row{display:flex;justify-content:space-between;align-items:flex-start;width:100%}.project-modal__title-row h4{max-width:70%;margin:0;color:#000;font-size:1rem;font-weight:700;line-height:1.25}.project-modal__side-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.55rem;flex-shrink:0;line-height:1.25}.project-modal__side-meta>span:first-child{flex-shrink:0;color:#64748b;font-size:.875rem;font-weight:500;line-height:1.25;white-space:nowrap}.project-modal__technology-status-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.75rem;margin:0;padding:0}.project-modal__icons{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.65rem;margin:0;padding:0;color:#000;list-style:none}.project-modal__icons li{display:inline-flex;align-items:center;justify-content:center;line-height:1}.project-modal__header h3{margin:0;color:#000}.project-modal__header p{margin:0;color:#0000009e}.project-modal__meta{display:flex;flex-wrap:wrap;gap:.6rem .8rem;justify-content:flex-end;color:#00000094;font-size:.95rem}.project-modal__status{display:inline-flex;align-items:center;gap:.375rem;color:#2563eb;font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:.75rem}.project-modal__status-dot{width:8px;height:8px;border-radius:999px;background:#2563eb;box-shadow:0 0 #2563eb73;animation:project-live-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.project-modal__description{color:#000000c7;font-size:1rem;line-height:1.625}.project-modal__description p{margin-top:0}.project-modal__description p:last-child{margin-bottom:0}.project-modal__read-more{padding:0;border:0;background:transparent;color:#3e64ff;cursor:pointer;font:inherit}.project-modal__actions{position:relative;z-index:2;flex:0 0 auto;padding:0 1.75rem 1.75rem;background:#fff;box-shadow:0 -12px 24px -24px #080c1280}.project-modal__footer-divider{border-top:1px solid #f1f5f9;padding-top:1rem}.project-modal__footer-actions{display:flex;justify-content:flex-end;align-items:center;gap:.5rem}.project-modal__footer-actions a{display:inline-flex;align-items:center;gap:.4rem}.project-lightbox{z-index:1010;background:#000000e0}.project-lightbox__shell{position:relative;width:min(1280px,100%);max-height:calc(100vh - 3rem);display:flex;align-items:center;justify-content:center}.project-lightbox__shell img{max-width:100%;max-height:calc(100vh - 3rem);object-fit:contain;display:block}@media(max-width:767px){.project-modal,.project-lightbox{padding:.75rem}.project-modal__shell{max-height:calc(100vh - 1.5rem);border-radius:22px}.project-modal__shell--expandable{height:calc(100dvh - 1.5rem)}.project-modal__gallery{max-height:42vh;min-height:180px}.project-modal__content{padding:0}.project-modal__body{padding:1.1rem}.project-modal__actions{padding:0 1.1rem 1.1rem}.project-modal__topbar{padding:.85rem 1rem}.project-modal__title-row{flex-direction:column;gap:.25rem;margin-bottom:0}.project-modal__title-row h4{width:100%;max-width:none;font-size:1rem;white-space:normal}.project-modal__side-meta{width:100%;align-items:flex-start}.project-modal__technology-status-row,.project-modal__meta{justify-content:flex-start}.project-modal__footer-actions{flex-wrap:wrap;justify-content:flex-end}}
