/* r95-r6: projetos globais com contexto operacional por ambiente */
.projects-page .project-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:22px}
.projects-page .project-card{border:1px solid rgba(36,212,190,.24);border-radius:22px;overflow:hidden;background:linear-gradient(145deg,rgba(4,27,42,.98),rgba(3,22,35,.98));box-shadow:0 18px 46px rgba(0,0,0,.22);position:relative}
.projects-page .project-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,#2ee6ca,transparent 76%);opacity:.8}
.projects-page .project-card>header{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(250px,auto);gap:18px;align-items:start;padding:24px 26px 20px;border-bottom:1px solid rgba(94,157,179,.18)}
.projects-page .project-card>header>div:nth-child(2){min-width:0}
.projects-page .project-icon{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;background:linear-gradient(145deg,rgba(16,142,151,.34),rgba(13,64,82,.46));border:1px solid rgba(46,230,202,.3);color:#3ff0d5;font-size:20px}
.projects-page .project-card h3{font-size:22px;margin:9px 0 4px;color:#eefaff}
.projects-page .project-card header p{margin:0;color:#8eabb9;max-width:720px}
.projects-page .project-environment-context{justify-self:end;display:flex;flex-direction:column;gap:3px;min-width:250px;padding:12px 15px;border-radius:14px;border:1px solid rgba(93,159,181,.22);background:rgba(4,23,37,.68);color:#9fb8c5!important;font-size:12px!important;line-height:1.45;text-align:left}
.projects-page .project-environment-context::before{content:"AMBIENTE DE TRABALHO";font-size:10px;letter-spacing:.12em;color:#2ee6ca;font-weight:800}
.projects-page .project-card-statuses{display:flex;gap:8px;flex-wrap:wrap}
.projects-page .badge.progress{background:rgba(255,176,55,.12);border:1px solid rgba(255,176,55,.42);color:#ffc36b}
.projects-page .project-stats{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:48px 26px 22px;background:rgba(3,21,34,.35);border-bottom:1px solid rgba(94,157,179,.16)}
.projects-page .project-stats::before{content:"ARTEFATOS LÓGICOS DO PROJETO";position:absolute;top:19px;left:26px;color:#2ee6ca;font-size:10px;font-weight:800;letter-spacing:.12em}
.projects-page .project-stats>div{padding:17px 19px;border-radius:15px;border:1px solid rgba(93,159,181,.18);background:rgba(4,25,39,.72)}
.projects-page .project-stats b{font-size:28px;color:#effcff}
.projects-page .project-stats span{display:block;color:#83b2c9;font-size:14px;margin-top:2px}
.projects-page .project-stats span::after{content:" · compartilhado entre ambientes";color:#607f8d;font-size:11px}
.projects-page .project-environment-callout{position:relative;margin:18px 26px;padding:42px 20px 17px 54px;border-radius:16px;background:linear-gradient(135deg,rgba(24,57,61,.56),rgba(6,33,46,.7));border:1px solid rgba(229,178,65,.34)}
.projects-page .project-environment-callout::before{content:"CONTEXTO OPERACIONAL";position:absolute;top:14px;left:54px;color:#eebd55;font-size:10px;font-weight:800;letter-spacing:.12em}
.projects-page .project-environment-callout::after{content:"";position:absolute;left:20px;top:44px;width:15px;height:15px;border:3px solid #eebd55;border-radius:50%;box-shadow:0 0 0 6px rgba(238,189,85,.08)}
.projects-page .project-environment-callout b{display:block;color:#f6fbff;font-size:15px;margin-bottom:5px}
.projects-page .project-environment-callout span{color:#a8bdc7;line-height:1.5}
.projects-page .project-card.project-environment-configured .project-environment-callout{display:none}
.projects-page .project-card>footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 26px 20px;border-top:1px solid rgba(94,157,179,.12)}
.projects-page .project-card>footer>span{font-size:11px;color:#638392}
.projects-page .entity-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.projects-page .entity-actions button{min-height:38px;border-radius:11px}
@media(max-width:1100px){.projects-page .project-card>header{grid-template-columns:auto minmax(0,1fr)}.projects-page .project-environment-context{grid-column:2;justify-self:stretch;min-width:0}.projects-page .project-card>footer{align-items:flex-start;flex-direction:column}.projects-page .entity-actions{justify-content:flex-start}}
@media(max-width:720px){.projects-page .project-card>header{grid-template-columns:1fr}.projects-page .project-icon{display:none}.projects-page .project-environment-context{grid-column:1}.projects-page .project-stats{grid-template-columns:1fr}.projects-page .entity-actions{width:100%}.projects-page .entity-actions button{flex:1 1 150px}}

/* r100-r13: separação visual entre ambiente selecionado e ambiente de trabalho */
.projects-page .project-environment-contexts{justify-self:end;display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:10px;min-width:min(520px,46vw)}
.projects-page .project-environment-contexts.single-context{grid-template-columns:minmax(260px,1fr);min-width:min(330px,32vw)}
.projects-page .project-environment-chip{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border-radius:14px;border:1px solid rgba(93,159,181,.24);background:rgba(4,23,37,.72);min-width:0}
.projects-page .project-environment-chip.selected-context{border-color:rgba(46,230,202,.34);background:linear-gradient(145deg,rgba(8,43,53,.82),rgba(4,25,39,.76))}
.projects-page .project-environment-chip.work-context{border-color:rgba(229,178,65,.28);background:rgba(31,30,24,.44)}
.projects-page .project-environment-chip small{font-size:9px;font-weight:900;letter-spacing:.11em;color:#59dec9}
.projects-page .project-environment-chip.work-context small{color:#e7bc59}
.projects-page .project-environment-chip b{font-size:13px;color:#eef9ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.projects-page .project-environment-chip span{font-size:10px;color:#86a2b1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.projects-page .project-environment-chip em{margin-top:2px;font-size:10px;font-style:normal;color:#b9ced7}
.projects-page .project-selected-environment-meta{display:block;margin:3px 0 5px;font-size:10px;font-weight:700;color:#6fcfc0;letter-spacing:.02em}
@media(max-width:1200px){.projects-page .project-environment-contexts{grid-column:2;justify-self:stretch;min-width:0;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.projects-page .project-environment-contexts,.projects-page .project-environment-contexts.single-context{grid-column:1;grid-template-columns:1fr;min-width:0}.projects-page .project-environment-chip b,.projects-page .project-environment-chip span{white-space:normal}}

/* r100-r24: estado validado aplicado ao componente real de Contexto operacional */
.projects-page .project-card.project-environment-validated .project-environment-callout{
  border-color:rgba(0,255,195,.52);
  background:linear-gradient(135deg,rgba(0,255,195,.105),rgba(6,33,46,.78));
  box-shadow:inset 0 0 0 1px rgba(0,255,195,.045),0 0 24px rgba(0,255,195,.035);
}
.projects-page .project-card.project-environment-validated .project-environment-callout::before{
  color:#5af0d4;
  content:"CONTEXTO OPERACIONAL · VALIDADO";
}
.projects-page .project-card.project-environment-validated .project-environment-callout::after{
  content:"✓";
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
  left:18px;
  top:41px;
  border:2px solid #46e5c7;
  border-radius:50%;
  color:#8affea;
  background:rgba(0,255,195,.16);
  box-shadow:0 0 0 6px rgba(0,255,195,.08),0 0 18px rgba(0,255,195,.12);
  font-size:12px;
  font-weight:900;
  line-height:1;
}
.projects-page .project-card.project-environment-validated .project-environment-callout b{
  color:#effffb;
}
.projects-page .project-card.project-environment-validated .project-environment-callout > span{
  display:block;
  max-width:1050px;
  color:#a9d1ca;
  font-size:0;
  line-height:1.55;
}
.projects-page .project-card.project-environment-validated .project-environment-callout > span::after{
  content:"Identidades, runtime, armazenamento e bindings foram validados.\A O ambiente está pronto para a próxima fase de provisionamento.\A Nenhum recurso cloud foi criado nesta validação.";
  display:block;
  white-space:pre-line;
  font-size:.86rem;
  line-height:1.7;
}
.projects-page .project-card.project-environment-validated .project-environment-callout .project-environment-linked-chip.selected-context,
.projects-page .project-card.project-environment-validated .project-environment-callout .project-environment-chip.selected-context{
  border-color:rgba(0,255,195,.48);
  background:rgba(0,255,195,.08);
}


/* r100-r25: semântica específica por tipo de ambiente */
.projects-page .project-card.project-environment-configured.project-environment-local .project-environment-callout{display:flex;border-color:rgba(46,230,202,.34);background:linear-gradient(135deg,rgba(7,67,73,.35),rgba(5,29,42,.72))}
.projects-page .project-card.project-environment-local .project-environment-callout::before{content:"CONTEXTO OPERACIONAL · LOCAL";color:#55dfcb}
.projects-page .project-card.project-environment-local .project-environment-callout::after{content:"⌂";display:grid;place-items:center;border-color:#48d9c4;color:#8ff4e4;background:rgba(46,230,202,.12);font-size:12px;font-weight:900}
.projects-page .project-card.project-environment-local .project-environment-callout > span{white-space:pre-line;color:#a9cbd0;line-height:1.65}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-environment-callout::before{content:"CONTEXTO OPERACIONAL · NÃO VINCULADO"}
.projects-page .project-linked-environment{align-items:flex-start;min-height:74px}
.projects-page .project-linked-environment small{display:block;margin-top:5px;color:#8eacb8;font-size:10px;font-weight:500;line-height:1.45;white-space:normal}
.projects-page .project-card.project-environment-validated .project-linked-environment span::after,.projects-page .project-card.project-environment-validated .project-linked-environment small::after{content:none!important}


/* r100-r26: gramática visual unificada dos estados operacionais */
.projects-page .project-card.project-environment-configured.project-environment-local .project-environment-callout,
.projects-page .project-card.project-environment-validated .project-environment-callout{
  border-color:rgba(0,255,195,.48);
  background:linear-gradient(135deg,rgba(0,255,195,.09),rgba(6,33,46,.76));
  box-shadow:inset 0 0 0 1px rgba(0,255,195,.04),0 0 22px rgba(0,255,195,.03);
}
.projects-page .project-card.project-environment-local:not(.project-environment-production-local) .project-environment-callout::after{
  content:"✓";
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
  left:18px;
  top:41px;
  border:2px solid #46e5c7;
  border-radius:50%;
  color:#8affea;
  background:rgba(0,255,195,.16);
  box-shadow:0 0 0 6px rgba(0,255,195,.08),0 0 18px rgba(0,255,195,.12);
  font-size:12px;
  font-weight:900;
  line-height:1;
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-environment-callout{
  border-color:rgba(238,189,85,.50);
  background:linear-gradient(135deg,rgba(238,189,85,.085),rgba(35,31,25,.70));
  box-shadow:inset 0 0 0 1px rgba(238,189,85,.035),0 0 22px rgba(238,189,85,.025);
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-environment-callout::before{
  content:"CONTEXTO OPERACIONAL · NÃO VINCULADO";
  color:#eebd55;
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-environment-callout::after{
  content:"!";
  display:grid;
  place-items:center;
  width:20px;
  height:20px;
  left:18px;
  top:41px;
  border:2px solid #eebd55;
  border-radius:50%;
  color:#ffd879;
  background:rgba(238,189,85,.13);
  box-shadow:0 0 0 6px rgba(238,189,85,.07),0 0 16px rgba(238,189,85,.08);
  font-size:14px;
  font-weight:900;
  line-height:20px;
  text-align:center;
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-environment-callout b{
  color:#fff7df;
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-environment-callout > span{
  color:#cdbf9d;
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-linked-environments{
  border-top-color:rgba(238,189,85,.14);
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-linked-environments>small{
  color:#bcae88;
}
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-linked-environment,
.projects-page .project-card.project-environment-production-local.project-environment-pending .project-linked-environment.selected{
  border-color:rgba(93,159,181,.18);
  background:rgba(4,23,37,.42);
}

/* r100-r34: somente o estado visual GCP não vinculado */
.projects-page .project-card.project-environment-gcp-not-linked .project-environment-callout{border-color:rgba(238,189,85,.50);background:linear-gradient(135deg,rgba(238,189,85,.085),rgba(35,31,25,.70));box-shadow:inset 0 0 0 1px rgba(238,189,85,.035),0 0 22px rgba(238,189,85,.025)}
.projects-page .project-card.project-environment-gcp-not-linked .project-environment-callout::before{content:"CONTEXTO OPERACIONAL · NÃO VINCULADO";color:#eebd55}
.projects-page .project-card.project-environment-gcp-not-linked .project-environment-callout::after{content:"!";display:grid;place-items:center;width:20px;height:20px;left:18px;top:41px;border:2px solid #eebd55;border-radius:50%;color:#ffd879;background:rgba(238,189,85,.13);box-shadow:0 0 0 6px rgba(238,189,85,.07),0 0 16px rgba(238,189,85,.08);font-size:14px;font-weight:900;line-height:20px;text-align:center}
.projects-page .project-card.project-environment-gcp-not-linked .project-environment-callout b{color:#fff7df}
.projects-page .project-card.project-environment-gcp-not-linked .project-environment-callout > span{color:#cdbf9d;white-space:pre-line;line-height:1.65}
.projects-page .project-card.project-environment-gcp-not-linked .project-linked-environments{border-top-color:rgba(238,189,85,.14)}
.projects-page .project-card.project-environment-gcp-not-linked .project-linked-environments>small{color:#bcae88}
.projects-page .project-card.project-environment-gcp-not-linked .project-linked-environment,.projects-page .project-card.project-environment-gcp-not-linked .project-linked-environment.selected{border-color:rgba(93,159,181,.18);background:rgba(4,23,37,.42)}


/* r100-r36 · compact project cards with one continuous animated region */
.projects-page .project-environment-contexts .project-card-toggle{grid-column:1/-1;justify-self:end;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:30px;padding:6px 10px;border:1px solid rgba(93,159,181,.28);border-radius:9px;background:rgba(4,23,37,.58);color:#9db8c6;font-size:11px;font-weight:800;cursor:pointer;transition:border-color .2s ease,background .2s ease,color .2s ease}
.projects-page .project-environment-contexts .project-card-toggle:hover{border-color:rgba(46,230,202,.55);background:rgba(46,230,202,.08);color:#6ff0dc}
.projects-page .project-card-toggle i{display:block;width:8px;height:8px;border-right:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(45deg) translate(-1px,-1px);transform-origin:center;transition:transform 620ms cubic-bezier(.22,1,.36,1)}
.projects-page .project-card-expanded .project-card-toggle i{transform:rotate(225deg) translate(-1px,-1px)}
.projects-page .project-card-expandable{height:0;overflow:hidden;opacity:0;transform:translateY(-8px);transition:height 620ms cubic-bezier(.22,1,.36,1),opacity 420ms ease,transform 620ms cubic-bezier(.22,1,.36,1);will-change:height,opacity,transform}
.projects-page .project-card-expandable-inner{min-height:0;overflow:hidden}
.projects-page .project-card-expanded .project-card-expandable{opacity:1;transform:translateY(0)}
.projects-page .project-card>footer{border-top:0}
@media(max-width:760px){.projects-page .project-environment-contexts .project-card-toggle{justify-self:stretch}}
