.elementor-476 .elementor-element.elementor-element-acaab3b{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:120px;--padding-bottom:80px;--padding-left:60px;--padding-right:60px;}.elementor-476 .elementor-element.elementor-element-16054c0{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-476 .elementor-element.elementor-element-53f6fbd{text-align:start;}.elementor-476 .elementor-element.elementor-element-53f6fbd .elementor-heading-title{font-family:"DM Sans", Sans-serif;font-size:12px;font-weight:400;text-transform:uppercase;letter-spacing:4px;color:var( --e-global-color-text );}.elementor-476 .elementor-element.elementor-element-5f62763{text-align:start;}.elementor-476 .elementor-element.elementor-element-5f62763 .elementor-heading-title{font-family:"Bebas Neue", Sans-serif;font-size:100px;font-weight:600;color:var( --e-global-color-accent );}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-476 .elementor-element.elementor-element-ebaa11c{font-family:"DM Sans", Sans-serif;font-size:18px;font-weight:400;line-height:1.7em;color:var( --e-global-color-fc5bf0f );}.elementor-476 .elementor-element.elementor-element-c07ffd5{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-476 .elementor-element.elementor-element-6d2b6e3{--display:flex;--flex-direction:column;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--padding-top:120px;--padding-bottom:80px;--padding-left:60px;--padding-right:60px;}.elementor-476 .elementor-element.elementor-element-b3271a5{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:10px 10px;--row-gap:10px;--column-gap:10px;}.elementor-476 .elementor-element.elementor-element-2b24d68{--display:flex;}.elementor-476 .elementor-element.elementor-element-963cb08 .elementor-heading-title{font-family:"DM Sans", Sans-serif;font-size:11px;font-weight:400;text-transform:uppercase;letter-spacing:4px;color:var( --e-global-color-text );}.elementor-476 .elementor-element.elementor-element-a919fd3{font-family:"DM Sans", Sans-serif;font-size:16px;font-weight:400;color:var( --e-global-color-fc5bf0f );}.elementor-476 .elementor-element.elementor-element-596519c{--display:flex;}.elementor-476 .elementor-element.elementor-element-d546047{--display:flex;}.elementor-476 .elementor-element.elementor-element-9c0e1fe{--display:flex;}:root{--page-title-display:none;}@media(max-width:767px){.elementor-476 .elementor-element.elementor-element-16054c0{--width:100%;}.elementor-476 .elementor-element.elementor-element-5f62763 .elementor-heading-title{font-size:70px;}.elementor-476 .elementor-element.elementor-element-c07ffd5{--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}}@media(min-width:768px){.elementor-476 .elementor-element.elementor-element-16054c0{--width:70%;}.elementor-476 .elementor-element.elementor-element-c07ffd5{--width:70%;}.elementor-476 .elementor-element.elementor-element-b3271a5{--content-width:1600px;}}/* Start custom CSS for heading, class: .elementor-element-53f6fbd */.elementor-476 .elementor-element.elementor-element-53f6fbd {
  background: rgba(26,180,245,0.12);
  border: 1px solid rgba(26,180,245,0.25);
  border-radius: 100px;
  padding: 6px 16px;
  display: inline-block;
  width: fit-content;
}/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-79b85c9 */.digi-robot img {
  animation: pointDown 1.5s infinite ease-in-out;
}

@keyframes pointDown {
  0% { transform: translateY(0); }
  50% { transform: translateY(18px); }
  100% { transform: translateY(0); }
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-7cf665e *//* ===== DigiVale Portfolio (Elementor) ===== */

.dv-projects{
  max-width: 1200px;
  margin: 0 auto;
}

.dv-muted{
  color: rgba(233,238,247,.55);
  font-size: 13px;
}

/* header box look (opcional, se quiseres a “caixa” como no HTML) */
.dv-projects-head,
.dv-projects-filters,
.dv-projects-grid{
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  border-radius: 18px;
}

/* separadores */
.dv-projects-head{
  padding: 18px;
  margin-top: 16px;
}

.dv-projects-filters{
  padding: 14px 18px;
  margin-top: 12px;
}

.dv-projects-grid{
  padding: 18px;
  margin-top: 12px;
}

/* chips */
.dv-filters{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}

.dv-chip{
  border-radius:999px;
  padding:9px 12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: rgba(233,238,247,.75);
  font-size:13px;
  cursor:pointer;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
  user-select:none;
}

.dv-chip:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.05);
}

.dv-chip.is-active{
  border-color: rgba(0,172,237,.55);
  background: rgba(0,172,237,.10);
  color: rgba(233,238,247,.92);
}

/* search */
.dv-search{
  width: 100%;
  max-width: 420px;
  margin-left:auto;
}

.dv-search input{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.25);
  color: #e9eef7;
  outline:none;
  font-size:14px;
}

