.project-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s ease}
.project-modal.open{opacity:1;pointer-events:auto}
.modal-overlay{position:absolute;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(6px)}
.modal-content{position:relative;z-index:1;background:var(--card);border-radius:var(--radius);max-width:820px;width:92%;max-height:90vh;overflow-y:auto;border:1px solid var(--border);box-shadow:0 25px 60px rgba(0,0,0,.25);transform:translateY(30px) scale(.97);transition:transform .3s ease}
.project-modal.open .modal-content{transform:translateY(0) scale(1)}
.modal-close{position:sticky;top:0;float:right;margin:16px 16px 0 0;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--card);color:var(--text);font-size:1.4rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:5}
.modal-close:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
.modal-hero{width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:var(--radius) var(--radius) 0 0}
.modal-img{width:100%;height:100%;object-fit:cover}
.modal-info{padding:28px 32px 36px}
.modal-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.modal-tags span{padding:4px 12px;border-radius:6px;font-size:.72rem;font-family:'JetBrains Mono',monospace;font-weight:500;background:rgba(16,185,129,.08);color:var(--accent);border:1px solid rgba(16,185,129,.2)}
.modal-title{font-size:1.5rem;font-weight:800;margin-bottom:12px}
.modal-desc{color:var(--text-secondary);line-height:1.7;margin-bottom:24px;font-size:.95rem}
.modal-section{margin-bottom:22px}
.modal-section h3{font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:10px}
.modal-section ul{list-style:none;display:flex;flex-direction:column;gap:8px}
.modal-section li{font-size:.88rem;color:var(--text-secondary);padding-left:18px;position:relative;line-height:1.5}
.modal-section li::before{content:'';position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.modal-section p{font-size:.9rem;color:var(--text-secondary);line-height:1.65}
.modal-stack{display:flex;flex-wrap:wrap;gap:8px}
.modal-stack span{padding:5px 14px;border-radius:8px;font-size:.78rem;font-weight:500;background:var(--bg-alt);border:1px solid var(--border);color:var(--text)}
.modal-links{display:flex;flex-direction:column;gap:8px}
.modal-link{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-alt);transition:all .2s;text-decoration:none}
.modal-link:hover{border-color:var(--accent);transform:translateX(4px)}
.modal-link svg{min-width:18px;color:var(--accent)}
.modal-link-text{font-size:.85rem;font-weight:500;color:var(--text)}
.modal-link-sub{font-size:.75rem;color:var(--text-muted);margin-top:2px}
@media(max-width:600px){
  .modal-content{width:96%;max-height:95vh}
  .modal-info{padding:20px 18px 28px}
  .modal-title{font-size:1.2rem}
  .modal-desc{font-size:.88rem}
}
