.portfolio-section{background:#f0f4fa;padding:40px 0 80px}.project-table{max-width:1100px;margin:0 auto;padding:0 40px}.project-row{display:grid;grid-template-columns:48px 1fr 1fr auto;align-items:center;gap:24px;padding:18px 0;border-bottom:1px solid var(--border);cursor:pointer;user-select:none}.project-row:last-child{border-bottom:none}.project-row:hover,.project-row.expanded{background:var(--bg-alt);margin:0 -40px;padding-left:40px;padding-right:40px}.project-row.expanded~.project-detail{border-bottom:1px solid var(--border)}.project-num{font-family:Raleway,Arial,sans-serif;font-size:11px;font-weight:600;color:var(--accent);letter-spacing:.08em;transition:color .3s}.project-row.expanded .project-num{color:var(--accent2)}.project-client{font-family:Raleway,Arial,sans-serif;font-size:12px;font-weight:600;color:var(--text-soft);text-transform:uppercase;letter-spacing:.1em;transition:color .2s}.project-row:hover .project-client,.project-row.expanded .project-client{color:var(--accent)}.project-name{font-family:Raleway,Arial,sans-serif;font-size:13px;font-weight:400;color:var(--text-soft)}.project-chevron{font-size:10px;color:var(--text-muted);transition:transform .3s ease}.project-row.expanded .project-chevron{transform:rotate(90deg);color:var(--accent)}.top500-badge{background:gold;color:#05051a;font-family:Raleway,Arial,sans-serif;font-weight:700;font-size:9px;padding:3px 8px;border-radius:3px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;margin-left:8px;vertical-align:middle}.project-detail{max-height:0;overflow:hidden;transition:max-height .4s ease,padding .4s ease;padding:0 0 0 72px}.project-detail.open{max-height:200px;padding:20px 0 20px 72px}.project-detail p{font-family:Raleway,Arial,sans-serif;font-weight:300;font-size:14px;color:var(--text-muted);line-height:1.7}.portfolio-cta{background:var(--accent);padding:80px 0;text-align:center;position:relative;overflow:hidden}.portfolio-cta:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 30% 50%,rgba(74,158,255,.12),transparent 60%),radial-gradient(ellipse at 70% 50%,rgba(18,81,113,.15),transparent 60%)}.portfolio-cta .container{position:relative;z-index:1}.portfolio-cta h2{font-family:Raleway,Arial,sans-serif;font-weight:600;font-size:40px;color:#fff;margin-bottom:16px}@media(max-width:768px){.portfolio-cta h2{font-size:30px}}.portfolio-cta p{font-family:Raleway,Arial,sans-serif;font-weight:300;font-size:16px;color:#ffffffd9;margin-bottom:32px;max-width:560px;margin-left:auto;margin-right:auto;line-height:1.7}.portfolio-cta a{display:inline-block;background:#fff;color:var(--accent);padding:16px 40px;font-family:Raleway,Arial,sans-serif;font-weight:600;font-size:14px;border-radius:4px;transition:opacity .2s}.portfolio-cta a:hover{opacity:.85}@media(max-width:768px){.project-row{grid-template-columns:36px 1fr;gap:8px;padding:14px 0}.project-client,.project-name{grid-column:1 / -1}.project-chevron{display:none}.project-detail,.project-detail.open{padding-left:0;padding-right:40px}.project-row:hover,.project-row.expanded{margin:0;padding-left:0;padding-right:0}}.map-wrap{position:relative;width:100%;max-width:1040px;margin:0 auto}#map-svg{width:100%;height:auto;display:block;overflow:visible}.map-country{fill:none;stroke:#fff6;stroke-width:1;vector-effect:non-scaling-stroke}.cluster-badge{position:absolute;transform:translate(-50%,-50%);width:var(--size, 26px);height:var(--size, 26px);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:Raleway,Arial,sans-serif;font-weight:700;font-size:calc(var(--size, 26px) * .42);color:#050b16;background:#4a9eff;border:2px solid #050b16;cursor:pointer;transition:transform .2s ease}.cluster-badge.top500{background:gold;box-shadow:0 0 16px #ffd7008c}.cluster-badge:hover,.cluster-badge:focus-visible,.cluster-badge.lens-open{transform:translate(-50%,-50%) scale(1.15)}@keyframes clusterPing{0%,to{opacity:.5;transform:translate(-50%,-50%) scale(1)}50%{opacity:0;transform:translate(-50%,-50%) scale(1.9)}}.cluster-badge:after{content:"";position:absolute;inset:-2px;border-radius:50%;border:1.5px solid #4a9eff;animation:clusterPing 2.4s ease-in-out infinite}.cluster-badge.top500:after{border-color:gold}.map-lens{position:fixed;z-index:110;width:264px;max-width:calc(100vw - 32px);border-radius:14px;background:#080e1afa;border:1px solid rgba(74,158,255,.25);box-shadow:0 20px 50px #00000073;opacity:0;transform:scale(.82);pointer-events:none;transition:opacity .2s ease,transform .25s cubic-bezier(.34,1.56,.64,1)}.map-lens.open{opacity:1;transform:scale(1);pointer-events:auto}.map-lens:before{content:"";position:absolute;top:22px;left:-7px;width:0;height:0;border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(8,14,26,.98)}.map-lens.flip:before{left:auto;right:-7px;border-right:none;border-left:7px solid rgba(8,14,26,.98)}.map-lens.no-pointer:before{display:none}.map-lens-header{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.map-lens-header svg{flex-shrink:0;color:#4a9eff}.map-lens-title{font-family:Raleway,Arial,sans-serif;font-size:12px;color:#ffffff8c}.map-lens-title strong{color:#fff;font-weight:700}.map-lens-list{padding:6px;max-height:260px;overflow-y:auto}.map-lens-item{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border-radius:8px;cursor:pointer;transition:background .15s ease}.map-lens-item:hover,.map-lens-item:focus-visible{background:#4a9eff24;outline:none}.map-lens-client{font-weight:600;color:#4a9eff;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.map-lens-project{color:#ffffffd9;font-size:13px}.map-lens-top500{color:gold;font-weight:700;font-size:9px;letter-spacing:.05em;margin-left:6px}.map-legend{display:flex;gap:24px;justify-content:center;align-items:center;padding-top:16px}.map-legend-item{display:flex;align-items:center;gap:8px;font-size:12px;color:#ffffff80;font-weight:300}.map-legend-dot{width:10px;height:10px;border-radius:50%}.map-legend-dot.gold{background:gold}.map-legend-dot.blue{background:#4a9eff}.project-row.pinged{background:var(--bg-alt);box-shadow:inset 3px 0 0 var(--accent2)}
