@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, #7c3aed14 .5px, transparent .5px);--fyp-dot-grid-terminal:radial-gradient(circle, #22c55e1a .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, #94a3b81f .5px, transparent .5px);--fyp-dot-grid-brand:radial-gradient(circle, #a78bfa12 .5px, transparent .5px)}@keyframes fyp-gradient-shift{0%,to{background-position:0%}50%{background-position:100%}}.fyp-nav-title{flex-direction:column;gap:.1rem;min-width:0;max-width:100%;line-height:1.15;display:flex}.fyp-nav-title-main{font-family:var(--fyp-font-mono);letter-spacing:-.03em;white-space:nowrap;text-overflow:ellipsis;font-size:.8125rem;font-weight:700;overflow:hidden}.fyp-nav-title-sub{font-family:var(--fyp-font-mono);text-transform:uppercase;letter-spacing:.1em;font-size:.625rem;font-weight:700;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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){html{--lightningcss-light: ;--lightningcss-dark:initial}}body{color:#0f172a;background-color:#fff;background-image:var(--fyp-dot-grid-neutral);background-size:var(--fyp-dot-size);min-height:100vh;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5}body:before{content:"";background:var(--fyp-gradient);height:3px;display:block}.page{max-width:76rem;margin:0 auto;padding:1.5rem 1rem 2.5rem}@media (width>=768px){.page{padding:2rem 1.5rem 3rem}}.hero{margin-bottom:2rem;position:relative}.hero__brand{flex-wrap:wrap;align-items:center;gap:1rem 1.25rem;display:flex}.logo{filter:drop-shadow(0 2px 8px #7c3aed26);width:3rem;height:auto}.hero__titles{flex:14rem}.eyebrow{font-family:var(--fyp-font-mono);letter-spacing:.16em;text-transform:uppercase;color:#64748b;margin:0;font-size:.68rem;font-weight:700}.title{font-family:var(--fyp-font-mono);letter-spacing:-.04em;margin:.3rem 0 0;font-size:clamp(1.6rem,4.5vw,2.35rem);font-weight:700;line-height:1.1}.title-gradient{background:var(--fyp-gradient-shift);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:10s ease-in-out infinite fyp-gradient-shift}.lead{color:#334155;max-width:38rem;margin:1.15rem 0 0;font-size:1.05rem;line-height:1.5}.lead-secondary{max-width:38rem;font-family:var(--fyp-font-mono);color:#64748b;margin:.65rem 0 0;font-size:.76rem}.lead-secondary a{color:#0891b2;font-weight:700;text-decoration:none}.lead-secondary a:hover{text-decoration:underline}.grid{gap:1rem;display:grid}@media (width>=640px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem}}@media (width>=1120px){.grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}}.card{color:inherit;background:#fffffff0;border:1px solid #e2e8f0;border-radius:12px;flex-direction:column;text-decoration:none;transition:box-shadow .25s,transform .2s,border-color .25s;animation:.55s backwards card-enter;display:flex;position:relative;overflow:hidden}.card:first-child{animation-delay:50ms}.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:"";opacity:0;pointer-events:none;border-radius:inherit;transition:opacity .25s;position:absolute;inset:0}.card--cyan:before{background:radial-gradient(at 50% 0,#06b6d41f,#0000 65%)}.card--green:before{background:radial-gradient(at 50% 0,#22c55e24,#0000 65%)}.card--purple:before{background:radial-gradient(at 50% 0,#7c3aed1f,#0000 65%)}.card--amber:before{background:radial-gradient(at 50% 0,#f59e0b24,#0000 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{aspect-ratio:1;background:#0f172a;position:relative;overflow:hidden}.card__visual img{object-fit:cover;object-position:center;width:100%;height:100%;transition:transform .35s;display:block}.card:hover .card__visual img{transform:scale(1.04)}.card--cyan .card__visual{background:linear-gradient(135deg,#0c4a6e 0%,#0f172a 100%)}.card--green .card__visual{background:linear-gradient(135deg,#14532d 0%,#0f172a 100%)}.card--purple .card__visual{background:linear-gradient(135deg,#4c1d95 0%,#0f172a 100%)}.card--amber .card__visual{background:linear-gradient(135deg,#78350f 0%,#0f172a 100%)}.card__body{border-top:2px solid #0000;flex-direction:column;flex:1;gap:.35rem;padding:.9rem 1rem 1rem;display:flex}.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);letter-spacing:.1em;text-transform:uppercase;color:#94a3b8;font-size:.58rem;font-weight:700}.card__title{font-family:var(--fyp-font-mono);letter-spacing:-.02em;margin:0;font-size:.95rem;font-weight:700}.card__hook{color:#1e293b;margin:0;font-size:.88rem;font-weight:600;line-height:1.35}.card__desc{color:#64748b;flex:1;margin:0;font-size:.78rem;line-height:1.45}.card__meta{font-family:var(--fyp-font-mono);border-top:1px solid #f1f5f9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.25rem;padding-top:.55rem;font-size:.66rem;display:flex}.badge{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:.12rem .45rem;font-size:.55rem;font-weight:700;display:inline-block}.badge--soon{color:#166534;background:#22c55e2e}.badge--live{color:#0e7490;background:#06b6d429}.badge--independent{color:#b45309;background:#f59e0b2e}.card__cta{color:inherit;font-weight:700;transition:color .2s}.card__cta span{transition:transform .2s;display:inline-block}.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{font-family:var(--fyp-font-mono);color:#64748b;border-top:1px solid #e2e8f0;margin-top:2rem;padding-top:1.15rem;font-size:.76rem}.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,#94a3b81a .5px,#0000 .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}}