.dv-search input:focus{
  border-color: rgba(0,172,237,.45);
  box-shadow: 0 0 0 4px rgba(0,172,237,.10);
}

/* grid (se usares Elementor grid, isto só ajuda em mobile) */
.dv-projects-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
}

.dv-projects-grid > *{
  grid-column: span 6;
}

@media (max-width: 900px){
  .dv-projects-grid > *{
    grid-column: span 12;
  }
}

/* project card */
.dv-proj{
  border-radius: 18px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(0,0,0,.15));
  overflow:hidden;
  transition: transform .12s ease, border-color .12s ease;
  min-height: 240px;
  display:flex;
  flex-direction:column;
}

.dv-proj:hover{
  transform: translateY(-2px);
  border-color: rgba(0,172,237,.35);
}

.dv-thumb{
  height:150px;
  border-bottom:1px solid rgba(255,255,255,.08);
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(500px 220px at 40% 30%, rgba(0,172,237,.18), transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
}

.dv-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:.96;
}

.dv-badge{
  position:absolute;
  top:12px;
  left:12px;
  padding:7px 10px;
  border-radius:999px;
  background: rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.10);
  font-size:12px;
  color: rgba(233,238,247,.78);
  backdrop-filter: blur(6px);
}

.dv-body{
  padding:14px 14px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
  flex:1;
}

.dv-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.dv-title h3{
  margin:0;
  font-size:16px;
  letter-spacing:.02em;
}

.dv-title small{
  color: rgba(233,238,247,.55);
  font-size:12px;
  white-space:nowrap;
}

.dv-desc{
  margin:0;
  color: rgba(233,238,247,.66);
  font-size:13.5px;
  line-height:1.6;
  min-height:44px;
}

.dv-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:auto;
}

.dv-tag{
  font-size:12px;
  color: rgba(233,238,247,.7);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
  padding:6px 9px;
  border-radius:999px;
}

.dv-actions{
  display:flex;
  gap:10px;
  margin-top:10px;
}

.dv-link{
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.18);
  font-weight:800;
  font-size:13px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
}

.dv-link:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.06);
}

.dv-link.dv-primary{
  border-color: rgba(0,172,237,.45);
  background: rgba(0,172,237,.10);
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-5e98f74 *//* ===== DigiVale Portfolio (Elementor) ===== */

.dv-projects{
  max-width: 1200px;
  margin: 0 auto;
}

.dv-muted{
  color: rgba(233,238,247,.55);
  font-size: 13px;
}

/* header box look (opcional, se quiseres a “caixa” como no HTML) */
.dv-projects-head,
.dv-projects-filters,
.dv-projects-grid{
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  border-radius: 18px;
}

/* separadores */
.dv-projects-head{
  padding: 18px;
  margin-top: 16px;
}

.dv-projects-filters{
  padding: 14px 18px;
  margin-top: 12px;
}

.dv-projects-grid{
  padding: 18px;
  margin-top: 12px;
}

/* chips */
.dv-filters{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}

.dv-chip{
  border-radius:999px;
  padding:9px 12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: rgba(233,238,247,.75);
  font-size:13px;
  cursor:pointer;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
  user-select:none;
}

.dv-chip:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.05);
}

.dv-chip.is-active{
  border-color: rgba(0,172,237,.55);
  background: rgba(0,172,237,.10);
  color: rgba(233,238,247,.92);
}

/* search */
.dv-search{
  width: 100%;
  max-width: 420px;
  margin-left:auto;
}

.dv-search input{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.25);
  color: #e9eef7;
  outline:none;
  font-size:14px;
}

