
:root{
  --bg:var(--legacy-b638f7409e,#07090b);--panel:var(--legacy-51fbb46ed7,#0c1115);--panel2:var(--legacy-61421edcc9,#10171c);--line:var(--legacy-088b454b3c,#1d2a32);
  --text:var(--legacy-b3e59da4e5,#f2efe8);--muted:var(--legacy-5ff4c3018d,#95a6b0);--accent:var(--legacy-a73f842f9a,#4bcdd2);
}
.pv-wrap{
  min-height:100vh;color:var(--text);
  background:
    radial-gradient(circle at 77% 4%,var(--legacy-2d4acf11e5,rgba(61,198,203,.035)),transparent 23%),
    var(--legacy-b638f7409e,#07090b);
}

/* Header: approved horizontal JM Forge logo, slightly stronger presence */
[data-site-header] .pv-brand-link{
  display:flex!important;align-items:center!important;min-width:184px!important;text-decoration:none!important;
}
[data-site-header] .pv-brand-link>*{display:none!important}
[data-site-header] .pv-header-logo{
  display:block!important;width:168px!important;height:auto!important;max-height:46px!important;object-fit:contain!important;
}

/* HERO — approved composition, slightly tighter vertically */
.pv-hero{
  max-width:1180px;margin:0 auto;padding:70px 24px 72px;
  display:grid;grid-template-columns:minmax(0,700px) 1fr;gap:86px;
  min-height:430px;align-items:center;
}
.pv-kicker{
  font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--legacy-cf22aca19f,#58d5d9);margin:0 0 15px;
}
.pv-hero h1{
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(51px,5.2vw,72px);line-height:.99;letter-spacing:-.047em;
  margin:0 0 22px;
}
.pv-hero p{
  font-size:16.7px;line-height:1.69;color:var(--legacy-9abce2958b,#a8b6bf);margin:0;max-width:650px;
}
.pv-hero-space{min-height:260px}

/* Catalog shell */
.pv-section{border-top:1px solid var(--legacy-3a5adf3fa4,#162028);padding:68px 0 78px}
.pv-container{max-width:1180px;margin:0 auto;padding:0 24px}
.pv-section-head{
  display:grid;grid-template-columns:1fr .72fr;gap:48px;align-items:end;margin-bottom:23px;
}
.pv-section-head h2{
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(36px,3.9vw,52px);line-height:1.02;letter-spacing:-.042em;margin:5px 0 0;
}
.pv-section-head p{color:var(--legacy-d3ae634ca4,#91a2ad);font-size:13.6px;line-height:1.65;margin:0}

/* Family navigation */
.pv-family-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:25px 0 26px}
.pv-tab{
  appearance:none;border:1px solid var(--legacy-29b18892af,#24323b);background:var(--legacy-f4c8be4899,#090e12);color:var(--legacy-92d5ab4b9c,#91a3ae);
  border-radius:999px;padding:9px 12px;font-size:10.4px;line-height:1;
  cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease,box-shadow .16s ease;
}
.pv-tab:hover{border-color:var(--legacy-f237271590,#3a555e);color:var(--legacy-1cb696469e,#dde7ea)}
.pv-tab.active{
  border-color:var(--legacy-80f0201c88,#53d2d6);color:var(--legacy-3cfa97912a,#f3fbfb);background:var(--legacy-0f4c7ed669,#0f1b1f);
  box-shadow:0 0 0 1px var(--legacy-dfe18e0d33,rgba(83,210,214,.08)),0 6px 18px var(--legacy-733a2ff5ad,rgba(0,0,0,.12));
}
.pv-tab:focus-visible{outline:2px solid var(--legacy-bd9af586b4,#65d9dd);outline-offset:3px}

.pv-search{
  display:flex;align-items:center;gap:10px;
  border:1px solid var(--legacy-9d05970e8e,#22313a);background:var(--legacy-f4c8be4899,#090e12);border-radius:11px;
  padding:10px 13px;max-width:510px;margin-bottom:31px;
}
.pv-search svg{width:16px;height:16px;opacity:.57}
.pv-search input{
  border:0!important;outline:0!important;background:transparent!important;color:var(--legacy-34e1a8e31d,#eef3f5)!important;
  padding:0!important;box-shadow:none!important;width:100%;font-size:13.2px;
}
.pv-search input::placeholder{color:var(--legacy-77c231e27f,#687984)}

.pv-family-panel{display:none}
.pv-family-panel.active{display:block;animation:pvFade .16s ease}
@keyframes pvFade{from{opacity:.78;transform:translateY(2px)}to{opacity:1;transform:none}}

.pv-family-title{
  display:grid;grid-template-columns:1fr .72fr;gap:38px;align-items:end;
  border-bottom:1px solid var(--legacy-23ec1d9baf,#19262e);padding-bottom:17px;margin-bottom:17px;
}
.pv-family-title h3{
  font-family:Georgia,"Times New Roman",serif;font-size:30px;line-height:1.06;
  letter-spacing:-.029em;margin:0;
}
.pv-family-title p{margin:0;color:var(--legacy-7bed37d4fb,#8d9faa);font-size:12.3px;line-height:1.56}

/* Cards */
.pv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.pv-card{
  display:flex;flex-direction:column;position:relative;min-height:220px;
  border:1px solid var(--legacy-e58a754087,#1f2d35);border-radius:15px;
  background:linear-gradient(145deg,var(--legacy-fc4283973c,#0d1419),var(--legacy-a1a95ee210,#090d11));
  padding:20px 80px 19px 20px;text-decoration:none!important;color:inherit!important;
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
.pv-card:hover{
  transform:translateY(-2px);border-color:var(--legacy-d335c3ba02,#34535b);
  background:linear-gradient(145deg,var(--legacy-c375ad73cf,#0f171c),var(--legacy-f4c8be4899,#090e12));
  box-shadow:0 12px 30px var(--legacy-cdd566b2ec,rgba(0,0,0,.19));
}
.pv-card:focus-visible{outline:2px solid var(--legacy-cf22aca19f,#58d5d9);outline-offset:3px}

/* Balance the single fifth e-commerce card without making it look oversized */
.pv-card-balance{
  grid-column:1 / -1;
  width:calc(50% - 6.5px);
  justify-self:center;
}

.pv-icon{
  position:absolute;top:19px;right:19px;width:50px;height:50px;
  border:1px solid var(--legacy-0f137a915f,#27363f);border-radius:12px;overflow:hidden;background:var(--legacy-8e72370a34,#091015);
  display:grid;place-items:center;
  box-shadow:0 6px 16px var(--legacy-8e71d5d639,rgba(0,0,0,.14));
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;
}
.pv-icon img{
  width:100%;height:100%;object-fit:contain;display:block;
  padding:4px;box-sizing:border-box;filter:saturate(.91) brightness(.985);
}
.pv-card:hover .pv-icon{
  transform:translateY(-1px);
  border-color:var(--legacy-46eaf628ba,#35535c);
  box-shadow:0 7px 18px var(--legacy-22ba49161c,rgba(0,0,0,.18));
}

.pv-card small{
  display:block;color:var(--legacy-b768dab95c,#56cdd2);font-size:8.5px;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px;
}
.pv-card h4{
  font-family:Georgia,"Times New Roman",serif;font-size:21.5px;line-height:1.1;
  letter-spacing:-.023em;margin:0 0 10px;color:var(--legacy-4b816e63f9,#f4f0e8);max-width:350px;
}
.pv-card p{
  font-size:12.2px;line-height:1.56;color:var(--legacy-476578e9ac,#a0aeb7);margin:0 0 13px;max-width:395px;
}
.pv-fit{
  font-size:9.5px;line-height:1.46;color:var(--legacy-bf265235ce,#728590);border-top:1px solid var(--legacy-5ca85b3e90,#1a262e);
  padding-top:9px;margin-top:auto;max-width:395px;
}
.pv-fit::before{content:"Best for: ";color:var(--legacy-b12c931c1b,#8da2ac);font-weight:700}
.pv-link{
  display:inline-flex;align-items:center;gap:6px;margin-top:11px;
  font-size:11.3px;font-weight:800;color:var(--legacy-9916881236,#eaf4f5);
}
.pv-link b{color:var(--legacy-721de66f27,#55cfd4);transition:transform .15s ease}
.pv-card:hover .pv-link b{transform:translateX(2px)}
.pv-empty{display:none;border:1px solid var(--legacy-b9b1aa0b85,#26353e);border-radius:13px;padding:25px;color:var(--legacy-12950c8b99,#93a4ae)}

/* Custom-work CTA — slightly smaller and cleaner */
.pv-cta{border-top:1px solid var(--legacy-3a5adf3fa4,#162028);padding:54px 0 66px}
.pv-cta-box{
  display:grid;grid-template-columns:1fr auto;gap:30px;align-items:center;
  border:1px solid var(--legacy-179b7e5b25,#22323b);border-radius:16px;background:var(--legacy-f9604fdd41,#0a1014);padding:25px 28px;
}
.pv-cta-box h2{
  font-family:Georgia,"Times New Roman",serif;font-size:29px;line-height:1.07;
  letter-spacing:-.032em;margin:4px 0 8px;
}
.pv-cta-box p{color:var(--legacy-ed0e831b6b,#90a1ac);line-height:1.58;margin:0;font-size:13.1px}
.pv-btns{display:flex;gap:8px;flex-wrap:wrap}
.pv-btn{
  display:inline-flex;padding:10px 13px;border:1px solid var(--legacy-0f04e34714,#30414a);border-radius:9px;
  color:var(--legacy-0bbedb78b7,#e8eff1)!important;text-decoration:none!important;font-size:11.3px;font-weight:800;
  transition:border-color .15s ease,background .15s ease;
}
.pv-btn:hover{border-color:var(--legacy-dbf24e890b,#4b6b74);background:var(--legacy-db377053b0,#0e161a)}
.pv-btn.primary{background:var(--legacy-c7889f3d7d,#eee9df);color:var(--legacy-5b997dcc49,#0a0d0f)!important;border-color:var(--legacy-c7889f3d7d,#eee9df)}

/* Detail pages */
.pv-detail-hero{
  max-width:1180px;margin:0 auto;padding:68px 24px 64px;
  display:grid;grid-template-columns:76px minmax(0,700px) 1fr;gap:25px;align-items:start;
}
.pv-detail-icon{
  width:68px;height:68px;border:1px solid var(--legacy-0f137a915f,#27363f);border-radius:16px;overflow:hidden;background:var(--legacy-8e72370a34,#091015);
  box-shadow:0 8px 21px var(--legacy-819b024f9d,rgba(0,0,0,.16));
}
.pv-detail-icon img{width:100%;height:100%;object-fit:contain;padding:5px;box-sizing:border-box}
.pv-breadcrumb{font-size:9.5px;color:var(--legacy-11b4e7a63d,#70838e);margin-bottom:15px}
.pv-breadcrumb a{color:var(--legacy-83446bc10e,#65d7db)!important;text-decoration:none!important}
.pv-detail-copy h1{
  font-family:Georgia,"Times New Roman",serif;font-size:clamp(40px,4.3vw,57px);
  line-height:1;letter-spacing:-.043em;margin:0 0 17px;
}
.pv-detail-copy .lead{font-size:15.6px;line-height:1.64;color:var(--legacy-a9c72650c5,#abb8c0);margin:0}
.pv-detail-content{border-top:1px solid var(--legacy-3a5adf3fa4,#162028);padding:56px 0 62px}
.pv-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.pv-info{
  border:1px solid var(--legacy-681cfc270b,#1f2e36);border-radius:14px;background:var(--legacy-11e1ff3478,#0b1115);padding:23px;
}
.pv-info-core{min-height:215px}
.pv-info h2{
  font-family:Georgia,"Times New Roman",serif;font-size:24.5px;line-height:1.09;margin:5px 0 12px;
}
.pv-info p,.pv-info li{color:var(--legacy-31d8d1272d,#9ba9b2);line-height:1.62;font-size:12.4px}
.pv-info ul{margin:0;padding-left:18px}.pv-info li+li{margin-top:5px}
.pv-info-wide{
  grid-column:1 / -1;display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;
  min-height:auto;
}
.pv-info-wide .pv-btns{align-self:center}

/* Mobile */
@media(max-width:900px){
  .pv-hero{grid-template-columns:1fr;min-height:auto;padding-top:58px;padding-bottom:60px;gap:0}
  .pv-hero-space{display:none}
  .pv-section-head,.pv-family-title,.pv-cta-box{grid-template-columns:1fr}
  .pv-grid{grid-template-columns:1fr}
  .pv-card-balance{grid-column:auto;width:auto;justify-self:stretch}
  .pv-section-head{gap:14px}.pv-family-title{gap:8px}
  .pv-detail-hero{grid-template-columns:66px 1fr;padding-top:56px}
  .pv-detail-hero>div:last-child{display:none}
}
@media(max-width:700px){
  .pv-family-tabs{
    flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;margin-right:-24px;padding-right:24px;
    scrollbar-width:none;
  }
  .pv-family-tabs::-webkit-scrollbar{display:none}
  .pv-tab{white-space:nowrap}
}
@media(max-width:620px){
  [data-site-header] .pv-header-logo{width:148px!important}
  .pv-hero h1{font-size:46px}
  .pv-hero p{font-size:15px}
  .pv-section{padding-top:56px}
  .pv-card{padding:18px 68px 17px 18px;min-height:210px}
  .pv-icon{width:45px;height:45px;top:17px;right:17px}
  .pv-card h4{font-size:20.5px}
  .pv-detail-hero{grid-template-columns:1fr;gap:16px}
  .pv-detail-icon{width:60px;height:60px}
  .pv-detail-grid{grid-template-columns:1fr}
  .pv-info-wide{grid-column:auto;grid-template-columns:1fr}
}

/* ============================================================
   FULL LAUNCH PATCH 01 — PRODUCT PORTFOLIO ARCHITECTURE
   ============================================================ */
.pv-portfolio-hero{min-height:500px;padding-bottom:64px}
.pv-portfolio-map{min-height:325px;position:relative;border:1px solid var(--legacy-24e364c370,#202d36);border-radius:22px;background:linear-gradient(145deg,var(--legacy-b090773eb5,#10161c),var(--legacy-3b58e41763,#080c10));overflow:hidden;box-shadow:0 26px 70px var(--legacy-facd0aa2b8,rgba(0,0,0,.24))}
.pv-portfolio-map::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--legacy-b8ca2cb231,rgba(255,255,255,.03)) 1px,transparent 1px),linear-gradient(90deg,var(--legacy-b8ca2cb231,rgba(255,255,255,.03)) 1px,transparent 1px);background-size:36px 36px;opacity:.55}
.pv-portfolio-map::after{content:"";position:absolute;width:210px;height:210px;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,var(--legacy-e85a6ebab7,rgba(113,143,255,.15)),transparent 68%)}
.pv-portfolio-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:116px;height:116px;border-radius:50%;border:1px solid var(--legacy-2185e1dd5d,rgba(113,143,255,.45));display:grid;place-content:center;text-align:center;background:radial-gradient(circle,var(--legacy-6c992d3119,rgba(113,143,255,.12)),var(--legacy-69fcd34fd6,#090d12) 70%);z-index:2}.pv-portfolio-core strong{font:400 20px/1 var(--serif)}.pv-portfolio-core small{margin-top:8px;color:var(--legacy-895cfc1dd1,#8095d9);font:700 7px/1.3 var(--mono);text-transform:uppercase;letter-spacing:.08em}
.pv-portfolio-node{position:absolute;z-index:3;width:150px;padding:12px;border:1px solid var(--legacy-1b577f5958,#23313a);border-radius:10px;background:var(--legacy-5ea2ad5d16,rgba(7,11,15,.94))}.pv-portfolio-node small,.pv-portfolio-node strong,.pv-portfolio-node span{display:block}.pv-portfolio-node small{color:var(--legacy-30308f6cfe,#5fd3d7);font:700 7px/1 var(--mono)}.pv-portfolio-node strong{font-size:11px;margin-top:7px}.pv-portfolio-node span{font-size:8px;color:var(--legacy-18a0a876fb,#73838e);margin-top:3px}.pv-portfolio-node.node-software{left:18px;top:54px}.pv-portfolio-node.node-api{right:18px;top:54px}.pv-portfolio-node.node-research{left:50%;bottom:18px;transform:translateX(-50%);width:190px;text-align:center}
.pv-product-lines{border-top:1px solid var(--legacy-3a5adf3fa4,#162028);padding:18px 0 70px}
.pv-product-line-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.pv-product-line{display:flex;flex-direction:column;min-height:330px;padding:21px;border:1px solid var(--legacy-e58a754087,#1f2d35);border-radius:16px;background:linear-gradient(145deg,var(--legacy-19345249a0,#0f151b),var(--legacy-a1a95ee210,#090d11));color:inherit!important;text-decoration:none!important;transition:transform .18s ease,border-color .18s ease,background .18s ease}.pv-product-line:hover{transform:translateY(-2px);border-color:var(--legacy-ae73256e1c,#35505a);background:linear-gradient(145deg,var(--legacy-215cef4821,#111920),var(--legacy-f4c8be4899,#090e12))}
.pv-product-line-top{display:flex;justify-content:space-between;align-items:center;color:var(--legacy-94bd1dfb5d,#718391);font:800 7.5px/1 var(--mono);letter-spacing:.1em}.pv-product-line-top b{padding:5px 7px;border:1px solid var(--legacy-6391907a85,rgba(75,205,210,.22));border-radius:999px;color:var(--legacy-d6294b03e6,#5ed4d8);font-size:7px}
.pv-product-line h2{font-family:Georgia,"Times New Roman",serif;font-size:25px;line-height:1.08;letter-spacing:-.028em;margin:24px 0 9px}.pv-product-line p{margin:0;color:var(--legacy-d3ae634ca4,#91a2ad);font-size:11.5px;line-height:1.58}.pv-product-line-link{margin-top:auto;padding-top:18px;color:var(--legacy-d8ba49a03a,#e9f3f4);font-size:10.5px;font-weight:800}
.pv-software-ui{height:96px;margin-top:22px;border:1px solid var(--legacy-c76e132f29,#202c34);border-radius:10px;background:var(--legacy-3b58e41763,#080c10);display:grid;grid-template-columns:repeat(2,1fr);gap:7px;padding:12px}.pv-software-ui i{border:1px solid var(--legacy-63467483e4,#222e38);border-radius:7px;background:linear-gradient(145deg,var(--legacy-115cca1450,#111823),var(--legacy-8b35a7b2ba,#0a0e13));position:relative}.pv-software-ui i::after{content:"";position:absolute;left:9px;right:18px;top:11px;height:2px;background:var(--legacy-c18a27c2a8,#354575);box-shadow:0 8px 0 var(--legacy-0efd700736,#242d38)}
.pv-api-ui{height:96px;margin-top:22px;border:1px solid var(--legacy-c76e132f29,#202c34);border-radius:10px;background:var(--legacy-3b58e41763,#080c10);display:grid;grid-template-columns:1fr 28px 70px 28px 1fr;align-items:center;padding:12px;gap:5px}.pv-api-ui span{padding:8px 5px;border:1px solid var(--legacy-24e364c370,#202d36);border-radius:7px;text-align:center;color:var(--legacy-c4ebe9e788,#738590);font:700 7px/1 var(--mono)}.pv-api-ui i{height:1px;background:linear-gradient(90deg,var(--legacy-9b0f453423,#425794),var(--legacy-a73f842f9a,#4bcdd2))}.pv-api-ui strong{width:60px;height:60px;border-radius:50%;border:1px solid var(--legacy-88a65a85dd,#405391);display:grid;place-items:center;font:500 16px/1 var(--serif);color:var(--legacy-a3e9d9b65c,#e9eef8);background:var(--legacy-29aa99c163,rgba(113,143,255,.07))}
.pv-research-ui{height:96px;margin-top:22px;border:1px solid var(--legacy-c76e132f29,#202c34);border-radius:10px;background:var(--legacy-3b58e41763,#080c10);display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:12px}.pv-research-ui>div{display:grid;align-content:center;padding:8px;border:1px solid var(--legacy-24e364c370,#202d36);border-radius:7px}.pv-research-ui small{color:var(--legacy-d62e7ffc4f,#6e8190);font:700 6.5px/1 var(--mono)}.pv-research-ui strong{font:400 19px/1 var(--serif);margin-top:8px}.pv-research-ui>div:last-child strong{color:var(--legacy-0f93eddfad,#65d5c8);font-size:13px}
/* Single cards stay aligned with the grid instead of floating in the center. */
.pv-card-balance{grid-column:auto;width:auto;justify-self:stretch}
@media(max-width:900px){.pv-product-line-grid{grid-template-columns:1fr}.pv-portfolio-map{min-height:300px}}
@media(max-width:620px){.pv-portfolio-hero{min-height:auto}.pv-portfolio-map{min-height:410px;margin-top:8px}.pv-portfolio-node{width:125px}.pv-portfolio-node.node-software{left:10px;top:48px}.pv-portfolio-node.node-api{right:10px;top:48px}.pv-portfolio-node.node-research{width:180px;bottom:18px}.pv-product-lines{padding-bottom:56px}}
