
.glps-grid{
  --glps-accent:#e10618;
  --glps-ink:#171717;
  --glps-muted:#737373;
  --glps-soft:#f6f6f5;
  --glps-line:#e5e5e2;
  display:grid;
  gap:28px;
  margin:28px 0;
  align-items:stretch
}
.glps-columns-1{grid-template-columns:1fr}
.glps-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.glps-columns-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.glps-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}

.glps-card{
  position:relative;
  min-width:0;
  min-height:360px;
  padding:24px;
  border:1px solid var(--glps-line);
  border-radius:18px;
  background:#fff;
  box-shadow:0 10px 34px rgba(0,0,0,.055);
  display:flex;
  flex-direction:column;
  overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease
}
.glps-card:before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:4px;
  background:var(--glps-accent);
  opacity:0;
  transition:opacity .2s ease
}
.glps-card:hover{
  transform:translateY(-3px);
  box-shadow:0 16px 46px rgba(0,0,0,.09);
  border-color:#d9d9d5
}
.glps-card:hover:before{opacity:1}

.glps-card__topline{display:flex;gap:14px;align-items:center;min-width:0}
.glps-avatar{
  width:50px;height:50px;
  flex:0 0 50px;
  border-radius:12px;
  object-fit:cover;
  background:#f1f1ef;
  border:1px solid #e5e5e2
}
.glps-avatar--placeholder{
  display:grid;place-items:center;
  background:#1d1d1d;
  color:#fff;
  font-weight:900;
  font-size:1.1rem
}
.glps-card__identity{min-width:0;flex:1}
.glps-title{
  margin:0;
  color:var(--glps-ink);
  font-size:1.2rem;
  line-height:1.2;
  font-weight:800;
  letter-spacing:-.015em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis
}
.glps-publisher{
  margin-top:5px;
  color:var(--glps-muted);
  font-size:.82rem;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis
}
.glps-publisher strong{color:#494949;font-weight:700}
.glps-path{
  display:inline-block;
  max-width:100%;
  margin-top:16px;
  padding:6px 9px;
  border-radius:7px;
  background:var(--glps-soft);
  color:#6c6c6c;
  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;
  font-size:.74rem;
  line-height:1;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis
}
.glps-card__content{padding:18px 0 20px;flex:1}
.glps-description{
  margin:0;
  color:#555;
  font-size:.94rem;
  line-height:1.6;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden
}
.glps-description--empty{color:#9a9a9a;font-style:italic}

.glps-stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:6px;
  padding:13px 0;
  border-top:1px solid var(--glps-line);
  border-bottom:1px solid var(--glps-line)
}
.glps-stat{
  min-width:0;
  display:grid;
  grid-template-columns:17px auto;
  grid-template-rows:auto auto;
  column-gap:6px;
  align-items:center;
  justify-content:center
}
.glps-stat svg{
  grid-row:1/3;
  width:16px;height:16px;
  fill:none;
  stroke:#7a7a7a;
  stroke-width:1.7;
  stroke-linecap:round;
  stroke-linejoin:round
}
.glps-stat:first-child svg{fill:none}
.glps-stat span{
  color:#242424;
  font-size:.86rem;
  font-weight:800;
  line-height:1
}
.glps-stat small{
  color:#999;
  font-size:.62rem;
  line-height:1.1;
  white-space:nowrap
}

.glps-card__footer{padding-top:16px}
.glps-updated{
  display:block;
  margin-bottom:12px;
  color:#969696;
  font-size:.73rem
}
.glps-actions{display:flex;gap:9px}
.glps-button{
  min-width:0;
  min-height:41px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  padding:10px 13px;
  border:1px solid #d8d8d5;
  border-radius:9px;
  background:#fff;
  color:#222;
  text-decoration:none!important;
  font:inherit;
  font-size:.78rem;
  font-weight:800;
  line-height:1;
  cursor:pointer;
  transition:.18s ease;
  box-shadow:none!important
}
.glps-button svg{
  width:15px;height:15px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round
}
.glps-button--info{flex:1}
.glps-button--info:hover{background:#f4f4f2;border-color:#c8c8c4}
.glps-button--primary{
  flex:1.1;
  background:#171717;
  color:#fff!important;
  border-color:#171717
}
.glps-button--primary:hover{background:var(--glps-accent);border-color:var(--glps-accent);color:#fff!important}

.glps-error,.glps-empty{
  padding:15px 17px;
  border:1px solid #ddd;
  border-radius:10px;
  background:#fff
}

/* Modal / Dialog */
body.glps-modal-open{overflow:hidden}
.glps-modal[hidden]{display:none!important}
.glps-modal{
  position:fixed;
  inset:0;
  z-index:999999;
  display:grid;
  place-items:center;
  padding:24px
}
.glps-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(8,8,8,.72);
  backdrop-filter:blur(5px)
}
.glps-modal__dialog{
  position:relative;
  z-index:1;
  width:min(940px,100%);
  max-height:min(820px,calc(100vh - 48px));
  overflow:auto;
  border-radius:18px;
  background:#fff;
  box-shadow:0 30px 100px rgba(0,0,0,.35)
}
.glps-modal__close{
  position:sticky;
  z-index:3;
  top:15px;
  float:right;
  margin:15px 15px -56px 0;
  width:40px;height:40px;
  display:grid;place-items:center;
  border:1px solid #e0e0dc;
  border-radius:50%;
  background:#fff;
  color:#222;
  font-size:1.6rem;
  line-height:1;
  cursor:pointer;
  box-shadow:0 5px 18px rgba(0,0,0,.08)
}
.glps-modal__content{min-height:250px}
.glps-modal__loading{
  min-height:300px;
  display:flex;
  gap:13px;
  align-items:center;
  justify-content:center;
  color:#707070
}
.glps-spinner{
  width:23px;height:23px;
  border:3px solid #e4e4e4;
  border-top-color:#171717;
  border-radius:50%;
  animation:glps-spin .8s linear infinite
}
@keyframes glps-spin{to{transform:rotate(360deg)}}

.glps-detail__hero{
  padding:34px 38px 28px;
  background:#171717;
  color:#fff
}
.glps-detail__identity{display:flex;gap:15px;align-items:center;padding-right:50px}
.glps-detail__avatar{
  width:60px;height:60px;
  border-radius:13px;
  object-fit:cover;
  background:#2b2b2b
}
.glps-detail__avatar-placeholder{
  width:60px;height:60px;
  border-radius:13px;
  display:grid;place-items:center;
  background:#303030;
  font-size:1.25rem;
  font-weight:900
}
.glps-detail__hero h2{
  margin:0;
  color:#fff;
  font-size:clamp(1.6rem,3vw,2.35rem);
  line-height:1.08;
  letter-spacing:-.025em
}
.glps-detail__publisher{margin-top:6px;color:#bcbcbc;font-size:.86rem}
.glps-detail__path{
  margin-top:17px;
  color:#9e9e9e;
  font:500 .75rem/1.4 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace
}
.glps-detail__body{padding:30px 38px 38px}
.glps-detail__description{margin:0 0 25px;color:#555;line-height:1.65}
.glps-detail__stats{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
  margin-bottom:30px
}
.glps-detail-stat{
  padding:14px;
  border:1px solid #e6e6e2;
  border-radius:11px;
  background:#fafafa
}
.glps-detail-stat strong{
  display:block;
  font-size:1.2rem;
  line-height:1;
  color:#1d1d1d
}
.glps-detail-stat span{
  display:block;
  margin-top:6px;
  color:#8b8b8b;
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.06em
}
.glps-detail__meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px 18px;
  margin-bottom:28px;
  color:#777;
  font-size:.8rem
}
.glps-detail__topics{display:flex;flex-wrap:wrap;gap:7px;margin:-12px 0 28px}
.glps-topic{
  padding:5px 9px;
  border-radius:999px;
  background:#f2f2ef;
  color:#5c5c5c;
  font-size:.72rem
}
.glps-detail__section-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 0 13px;
  font-size:1rem;
  text-transform:uppercase;
  letter-spacing:.04em
}
.glps-release-list{display:grid;gap:10px}
.glps-release{
  padding:15px 16px;
  border:1px solid #e6e6e2;
  border-radius:11px
}
.glps-release__head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.glps-release__name{font-weight:800;color:#222}
.glps-release__tag{
  display:inline-block;
  margin-top:3px;
  color:#888;
  font:500 .72rem/1.2 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace
}
.glps-release__date{color:#999;font-size:.73rem;white-space:nowrap}
.glps-release__description{
  margin:10px 0 0;
  color:#666;
  font-size:.86rem;
  line-height:1.5;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden
}
.glps-release__assets{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.glps-release__asset{
  padding:6px 8px;
  border-radius:7px;
  background:#f3f3f0;
  color:#444!important;
  text-decoration:none!important;
  font-size:.72rem;
  font-weight:700
}
.glps-release__asset:hover{background:#e9e9e5}
.glps-no-releases{
  padding:20px;
  border:1px dashed #d9d9d4;
  border-radius:11px;
  color:#888;
  text-align:center
}
.glps-detail__actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:28px;
  padding-top:24px;
  border-top:1px solid #e7e7e3
}

@media (max-width:1050px){
  .glps-columns-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .glps-columns-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .glps-columns-2,.glps-columns-3,.glps-columns-4{grid-template-columns:1fr}
  .glps-card{min-height:330px}
  .glps-modal{padding:10px}
  .glps-modal__dialog{max-height:calc(100vh - 20px);border-radius:13px}
  .glps-detail__hero{padding:28px 22px 23px}
  .glps-detail__body{padding:23px 22px 28px}
  .glps-detail__stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .glps-release__head{flex-direction:column;gap:4px}
}