.dv-search input:focus{
  border-color: rgba(0,172,237,.45);
  box-shadow: 0 0 0 4px rgba(0,172,237,.10);
}

/* grid (se usares Elementor grid, isto só ajuda em mobile) */
.dv-projects-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
}

.dv-projects-grid > *{
  grid-column: span 6;
}

@media (max-width: 900px){
  .dv-projects-grid > *{
    grid-column: span 12;
  }
}

/* project card */
.dv-proj{
  border-radius: 18px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(0,0,0,.15));
  overflow:hidden;
  transition: transform .12s ease, border-color .12s ease;
  min-height: 240px;
  display:flex;
  flex-direction:column;
}

.dv-proj:hover{
  transform: translateY(-2px);
  border-color: rgba(0,172,237,.35);
}

.dv-thumb{
  height:150px;
  border-bottom:1px solid rgba(255,255,255,.08);
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(500px 220px at 40% 30%, rgba(0,172,237,.18), transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
}

.dv-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:.96;
}

.dv-badge{
  position:absolute;
  top:12px;
  left:12px;
  padding:7px 10px;
  border-radius:999px;
  background: rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.10);
  font-size:12px;
  color: rgba(233,238,247,.78);
  backdrop-filter: blur(6px);
}

.dv-body{
  padding:14px 14px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
  flex:1;
}

.dv-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.dv-title h3{
  margin:0;
  font-size:16px;
  letter-spacing:.02em;
}

.dv-title small{
  color: rgba(233,238,247,.55);
  font-size:12px;
  white-space:nowrap;
}

.dv-desc{
  margin:0;
  color: rgba(233,238,247,.66);
  font-size:13.5px;
  line-height:1.6;
  min-height:44px;
}

.dv-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:auto;
}

.dv-tag{
  font-size:12px;
  color: rgba(233,238,247,.7);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
  padding:6px 9px;
  border-radius:999px;
}

.dv-actions{
  display:flex;
  gap:10px;
  margin-top:10px;
}

.dv-link{
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.18);
  font-weight:800;
  font-size:13px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
}

.dv-link:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.06);
}

.dv-link.dv-primary{
  border-color: rgba(0,172,237,.45);
  background: rgba(0,172,237,.10);
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-5fecdad *//* ===== DigiVale Portfolio (Elementor) ===== */

.dv-projects{
  max-width: 1200px;
  margin: 0 auto;
}

.dv-muted{
  color: rgba(233,238,247,.55);
  font-size: 13px;
}

/* header box look (opcional, se quiseres a “caixa” como no HTML) */
.dv-projects-head,
.dv-projects-filters,
.dv-projects-grid{
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  border-radius: 18px;
}

/* separadores */
.dv-projects-head{
  padding: 18px;
  margin-top: 16px;
}

.dv-projects-filters{
  padding: 14px 18px;
  margin-top: 12px;
}

.dv-projects-grid{
  padding: 18px;
  margin-top: 12px;
}

/* chips */
.dv-filters{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}

.dv-chip{
  border-radius:999px;
  padding:9px 12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: rgba(233,238,247,.75);
  font-size:13px;
  cursor:pointer;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
  user-select:none;
}

.dv-chip:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.05);
}

.dv-chip.is-active{
  border-color: rgba(0,172,237,.55);
  background: rgba(0,172,237,.10);
  color: rgba(233,238,247,.92);
}

/* search */
.dv-search{
  width: 100%;
  max-width: 420px;
  margin-left:auto;
}

.dv-search input{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.25);
  color: #e9eef7;
  outline:none;
  font-size:14px;
}

.dv-search input:focus{
  border-color: rgba(0,172,237,.45);
  box-shadow: 0 0 0 4px rgba(0,172,237,.10);
}

/* grid (se usares Elementor grid, isto só ajuda em mobile) */
.dv-projects-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
}

.dv-projects-grid > *{
  grid-column: span 6;
}

@media (max-width: 900px){
  .dv-projects-grid > *{
    grid-column: span 12;
  }
}

/* project card */
.dv-proj{
  border-radius: 18px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(0,0,0,.15));
  overflow:hidden;
  transition: transform .12s ease, border-color .12s ease;
  min-height: 240px;
  display:flex;
  flex-direction:column;
}

