.portfolio__container{grid-template-columns:repeat(3,1fr);gap:32px}.portfolio__filters{-moz-column-gap:.75rem;flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem .75rem;margin-bottom:3rem;display:flex}.portfolio__filters .portfolio__item{color:var(--title-color);font-weight:var(--weight-600);text-transform:capitalize;cursor:pointer;border:1px solid var(--border-color);width:auto;box-shadow:none;background:0 0;border-radius:.5rem;padding:.5rem 1rem;transition:all .3s}.portfolio__filters .portfolio__item:hover{background-color:var(--first-color);color:#fff;transform:translateY(-2px)}.portfolio__filters .active-portfolio{background-color:var(--first-color)!important;color:#fff!important;border-color:var(--first-color)!important}.portfolio__item{cursor:pointer;background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);border-radius:20px;transition:transform .4s cubic-bezier(.175,.885,.32,1.275),box-shadow .4s;position:relative;overflow:hidden}.portfolio__media{width:100%;height:200px;position:relative}.portfolio__item:hover{border-color:var(--first-color);transform:translateY(-10px)scale(1.02);box-shadow:0 20px 40px #0003}.portfolio__img{-o-object-fit:cover;object-fit:cover;border-radius:20px 20px 0 0;transition:transform .6s;inset:0}.portfolio__item:hover .portfolio__img{transform:scale(1.1)}.portfolio__hover{background:linear-gradient(to bottom, #6c63ff33, var(--first-color));opacity:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);flex-direction:column;justify-content:flex-end;padding:24px;transition:all .4s;display:flex;position:absolute;inset:0}.portfolio__item:hover .portfolio__hover{opacity:1}.portfolio__title{color:#fff;font-size:var(--h3-font-size);font-weight:var(--weight-600);text-shadow:0 2px 10px #0000004d;transition:all .4s cubic-bezier(.175,.885,.32,1.275);transform:translateY(20px)}.portfolio__item:hover .portfolio__title{transform:translateY(0)}.portfolio__category{color:#fff;font-size:var(--small-font-size);text-transform:uppercase;letter-spacing:1px;font-weight:var(--weight-500);border:1px solid var(--glass-border);opacity:0;background:#ffffff14;border-radius:20px;align-self:flex-start;margin-top:10px;padding:4px 12px;transition:all .4s cubic-bezier(.175,.885,.32,1.275);transform:translateY(20px)}.portfolio__item:hover .portfolio__category{opacity:1;transform:translateY(0)}.portfolio__description{color:#ffffffe6;font-size:var(--small-font-size);opacity:0;max-width:90%;margin-top:12px;line-height:1.6;transition:all .4s cubic-bezier(.175,.885,.32,1.275);transform:translateY(20px)}.portfolio__item:hover .portfolio__description{opacity:1;transform:translateY(0)}.portfolio__tech-stack{opacity:0;flex-wrap:wrap;gap:6px;margin-top:12px;transition:all .4s cubic-bezier(.175,.885,.32,1.275);display:flex;transform:translateY(20px)}.portfolio__item:hover .portfolio__tech-stack{opacity:1;transform:translateY(0)}.portfolio__tech-tag{font-size:var(--tiny-font-size);font-weight:var(--weight-500);color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff1f;border:1px solid #fff3;border-radius:100px;align-items:center;gap:4px;padding:4px 10px;transition:all .3s;display:inline-flex}.portfolio__tech-tag:hover{background:#ffffff40;border-color:#fff6;transform:translateY(-1px)}.portfolio__tech-tag svg{color:var(--first-color);font-size:.75rem}.portfolio__actions{opacity:0;gap:12px;margin-top:16px;transition:all .4s cubic-bezier(.175,.885,.32,1.275);display:flex;transform:translateY(20px)}.portfolio__item:hover .portfolio__actions{opacity:1;transform:translateY(0)}.portfolio__action-btn{color:#fff;font-size:var(--small-font-size);font-weight:var(--weight-600);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #ffffff4d;border-radius:30px;align-items:center;gap:8px;padding:10px 20px;text-decoration:none;transition:all .3s;display:flex}.portfolio__action-btn:hover{background:#ffffff4d;border-color:#ffffff80;transform:translateY(-2px)}.portfolio__modal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;background-color:#000000d9;place-items:center;padding:20px;animation:.3s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.portfolio__modal-content{background:var(--container-color);border:1px solid var(--glass-border);border-radius:24px;width:100%;max-width:800px;padding:40px;animation:.4s cubic-bezier(.175,.885,.32,1.275) forwards modalIn;position:relative;transform:scale(.9);box-shadow:0 25px 50px -12px #00000080}@keyframes modalIn{to{transform:scale(1)}}.modal__close{background:var(--glass-bg);width:40px;height:40px;-webkit-backdrop-filter:blur(var(--glass-blur));backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);color:var(--title-color);cursor:pointer;z-index:10;border-radius:50%;place-items:center;transition:all .3s;display:grid;position:absolute;top:20px;right:20px}.modal__close:hover{background:var(--first-color);color:var(--text-white);border-color:var(--first-color);transform:rotate(90deg)scale(1.1);box-shadow:0 8px 24px #6c63ff66}.modal__close:focus-visible{outline:2px solid var(--first-color);outline-offset:2px}.modal__title{text-align:left;color:var(--first-color);font-size:var(--h2-font-size);font-family:var(--second-font);margin-bottom:32px}.modal__list{grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:32px}.modal__item{background:var(--body-color);border:1px solid var(--border-color);border-radius:12px;align-items:center;gap:12px;padding:12px 16px;display:flex}.item__icon{color:var(--first-color);font-size:1.2rem;display:flex}.item__title{color:var(--text-color);font-size:var(--smaller-font-size);margin-right:4px}.item__details{color:var(--title-color);font-size:var(--small-font-size);font-weight:var(--weight-600)}.modal__img-wrapper{border-radius:16px;width:100%;height:350px;position:relative;overflow:hidden}.modal__img{-o-object-fit:cover;object-fit:cover;border-radius:16px;box-shadow:0 10px 20px #0000001a}@media screen and (max-width:1200px){.portfolio__container{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width:768px){.portfolio__container,.modal__list{grid-template-columns:1fr}.portfolio__modal-content{padding:24px}}
