@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/JetBrainsMono-Bold.woff2) format("woff2")}:root{--fyp-purple: #7c3aed;--fyp-cyan: #06b6d4;--fyp-terminal-green: #22c55e;--fyp-amber: #f59e0b;--fyp-gradient: linear-gradient(120deg, var(--fyp-purple) 30%, var(--fyp-cyan));--fyp-gradient-shift: linear-gradient(90deg, var(--fyp-purple), var(--fyp-cyan), var(--fyp-purple));--fyp-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--fyp-dot-grid-neutral: radial-gradient(circle, #cbd5e1 .5px, transparent .5px);--fyp-dot-grid-brand: radial-gradient(circle, rgba(124, 58, 237, .08) .5px, transparent .5px);--fyp-dot-grid-terminal: radial-gradient(circle, rgba(34, 197, 94, .1) .5px, transparent .5px);--fyp-dot-size: 24px 24px;--vp-font-family-mono: var(--fyp-font-mono);--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: var(--fyp-gradient)}.dark{--fyp-dot-grid-neutral: radial-gradient(circle, rgba(148, 163, 184, .12) .5px, transparent .5px);--fyp-dot-grid-brand: radial-gradient(circle, rgba(167, 139, 250, .07) .5px, transparent .5px)}@keyframes fyp-gradient-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.fyp-nav-title{display:flex;flex-direction:column;gap:.1rem;line-height:1.15;min-width:0;max-width:100%}.fyp-nav-title-main{font-family:var(--fyp-font-mono);font-size:.8125rem;font-weight:700;letter-spacing:-.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fyp-nav-title-sub{font-family:var(--fyp-font-mono);font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;line-height:1}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/JetBrainsMono-Bold.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}html{color-scheme:light dark}body{margin:0;min-height:100vh;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;color:#0f172a;background-color:#fff;background-image:var(--fyp-dot-grid-neutral);background-size:var(--fyp-dot-size)}body:before{content:"";display:block;height:3px;background:var(--fyp-gradient)}.page{max-width:76rem;margin:0 auto;padding:1.5rem 1rem 2.5rem}@media(min-width:768px){.page{padding:2rem 1.5rem 3rem}}.hero{position:relative;margin-bottom:2rem}.hero__brand{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.25rem}.logo{width:3rem;height:auto;filter:drop-shadow(0 2px 8px rgba(124,58,237,.15))}.hero__titles{flex:1 1 14rem}.eyebrow{margin:0;font-family:var(--fyp-font-mono);font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#64748b}.title{margin:.3rem 0 0;font-family:var(--fyp-font-mono);font-size:clamp(1.6rem,4.5vw,2.35rem);font-weight:700;letter-spacing:-.04em;line-height:1.1}.title-gradient{background:var(--fyp-gradient-shift);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;animation:fyp-gradient-shift 10s ease-in-out infinite}.lead{margin:1.15rem 0 0;max-width:38rem;font-size:1.05rem;line-height:1.5;color:#334155}.lead-secondary{margin:.65rem 0 0;max-width:38rem;font-family:var(--fyp-font-mono);font-size:.76rem;color:#64748b}.lead-secondary a{color:#0891b2;text-decoration:none;font-weight:700}.lead-secondary a:hover{text-decoration:underline}.grid{display:grid;gap:1rem}@media(min-width:640px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem}}@media(min-width:1120px){.grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}}.card{position:relative;display:flex;flex-direction:column;overflow:hidden;border:1px solid #e2e8f0;border-radius:12px;background:#fffffff0;text-decoration:none;color:inherit;transition:box-shadow .25s ease,transform .2s ease,border-color .25s ease;animation:card-enter .55s ease backwards}.card:nth-child(1){animation-delay:.05s}.card:nth-child(2){animation-delay:.12s}.card:nth-child(3){animation-delay:.19s}.card:nth-child(4){animation-delay:.26s}@keyframes card-enter{0%{opacity:0;transform:translateY(12px)}}.card:before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .25s ease;pointer-events:none;border-radius:inherit}.card--cyan:before{background:radial-gradient(ellipse at 50% 0%,rgba(6,182,212,.12),transparent 65%)}.card--green:before{background:radial-gradient(ellipse at 50% 0%,rgba(34,197,94,.14),transparent 65%)}.card--purple:before{background:radial-gradient(ellipse at 50% 0%,rgba(124,58,237,.12),transparent 65%)}.card--amber:before{background:radial-gradient(ellipse at 50% 0%,rgba(245,158,11,.14),transparent 65%)}.card:hover{transform:translateY(-4px)}.card:hover:before{opacity:1}.card--cyan:hover{border-color:#06b6d473;box-shadow:0 8px 28px #06b6d424,0 2px 8px #0f172a0f}.card--green:hover{border-color:#22c55e73;box-shadow:0 8px 28px #22c55e24,0 2px 8px #0f172a0f}.card--purple:hover{border-color:#7c3aed66;box-shadow:0 8px 28px #7c3aed24,0 2px 8px #0f172a0f}.card--amber:hover{border-color:#f59e0b73;box-shadow:0 8px 28px #f59e0b24,0 2px 8px #0f172a0f}.card__visual{position:relative;aspect-ratio:1 / 1;overflow:hidden;background:#0f172a}.card__visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .35s ease}.card:hover .card__visual img{transform:scale(1.04)}.card--cyan .card__visual{background:linear-gradient(135deg,#0c4a6e,#0f172a)}.card--green .card__visual{background:linear-gradient(135deg,#14532d,#0f172a)}.card--purple .card__visual{background:linear-gradient(135deg,#4c1d95,#0f172a)}.card--amber .card__visual{background:linear-gradient(135deg,#78350f,#0f172a)}.card__body{display:flex;flex-direction:column;gap:.35rem;flex:1;padding:.9rem 1rem 1rem;border-top:2px solid transparent}.card--cyan .card__body{border-top-color:var(--fyp-cyan)}.card--green .card__body{border-top-color:var(--fyp-terminal-green)}.card--purple .card__body{border-top-color:var(--fyp-purple)}.card--amber .card__body{border-top-color:var(--fyp-amber)}.card__audience{font-family:var(--fyp-font-mono);font-size:.58rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#94a3b8}.card__title{margin:0;font-family:var(--fyp-font-mono);font-size:.95rem;font-weight:700;letter-spacing:-.02em}.card__hook{margin:0;font-size:.88rem;font-weight:600;color:#1e293b;line-height:1.35}.card__desc{margin:0;flex:1;font-size:.78rem;color:#64748b;line-height:1.45}.card__meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.25rem;padding-top:.55rem;border-top:1px solid #f1f5f9;font-family:var(--fyp-font-mono);font-size:.66rem}.badge{display:inline-block;padding:.12rem .45rem;border-radius:999px;font-size:.55rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.badge--soon{color:#166534;background:#22c55e2e}.badge--live{color:#0e7490;background:#06b6d429}.badge--independent{color:#b45309;background:#f59e0b2e}.card__cta{font-weight:700;color:inherit;transition:color .2s ease}.card__cta span{display:inline-block;transition:transform .2s ease}.card:hover .card__cta span{transform:translate(3px)}.card--cyan:hover .card__cta{color:var(--fyp-cyan)}.card--green:hover .card__cta{color:var(--fyp-terminal-green)}.card--purple:hover .card__cta{color:var(--fyp-purple)}.card--amber:hover .card__cta{color:var(--fyp-amber)}.footer{margin-top:2rem;padding-top:1.15rem;border-top:1px solid #e2e8f0;font-family:var(--fyp-font-mono);font-size:.76rem;color:#64748b}.footer a{color:#0891b2;text-decoration:none}.footer a:hover{text-decoration:underline}@media(prefers-color-scheme:dark){body{color:#e2e8f0;background-color:#0a0e14;background-image:radial-gradient(circle,rgba(148,163,184,.1) .5px,transparent .5px)}.eyebrow,.lead-secondary,.card__audience,.footer{color:#94a3b8}.lead{color:#cbd5e1}.lead-secondary a{color:#22d3ee}.card{background:#0f172abf;border-color:#334155}.card__hook{color:#e2e8f0}.card__desc{color:#94a3b8}.card__meta{border-top-color:#1e293b}.footer{border-top-color:#334155}.footer a{color:#22d3ee}}@media(prefers-reduced-motion:reduce){.title-gradient,.card{animation:none}.card:hover,.card:hover .card__visual img,.card:hover .card__cta span{transform:none}}