.dv-proj:hover{
  transform: translateY(-2px);
  border-color: rgba(0,172,237,.35);
}

.dv-thumb{
  height:150px;
  border-bottom:1px solid rgba(255,255,255,.08);
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(500px 220px at 40% 30%, rgba(0,172,237,.18), transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
}

.dv-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:.96;
}

.dv-badge{
  position:absolute;
  top:12px;
  left:12px;
  padding:7px 10px;
  border-radius:999px;
  background: rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.10);
  font-size:12px;
  color: rgba(233,238,247,.78);
  backdrop-filter: blur(6px);
}

.dv-body{
  padding:14px 14px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
  flex:1;
}

.dv-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.dv-title h3{
  margin:0;
  font-size:16px;
  letter-spacing:.02em;
}

.dv-title small{
  color: rgba(233,238,247,.55);
  font-size:12px;
  white-space:nowrap;
}

.dv-desc{
  margin:0;
  color: rgba(233,238,247,.66);
  font-size:13.5px;
  line-height:1.6;
  min-height:44px;
}

.dv-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:auto;
}

.dv-tag{
  font-size:12px;
  color: rgba(233,238,247,.7);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
  padding:6px 9px;
  border-radius:999px;
}

.dv-actions{
  display:flex;
  gap:10px;
  margin-top:10px;
}

.dv-link{
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.18);
  font-weight:800;
  font-size:13px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
}

.dv-link:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.06);
}

.dv-link.dv-primary{
  border-color: rgba(0,172,237,.45);
  background: rgba(0,172,237,.10);
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-4164f43 *//* ===== DigiVale Portfolio (Elementor) ===== */

.dv-projects{
  max-width: 1200px;
  margin: 0 auto;
}

.dv-muted{
  color: rgba(233,238,247,.55);
  font-size: 13px;
}

/* header box look (opcional, se quiseres a “caixa” como no HTML) */
.dv-projects-head,
.dv-projects-filters,
.dv-projects-grid{
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  border-radius: 18px;
}

/* separadores */
.dv-projects-head{
  padding: 18px;
  margin-top: 16px;
}

.dv-projects-filters{
  padding: 14px 18px;
  margin-top: 12px;
}

.dv-projects-grid{
  padding: 18px;
  margin-top: 12px;
}

/* chips */
.dv-filters{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}

.dv-chip{
  border-radius:999px;
  padding:9px 12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: rgba(233,238,247,.75);
  font-size:13px;
  cursor:pointer;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
  user-select:none;
}

.dv-chip:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.05);
}

.dv-chip.is-active{
  border-color: rgba(0,172,237,.55);
  background: rgba(0,172,237,.10);
  color: rgba(233,238,247,.92);
}

/* search */
.dv-search{
  width: 100%;
  max-width: 420px;
  margin-left:auto;
}

.dv-search input{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.25);
  color: #e9eef7;
  outline:none;
  font-size:14px;
}

.dv-search input:focus{
  border-color: rgba(0,172,237,.45);
  box-shadow: 0 0 0 4px rgba(0,172,237,.10);
}

/* grid (se usares Elementor grid, isto só ajuda em mobile) */
.dv-projects-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
}

.dv-projects-grid > *{
  grid-column: span 6;
}

@media (max-width: 900px){
  .dv-projects-grid > *{
    grid-column: span 12;
  }
}

/* project card */
.dv-proj{
  border-radius: 18px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(0,0,0,.15));
  overflow:hidden;
  transition: transform .12s ease, border-color .12s ease;
  min-height: 240px;
  display:flex;
  flex-direction:column;
}

.dv-proj:hover{
  transform: translateY(-2px);
  border-color: rgba(0,172,237,.35);
}

.dv-thumb{
  height:150px;
  border-bottom:1px solid rgba(255,255,255,.08);
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(500px 220px at 40% 30%, rgba(0,172,237,.18), transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
}

.dv-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:.96;
}

.dv-badge{
  position:absolute;
  top:12px;
  left:12px;
  padding:7px 10px;
  border-radius:999px;
  background: rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.10);
  font-size:12px;
  color: rgba(233,238,247,.78);
  backdrop-filter: blur(6px);
}

