.lucide{width:16px;height:16px;stroke-width:1.8;flex:0 0 auto}.button .lucide,.project-action .lucide,.featured-title .lucide,.project-title .lucide{transition:transform .2s ease,color .2s ease}.button:hover .lucide[data-lucide="arrow-up-right"],.button:hover .lucide[data-lucide="external-link"],.project-action:hover .lucide[data-lucide="arrow-up-right"],.project-action:hover .lucide[data-lucide="external-link"]{transform:translate(2px,-2px)}.button:hover .lucide[data-lucide="arrow-right"],.project-action:hover .lucide[data-lucide="arrow-right"]{transform:translateX(2px)}.nav-github,.footer-github,.project-action,.button{gap:8px}.search>span{display:flex;align-items:center;justify-content:center}.search>span .lucide{width:15px;height:15px}.modal-close{display:flex;align-items:center;justify-content:center}.modal-close .lucide{width:19px;height:19px}.gallery-nav{display:flex;align-items:center;justify-content:center;z-index:5;width:44px;height:44px;border-radius:50%;background:rgba(10,10,13,.72);backdrop-filter:blur(12px);box-shadow:0 8px 28px rgba(0,0,0,.35)}.gallery-nav .lucide{width:20px;height:20px}.gallery-nav:hover{background:rgba(20,24,15,.9);transform:translateY(-50%) scale(1.05)}
.project-dialog{width:min(1220px,calc(100vw - 40px));grid-template-columns:minmax(0,1.55fr) minmax(300px,.65fr);overflow:hidden}.modal-gallery{display:flex;flex-direction:column;min-height:0;background:#09090b}.gallery-stage{isolation:isolate;position:relative;min-height:0!important;height:auto!important;aspect-ratio:16/10;padding:26px;overflow:hidden;background:radial-gradient(circle at 50% 45%,rgba(163,230,53,.055),transparent 48%),#09090b}.gallery-stage::before{content:"";position:absolute;z-index:-2;inset:-45px;background-image:var(--gallery-preview);background-size:cover;background-position:center;filter:blur(38px) saturate(.78);transform:scale(1.12);opacity:.23;transition:background-image .2s ease}.gallery-stage::after{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(180deg,rgba(7,7,9,.38),rgba(7,7,9,.68)),radial-gradient(circle at center,transparent 10%,rgba(6,6,8,.4) 82%)}.gallery-stage>img{position:relative;z-index:1;display:block;width:auto!important;height:auto!important;max-width:100%;max-height:min(66vh,680px);min-height:0!important;object-fit:contain;border:1px solid rgba(255,255,255,.09);border-radius:12px;background:#0c0c0f;box-shadow:0 28px 70px rgba(0,0,0,.55),0 0 0 1px rgba(0,0,0,.3);transition:opacity .2s ease,transform .25s ease}.gallery-stage>img:hover{transform:scale(1.006)}.gallery-loading{z-index:6;background:rgba(9,9,11,.78);backdrop-filter:blur(12px)}#gallery-loading[hidden]{display:none!important}.gallery-footer{min-height:56px;padding:0 20px;background:linear-gradient(180deg,#0b0b0e,#0a0a0c);border-top-color:#2b2b30}.gallery-dots{gap:7px;align-items:center}.gallery-dot{width:22px;height:4px;border-radius:999px;background:#34343a;transition:.2s}.gallery-dot:hover{background:#62626b}.gallery-dot.active{width:36px;background:#a3e635;box-shadow:0 0 14px rgba(163,230,53,.25)}#gallery-count{padding:6px 9px;border:1px solid #2b2b30;border-radius:999px;background:#111114;color:#a1a1aa}.modal-content{overflow:auto;background:linear-gradient(180deg,#101014,#0d0d10)}

/* Projects: asymmetrical bento/staggered layout. */
@media(min-width:1101px){
  .projects-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:18px 16px;align-items:start;grid-auto-flow:row dense}
  .projects-grid .project{grid-column:span 4;margin-top:0;min-height:100%}
  .projects-grid .project:nth-child(10n+1),.projects-grid .project:nth-child(10n+7){grid-column:span 7}
  .projects-grid .project:nth-child(10n+2),.projects-grid .project:nth-child(10n+6){grid-column:span 5}
  .projects-grid .project:nth-child(10n+2),.projects-grid .project:nth-child(10n+7){margin-top:10px}
  .projects-grid .project:nth-child(10n+4),.projects-grid .project:nth-child(10n+9){margin-top:18px}
  .projects-grid .project:nth-child(10n+1) .project-image,.projects-grid .project:nth-child(10n+7) .project-image{height:190px}
  .projects-grid .project:nth-child(10n+2) .project-image,.projects-grid .project:nth-child(10n+6) .project-image{height:165px}
  .projects-grid .project:nth-child(10n+1) .project-title,.projects-grid .project:nth-child(10n+7) .project-title{font-size:18px}
  .projects-grid .project:nth-child(10n+1) .project-desc,.projects-grid .project:nth-child(10n+7) .project-desc{-webkit-line-clamp:2;max-width:92%}
}
@media(min-width:851px) and (max-width:1100px){
  .projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
  .projects-grid .project{grid-column:auto;margin-top:0}
  .projects-grid .project:nth-child(4n+2),.projects-grid .project:nth-child(4n+3){margin-top:14px}
  .projects-grid .project:nth-child(5n+1) .project-image{height:175px}
}
@media(max-width:850px){
  .projects-grid .project{margin-top:0!important;grid-column:auto!important}
}

@media(max-width:980px){.project-dialog{grid-template-columns:1fr;width:min(820px,calc(100vw - 32px));overflow:auto}.gallery-stage{aspect-ratio:16/9;padding:18px}.gallery-stage>img{max-height:48vh}.modal-content{overflow:visible}}@media(max-width:650px){.project-dialog{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.gallery-stage{padding:12px;aspect-ratio:4/3}.gallery-stage>img{max-height:38vh;border-radius:8px}.gallery-nav{width:38px;height:38px}.gallery-nav.prev{left:8px}.gallery-nav.next{right:8px}.gallery-footer{min-height:48px;padding:0 12px}.gallery-dot{width:16px}.gallery-dot.active{width:28px}}
