.port-intro{max-width:1280px;margin:32px auto 0;padding:0 24px}.port-intro .eyebrow{margin-bottom:12px}.port-intro h1{font-family:var(--font-sans);font-size:56px;font-weight:var(--fw-medium);letter-spacing:-.025em;line-height:1;color:var(--ink-900);margin:0 0 18px}.port-intro .dek{max-width:68ch;color:var(--ink-700);font-size:var(--fs-16);line-height:1.55;text-wrap:pretty;margin:0}.port-grid{max-width:1280px;margin:64px auto 0;padding:0 24px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.port-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;display:flex;flex-direction:column}.port-card-body{padding:28px 28px 24px;flex:1;display:flex;flex-direction:column;gap:10px}.port-card .idn{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:var(--rust)}.port-card .title{font-family:var(--font-display);font-weight:var(--fw-medium);font-size:20px;letter-spacing:-.015em;color:var(--ink-900)}.port-card .blurb{font-size:var(--fs-14);line-height:1.55;color:var(--ink-700);text-wrap:pretty;flex:1}.port-card-footer{padding:14px 28px;border-top:1px solid var(--card-border);display:flex;align-items:center;gap:10px}.port-card-footer .status{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase}.port-card-footer .status.wip{color:var(--rust)}.port-card-footer .status.planned{color:var(--ink-500)}.featured-wrap{max-width:1280px;margin:56px auto 0;padding:0 24px}.featured-label{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#5c6b3e;margin-bottom:16px}.featured-card{background:var(--card-bg);border:1px solid rgba(92,107,62,.25);border-top:3px solid #5C6B3E;border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;display:grid;grid-template-columns:1fr 1fr;min-height:440px}.featured-content{padding:40px 44px;display:flex;flex-direction:column;gap:0}.featured-identity{display:flex;align-items:center;gap:14px;margin-bottom:6px}.featured-icon{width:36px;height:36px;border-radius:8px;flex-shrink:0}.featured-appname{font-family:var(--font-display);font-size:var(--fs-24);font-weight:var(--fw-semibold);letter-spacing:-.02em;color:var(--canyon-ink);line-height:1}.featured-tagline{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#6e7e4d;margin-bottom:20px}.featured-desc{font-size:var(--fs-16);line-height:1.6;color:var(--canyon-shadow);text-wrap:pretty;margin-bottom:28px}.featured-stack{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.stack-chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;font-family:var(--font-mono);font-size:var(--fs-11);font-weight:var(--fw-medium);letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-sm);border:1px solid rgba(92,107,62,.22);background:#f4f5ecb3;color:#4c5933;white-space:nowrap}.featured-footer{display:flex;align-items:center;gap:12px;margin-top:auto;padding-top:24px;border-top:1px solid rgba(92,107,62,.15)}.featured-footer .pill.active{color:#5a7a3e;border-color:#cfddb4;background:#e5edd6}.featured-footer .pill.active .dot{background:#5a7a3e}.featured-status{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#6e7e4d}.featured-screenshot{position:relative;overflow:hidden;background:#f4f5ec;border-left:1px solid rgba(92,107,62,.18)}.featured-screenshot img{position:absolute;top:0;left:0;width:100%;height:auto;display:block}@media(max-width:900px){.featured-card{grid-template-columns:1fr}.featured-screenshot{height:240px;border-left:none;border-top:1px solid rgba(92,107,62,.18);order:-1}.featured-screenshot img{object-position:top center}.featured-content{padding:28px 24px}}.forex-wrap{margin-top:40px}.forex-label{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#0d9488;margin-bottom:16px}.forex-card{background:var(--card-bg);border:1px solid rgba(20,184,166,.22);border-top:3px solid #0D9488;border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;display:grid;grid-template-columns:1fr 1fr;min-height:440px}.forex-content{padding:40px 44px;display:flex;flex-direction:column}.forex-identity{margin-bottom:6px}.forex-appname{font-family:var(--font-display);font-size:var(--fs-24);font-weight:var(--fw-semibold);letter-spacing:-.02em;color:var(--ink-900);line-height:1}.forex-tagline{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#0d9488;margin:0 0 20px}.forex-desc{font-size:var(--fs-16);line-height:1.6;color:var(--ink-700);text-wrap:pretty;margin:0 0 28px}.forex-stack{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.forex-chip{display:inline-flex;align-items:center;height:26px;padding:0 12px;font-family:var(--font-mono);font-size:var(--fs-11);font-weight:var(--fw-medium);letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-sm);border:1px solid rgba(20,184,166,.25);background:#ccfbf180;color:#0f766e;white-space:nowrap}.forex-footer{display:flex;align-items:center;gap:12px;margin-top:auto;padding-top:24px;border-top:1px solid rgba(20,184,166,.15)}.forex-status{font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#0d9488}.forex-chart-panel{position:relative;overflow:hidden;background:#0b1426;border-left:1px solid rgba(20,184,166,.18)}.forex-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.forex-watermark{position:absolute;top:12px;left:14px;font-family:var(--font-mono);font-size:var(--fs-11);letter-spacing:var(--tr-caps);text-transform:uppercase;color:#ffffff38;pointer-events:none}@media(max-width:900px){.forex-card{grid-template-columns:1fr}.forex-chart-panel{height:240px;border-left:none;border-top:1px solid rgba(20,184,166,.18);order:-1}.forex-content{padding:28px 24px}}@media(max-width:900px){.port-intro h1{font-size:40px}.port-grid{grid-template-columns:1fr}}