.dv-body{
  padding:14px 14px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
  flex:1;
}

.dv-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.dv-title h3{
  margin:0;
  font-size:16px;
  letter-spacing:.02em;
}

.dv-title small{
  color: rgba(233,238,247,.55);
  font-size:12px;
  white-space:nowrap;
}

.dv-desc{
  margin:0;
  color: rgba(233,238,247,.66);
  font-size:13.5px;
  line-height:1.6;
  min-height:44px;
}

.dv-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:auto;
}

.dv-tag{
  font-size:12px;
  color: rgba(233,238,247,.7);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
  padding:6px 9px;
  border-radius:999px;
}

.dv-actions{
  display:flex;
  gap:10px;
  margin-top:10px;
}

.dv-link{
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.18);
  font-weight:800;
  font-size:13px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
}

.dv-link:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.06);
}

.dv-link.dv-primary{
  border-color: rgba(0,172,237,.45);
  background: rgba(0,172,237,.10);
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-eefa126 *//* ===== DigiVale Portfolio (Elementor) ===== */

.dv-projects{
  max-width: 1200px;
  margin: 0 auto;
}

.dv-muted{
  color: rgba(233,238,247,.55);
  font-size: 13px;
}

/* header box look (opcional, se quiseres a “caixa” como no HTML) */
.dv-projects-head,
.dv-projects-filters,
.dv-projects-grid{
  border: 1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  border-radius: 18px;
}

/* separadores */
.dv-projects-head{
  padding: 18px;
  margin-top: 16px;
}

.dv-projects-filters{
  padding: 14px 18px;
  margin-top: 12px;
}

.dv-projects-grid{
  padding: 18px;
  margin-top: 12px;
}

/* chips */
.dv-filters{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}

.dv-chip{
  border-radius:999px;
  padding:9px 12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(255,255,255,.02);
  color: rgba(233,238,247,.75);
  font-size:13px;
  cursor:pointer;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
  user-select:none;
}

.dv-chip:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.05);
}

.dv-chip.is-active{
  border-color: rgba(0,172,237,.55);
  background: rgba(0,172,237,.10);
  color: rgba(233,238,247,.92);
}

/* search */
.dv-search{
  width: 100%;
  max-width: 420px;
  margin-left:auto;
}

.dv-search input{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.25);
  color: #e9eef7;
  outline:none;
  font-size:14px;
}

.dv-search input:focus{
  border-color: rgba(0,172,237,.45);
  box-shadow: 0 0 0 4px rgba(0,172,237,.10);
}

/* grid (se usares Elementor grid, isto só ajuda em mobile) */
.dv-projects-grid{
  display:grid;
  grid-template-columns: repeat(12, 1fr);
  gap:14px;
}

.dv-projects-grid > *{
  grid-column: span 6;
}

@media (max-width: 900px){
  .dv-projects-grid > *{
    grid-column: span 12;
  }
}

/* project card */
.dv-proj{
  border-radius: 18px;
  border:1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(0,0,0,.15));
  overflow:hidden;
  transition: transform .12s ease, border-color .12s ease;
  min-height: 240px;
  display:flex;
  flex-direction:column;
}

.dv-proj:hover{
  transform: translateY(-2px);
  border-color: rgba(0,172,237,.35);
}

.dv-thumb{
  height:150px;
  border-bottom:1px solid rgba(255,255,255,.08);
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(500px 220px at 40% 30%, rgba(0,172,237,.18), transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,.04), rgba(255,255,255,.01));
}

.dv-thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
  opacity:.96;
}

.dv-badge{
  position:absolute;
  top:12px;
  left:12px;
  padding:7px 10px;
  border-radius:999px;
  background: rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.10);
  font-size:12px;
  color: rgba(233,238,247,.78);
  backdrop-filter: blur(6px);
}

.dv-body{
  padding:14px 14px 16px;
  display:flex;
  flex-direction:column;
  gap:10px;
  flex:1;
}

.dv-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.dv-title h3{
  margin:0;
  font-size:16px;
  letter-spacing:.02em;
}

.dv-title small{
  color: rgba(233,238,247,.55);
  font-size:12px;
  white-space:nowrap;
}

