.ports-page .ports-hero{padding:60px 0 32px}
.ports-page .ports-hero h1{font-size:clamp(2.4rem,5vw,4rem);letter-spacing:-.045em;line-height:1.08;margin:18px 0}
.ports-page .ports-intro{max-width:720px;color:var(--text-secondary);line-height:1.7}
.ports-page .ports-path{color:var(--text-secondary);font-size:.9rem}
.ports-page .ports-path a{color:var(--accent-primary,#6fe4bb)}
.ports-page .ports-directory{padding-top:24px}
.ports-page .ports-controls{display:grid;grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(170px,1fr);gap:16px;margin:0 0 16px}
.ports-page .ports-controls label{display:grid;gap:8px;font-size:.85rem;color:var(--text-secondary)}
.ports-page .ports-controls input,.ports-page .ports-controls select{width:100%;min-height:46px;border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--bg-secondary);color:var(--text-primary);font:inherit}
.ports-page :is(input,select,button,a):focus-visible{outline:2px solid var(--accent-primary,#6fe4bb);outline-offset:4px}
.ports-page .ports-keywords{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:20px}
.ports-page .ports-keywords button{border:1px solid var(--border);border-radius:6px;padding:7px 10px;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;font:inherit;font-size:.8rem}
.ports-page .ports-count{margin:18px 0;color:var(--text-secondary);font-size:.9rem}
.ports-page .ports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:24px;align-items:start}
.ports-page .port-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;overflow:hidden;min-width:0}
.ports-page .port-card[hidden],.ports-page [data-ports-empty][hidden]{display:none}
.ports-page .port-cover{height:290px;padding:20px;background:#0b0d10;display:flex;align-items:center;justify-content:center;margin:0;border-bottom:1px solid var(--border)}
.ports-page .port-cover img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;object-position:center;aspect-ratio:auto;border-radius:0;transform:none}
.ports-page .port-body{padding:22px}
.ports-page .port-body h2{font-size:1.2rem;line-height:1.35;letter-spacing:-.02em;margin:0 0 10px;overflow-wrap:anywhere}
.ports-page .port-body p{font-size:.9rem;line-height:1.65;color:var(--text-secondary);margin:10px 0}
.ports-page .port-tags{list-style:none;padding:0;margin:16px 0;display:flex;flex-wrap:wrap;gap:6px}
.ports-page .port-tags li{font-size:.7rem;line-height:1.4;padding:5px 7px;background:var(--bg-tertiary,#202227);border-radius:4px;color:var(--text-secondary);overflow-wrap:anywhere}
.ports-page .port-tags button{font:inherit;line-height:inherit;color:inherit;background:transparent;border:0;padding:0;text-align:left;cursor:pointer}
.ports-page .port-tags button:hover{color:var(--accent-primary,#6fe4bb)}
.ports-page .port-state{font-size:.75rem;color:var(--accent-primary,#6fe4bb);margin-bottom:10px}
.ports-page .port-state--unavailable{color:#e8ba83}
.ports-page .port-actions{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin:18px 0;font-size:.85rem;font-weight:600}
.ports-page .port-actions a{color:var(--accent-primary,#6fe4bb);text-decoration:none}
.ports-page .port-actions a:hover{text-decoration:underline}
.ports-page .port-body details{border-top:1px solid var(--border);padding-top:14px;margin-top:18px}
.ports-page .port-body summary{font-size:.85rem;cursor:pointer;color:var(--text-primary)}
.ports-page .port-body code{font-size:.7rem;overflow-wrap:anywhere;word-break:break-word}
.ports-page .ports-note{border-left:2px solid var(--accent-primary,#6fe4bb);padding-left:18px;margin-top:24px;max-width:840px;color:var(--text-secondary);font-size:.9rem;line-height:1.7}
.ports-page .ports-empty{padding:24px;border:1px solid var(--border);border-radius:10px}
@media(max-width:700px){.ports-page .ports-controls{grid-template-columns:1fr}.ports-page .ports-hero{padding-top:32px}.ports-page .port-cover{height:280px}}