.dv-desc{
  margin:0;
  color: rgba(233,238,247,.66);
  font-size:13.5px;
  line-height:1.6;
  min-height:44px;
}

.dv-tags{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:auto;
}

.dv-tag{
  font-size:12px;
  color: rgba(233,238,247,.7);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.02);
  padding:6px 9px;
  border-radius:999px;
}

.dv-actions{
  display:flex;
  gap:10px;
  margin-top:10px;
}

.dv-link{
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.08);
  background: rgba(0,0,0,.18);
  font-weight:800;
  font-size:13px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  transition: border-color .12s ease, background .12s ease, transform .12s ease;
}

.dv-link:hover{
  transform: translateY(-1px);
  border-color: rgba(0,172,237,.35);
  background: rgba(0,172,237,.06);
}

.dv-link.dv-primary{
  border-color: rgba(0,172,237,.45);
  background: rgba(0,172,237,.10);
}/* End custom CSS */
/* Start custom CSS for container, class: .elementor-element-6d2b6e3 */.dv-actions a{
text-decoration:none !important;
}

.dv-link{
color:#fff;
text-decoration:none;
padding:8px 16px;
border-radius:6px;
border:1px solid #1AB4F5;
display:inline-block;
transition:all .2s ease;
}

.dv-link:hover{
background:#1AB4F5;
color:#000;
}

.dv-link.dv-primary{
background:#1AB4F5;
color:#000;
border:none;
}

.dv-link.dv-primary:hover{
background:#1596cc;
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-1ba5ed3 */.dv-modal{
display:none;
position:fixed;
inset:0;
z-index:9999;
overflow-y:auto;
}

.dv-modal-overlay{
position:absolute;
inset:0;
background:rgba(0,0,0,0.9);
backdrop-filter:blur(8px);
}

.dv-modal-content{
position:relative;
max-width:950px;
margin:60px auto;
background:#0A0A0A;
border-radius:12px;
padding:40px;
color:#fff;
font-family:DM Sans;

max-height:85vh;
overflow-y:auto;
}

.dv-modal-close{
position:absolute;
right:20px;
top:20px;
background:none;
border:none;
color:white;
font-size:22px;
cursor:pointer;
}

.dv-modal-hero img{
width:100%;
border-radius:10px;
margin-bottom:20px;
}

.dv-hero-info h2{
font-family:Bebas Neue;
font-size:44px;
letter-spacing:1px;
margin-bottom:4px;
}

.dv-hero-info p{
color:#888;
}

.dv-modal-grid{
display:grid;
grid-template-columns:repeat(3,1fr);
gap:20px;
margin:30px 0;
}

.dv-case{
background:#111;
padding:15px;
border-radius:6px;
}

.dv-case h3{
font-size:14px;
color:#1AB4F5;
margin-bottom:5px;
}

.dv-modal-section{
margin-top:25px;
}

.dv-modal-section h3{
font-family:Bebas Neue;
font-size:24px;
color:#1AB4F5;
margin-bottom:10px;
}

.dv-modal-footer{
margin-top:40px;
}

.dv-modal-footer a{
background:#1AB4F5;
color:#000;
padding:14px 22px;
border-radius:6px;
text-decoration:none;
font-weight:600;
}

.dv-case-cta{
margin-top:50px;
padding:30px;
background:#111;
border-radius:10px;
text-align:center;
}

.dv-case-cta h3{
font-family:Bebas Neue;
font-size:28px;
margin-bottom:10px;
color:#1AB4F5;
}

.dv-case-cta p{
color:#888;
max-width:600px;
margin:auto;
margin-bottom:20px;
}

.dv-cta-project{
background:#1AB4F5;
color:#000;
padding:14px 24px;
border-radius:6px;
text-decoration:none;
font-weight:600;
display:inline-block;
}

.dv-cta-project{
background:#1AB4F5;
color:#000 !important;
padding:14px 24px;
border-radius:6px;
text-decoration:none !important;
font-weight:600;
display:inline-block;
}

.dv-cta-project:hover{
background:#1596cc;
color:#000 !important;
text-decoration:none !important;
}

.dv-modal-footer a{
text-decoration:none !important;
}

.dv-modal-footer{
margin-top:40px;
text-align:center;
}/* End custom CSS */