<!DOCTYPE html>
<html lang="en" dir="ltr" id="page-top">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        
        
    <meta property="og:title" content="Universes | Star Wars: Knights of the Old Republic Shrine">

        <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="My universes and headcanons for Star Wars: Knights of the Old Republic series.">
<meta name="generator" content="Eleventy v2.0.1">
<meta property="og:type" content="website">
<meta property="og:url" content="https://leilukin.neocities.org/shrines/starwarskotor/universes/">
<meta property="og:site_name" content="Leilukin's Hub">
<meta property="og:locale" content="en_MY">
<meta property="og:description" content="My universes and headcanons for Star Wars: Knights of the Old Republic series.">
<meta name="twitter:card" content="summary">
<meta name="twitter:url" content="https://leilukin.neocities.org/shrines/starwarskotor/universes/">
<meta name="twitter:description" content="My universes and headcanons for Star Wars: Knights of the Old Republic series.">
<link rel="canonical" href="https://leilukin.neocities.org/shrines/starwarskotor/universes/">


        
        <link rel="stylesheet" href="/assets/css/global.css"><link rel="stylesheet" href="/assets/css/general.css"><link rel="stylesheet" href="/assets/css/content.css"><link rel="stylesheet" href="/assets/css/plugins.css"><link rel="stylesheet" href="/assets/css/components.css"><link rel="stylesheet" href="/assets/css/pridesymbols.css"><link rel="stylesheet" href="/assets/css/utility.css">
        
    <link rel="stylesheet" href="/assets/css/starwarskotor.css">


        
        <link rel="stylesheet" href="/assets/fonts/lexend/lexend.css">

        
        <link href="/assets/fonts/fontawesome/css/fontawesome.css" rel="stylesheet" />
        <link href="/assets/fonts/fontawesome/css/brands.css" rel="stylesheet" />
        <link href="/assets/fonts/fontawesome/css/solid.css" rel="stylesheet" />

        
        
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/shrines/starwarskotor/images/kotor-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/shrines/starwarskotor/images/kotor-icon.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/shrines/starwarskotor/images/kotor-icon.png">
    <link rel="manifest" href="/assets/favicon/site.webmanifest">


        <title>
            
    Universes | Star Wars: Knights of the Old Republic Shrine | Leilukin's Hub

        </title>
    </head>
    <body>
        <header class="hero">
    <div class="hero__top-bar hidden"></div>
    <div class="hero__img">
        
    <picture>
        <source srcset="/assets/shrines/starwarskotor/images/swkotor-header-320.png" media="(orientation: landscape)" />
        <img src="/assets/shrines/starwarskotor/images/swkotor-header.jpg" alt="anner of Star Wars: Knights of the Old Republic Shrine" />
    </picture>

    </div>
</header>

<style>
    .hero {
        width: 100%;
        background-color: var(--clr-hero-bg);
        display: flex;
        flex-direction: column;
        justify-content: center;
        text-align: center;
    }

    .hero__top-bar {
        background-color: var(--clr-navbar-bg);
        width: 100%;
        padding: 0.5em 0.7em;
    }

    .hero__img {
        display: grid;
        place-content: center;
    }

    .hero img {
        object-fit: contain;
        overflow: hidden;
        max-height: 16rem;
        
    }
</style>

<script defer>
    const hero = document.querySelector(".hero");
    const heroTopBarEl = document.querySelector(".hero__top-bar");
    const headerImgEl = document.querySelector(".hero__img");

    
    const todayEvent = getTodayEvent();

    if (todayEvent) {
        heroTopBarEl.classList.remove('hidden');
        heroTopBarEl.innerHTML = todayEvent;
    }

    function getTodayEvent() {
        const date = new Date();
        const month = date.getMonth() + 1;
        const day = date.getDate();
        const year = date.getFullYear();

        const kotor1ReleaseDate = new Date("2003-07-15").getFullYear();
        const kotor2ReleaseDate = new Date("2004-12-06").getFullYear();
        const kotor1Anniversary = year - kotor1ReleaseDate;
        const kotor2Anniversary = year - kotor2ReleaseDate;

        if (month === 7 && day === 15)
            return `
                Today is the ${kotor1Anniversary}-year anniversary of the release of <cite>Star Wars: Knihgts of the Old Republic</cite>
            `;
        else if (month === 12 && day === 6)
            return `
                Today is the ${kotor2Anniversary}-year anniversary of the release of <cite>Star Wars: Knights of the Old Republic II — The Sith Lords</cite>
            `;
        else
            return null;
    }

</script>
        <nav class="navbar">
    <button class="navbar__toggle" aria-label="Navigation menu toggle">
        <i class="fa-solid fa-bars"></i>
        <h2 class="navbar__title">Navigation</h2>
    </button>
    <ul class="navbar__links">
        
    
    
    
    <li>
        <a  href="/shrines/starwarskotor/">Shrine Home</a>
    </li>
        <li>
            <a  href="/shrines/starwarskotor/articles/">Articles</a>
        </li>
        <li>
            <a  href="/shrines/starwarskotor/guides/">Guides</a>
        </li>
        <li>
            <a  href="/shrines/starwarskotor/resources/">Resources</a>
        </li>
        <li>
            <a aria-current="page" href="/shrines/starwarskotor/universes/">Universes</a>
        </li>
    <li><a href="/shrines/">Shrine Index</a></li>
    <li><a href="/">Main Site</a></li>

    </ul>
</nav>

<style>
    .navbar {
        background: var(--clr-navbar-bg);
        padding: 0.6em 1em;
        width: 100%;
        z-index: 999;
        position: sticky;
        top: 0;
    }

    .navbar__toggle,
    .navbar__title {
        color: var(--clr-navbar-link);
        font-size: 1.3rem;
    }

    .navbar__toggle {
        display: flex;
        align-items: center;
        gap: 0.5em;
        border: none;
        padding: 0;
        margin: 0;
        background-color: inherit;
    }

    .navbar__toggle:focus,
    .navbar a:focus {
        outline: 0.15em solid var(--clr-navbar-link);
    }

    .navbar a {
        color: var(--clr-navbar-link);
        text-decoration: none;
        cursor: pointer;
    }

    .navbar a:hover {
        color: var(--clr-link-hover);
    }

    .navbar a:focus {
        outline-offset: 0.3em;
    }

    .navbar__links {
        list-style: none;
        display: none;
        gap: 1em;
        padding: 0.5em 1.8em;
        overflow: auto;
    }

    .navbar__links--show {
        display: grid;
    }

    /* Tablet screen size */
    @media only screen and (min-width: 43.75rem) {
        .navbar {
            padding: 0 0.6em;
        }

        .navbar__toggle {
            display: none;
        }

        .navbar__links {
            display: flex;
            justify-content: space-evenly;
            gap: 0.5em;
            flex-wrap: wrap;
            padding: 0;
            overflow: unset;
        }
    }
</style>

<script defer>
    const navbarToggle = document.querySelector('.navbar__toggle');
    const navbarLinks = document.querySelector(".navbar__links");

    navbarToggle.addEventListener('click', () => {
        navbarLinks.classList.toggle("navbar__links--show");
    });
</script>

        <main>
            <header class="main__header">
    

    
        <h1>Leilukin&#39;s Star Wars: Knights of the Old Republic Universes</h1>
        
            <p>My universes and headcanons for Star Wars: Knights of the Old Republic series.</p>
        
    
</header>

<div class="content__wrapper">
    
        <aside class="left-sidebar">
    <details class="toc__wrapper sidebar--sticky">
        <summary class="toc__heading">
            On This Page
        </summary>
        <nav class="toc">
                <ol>
                    
                    <li><a href="#my-kotor-timeline">My KotOR Timeline</a>
            		</li>

                    <li><a href="#main-universe">Main Universe</a>
            
                <ol>
                    
                    <li><a href="#revan">Revan</a>
            		</li>

                    <li><a href="#jedi-exile">Jedi Exile</a>
            		</li>
                </ol>
            		</li>
                </ol>
            </nav>
    </details>
</aside>

<style>
    .toc__wrapper {
        max-height: 89vh;
        overflow: auto;
        background-color: var(--clr-content-bg);
        padding: 1rem 1.3rem;
    }

    .toc__heading {
        font-size: 1.3rem;
        font-weight: 700;
        color: var(--clr-sub-heading);
        cursor: pointer;
    }

    .toc ol,
    .toc ol ol {
        display: grid;
        gap: 0.3em;
    }

    .toc ol {
        border-top: 0.1em solid var(--clr-title-border);
        padding-left: 1.3em;
        padding-top: 1em;
    }

    .toc ol ol {
        border-top: none;
        list-style-type: disc;
        padding-left: 1em;
        padding-top: 0.3em;
    }

    .toc ol a {
        font-size: 1.1rem;
        padding-left: 0.3em;
    }

    .toc ol ol a {
        padding: 0;
        font-size: 1rem;
    }
</style>

    

    
		<div class="content ">
			<div class="heading-wrapper h2">
<h2 id="my-kotor-timeline">My KotOR Timeline</h2>
<a class="heading-anchor" href="#my-kotor-timeline" aria-labelledby="my-kotor-timeline"><span hidden>#</span></a></div>
<p>This is my timeline for the events of the KotOR series, including the age of the major characters.</p>
<p><a href="https://docs.google.com/spreadsheets/d/1xh9QpXBBVYwBNss1ifrLG1Pf7lbm_AhwaCktlbH0Yzo/edit">View Leilukin's KotOR Timeline here</a></p>
<div class="heading-wrapper h2">
<h2 id="main-universe">Main Universe</h2>
<a class="heading-anchor" href="#main-universe" aria-labelledby="main-universe"><span hidden>#</span></a></div>
<p>My main KotOR universe.</p>
<div class="heading-wrapper h3">
<h3 id="revan">Revan</h3>
<a class="heading-anchor" href="#revan" aria-labelledby="revan"><span hidden>#</span></a></div>
<p><img src="/assets/shrines/starwarskotor/universes/myrevan-jiaxuan-cheng.png" alt="Screenshot of Jiaxuan Cheng, the Revan for my main KotOR universe"></p>
<dl>
<dt>Name</dt>
<dd>Jiaxuan Cheng 程嘉萱</dd>
<dt>Class</dt>
<dd>Scout + Jedi Sentinel</dd>
<dt>Alignment</dt>
<dd>Light Side</dd>
<dt>Pronouns</dt>
<dd>She/Her or They/Them</dd>
<dt>Gender</dt>
<dd>Non-binary woman</dd>
<dt>Species</dt>
<dd>Human</dd>
<dt>Orientation</dt>
<dd>Lesbian</dd>
<dt>Romance</dt>
<dd>Juhani and Bastila (polyamorous triad)</dd>
</dl>
<div class="heading-wrapper h3">
<h3 id="jedi-exile">Jedi Exile</h3>
<a class="heading-anchor" href="#jedi-exile" aria-labelledby="jedi-exile"><span hidden>#</span></a></div>
<p><img src="/assets/shrines/starwarskotor/universes/myexile-yunhua-yang.png" alt="Screenshot of Yunhua Yang, the Jedi Exile for my main KotOR universe"></p>
<dl>
<dt>Name</dt>
<dd>Yunhua Yang 杨韵华</dd>
<dt>Class</dt>
<dd>Jedi Sentinel + Jedi Weapon Master</dd>
<dt>Alignment</dt>
<dd>Light Side</dd>
<dt>Pronouns</dt>
<dd>She/Her or They/Them</dd>
<dt>Gender</dt>
<dd>Non-binary woman</dd>
<dt>Species</dt>
<dd>Human</dd>
<dt>Orientation</dt>
<dd>Lesbian</dd>
<dt>Romance</dt>
<dd>Visas Marr</dd>
</dl>

		</div>
    

    

    <aside class="right-sidebar">
    <div class="shrine__info sidebar--sticky">
        <h2>About</h2>
        
    <p>Welcome to Leilukin's shrine for <cite>Star Wars: Knights of the Old Republic</cite>, a series of role-playing video games set in the <cite>Star Wars</cite> universe, taking place almost 4,000 years before the events of the Skywalker film saga.</p>

        <h3>Links</h3>
        <ul>
            
    <li><a href="https://kotor.neocities.org/">KOTOR Community Portal</a></li>

        </ul>
    </div>
</aside>

<style>
    .right-sidebar {
        background-color: var(--clr-content-bg);
        font-size: clamp(0.9rem, 0.9rem + 3vw, 1rem);
    }

    .shrine__info {
        padding: 1rem;
    }

    .shrine__info h2 {
        font-size: clamp(1.5rem, 1rem + 3vw, 1.7rem);
        margin-bottom: 0.2em;
    }

    .shrine__info h3 {
        font-size: clamp(1.3rem, 1rem + 3vw, 1.5rem);
        margin-top: 1em;
    }

    .shrine__info ul {
        margin-top: 0.5em;
    }
</style>
</div>

<style>
    .breadcrumbs {
        list-style: none;
        padding: 0;
        margin: 0 0 0.7em 0;
        display: flex;
        gap: 0.5em;
        flex-wrap: wrap;
        justify-content: center;
    }

    .breadcrumbs li::after {
        content: '➔';
        padding-left: 0.3em;
    }
</style>
        </main>
        <footer class="footer">
    <p>Made with ♥ and the Force by Leilukin | Shrine Launched: 17 February 2023</p>

        <p>Back to: <a href="/shrines/">Shrine Index</a> | <a href="/">Leilukin&#39;s Hub</a></p>
</footer>

<style>
    .footer {
        margin-top: auto;
        width: 100%;
        background: var(--clr-main-footer-bg);
        padding: 1rem 1rem 3rem 1rem;
        text-align: center;
        display: grid;
    }

    .footer p {
        padding: 0;
    }

    .footer__links {
        justify-self: center;
        list-style: none;
        margin: 0;
        padding: 0;
        display: flex;
        gap: 0.7em;
    }

    .footer__links li:not(:last-child)::after {
        content: '|';
        padding-left: 0.6em;
    }

    /* Screen sizes larger than mobile */
    @media only screen and (min-width: 30rem) {
        .footer {
            padding: 1rem 1rem 2rem 1rem;
        }
    }

    /* Tablet screen size */
    @media only screen and (min-width: 43.75rem) {
        .footer {
            padding: 1rem;
        }
    }
</style>
        <button class="top-btn hidden" aria-label="Scroll to top">
    <i class="fa-solid fa-chevron-up"></i>
</button>

<style>
    .top-btn {
        position: fixed;
        margin: 0;
        padding: 0;
        bottom: 0.5rem;
        right: 0.5rem;
        z-index: 999;
        border: none;
        background-color: var(--clr-top-btn-bg);
        color: var(--clr-top-btn-txt);
        border-radius: 50em;
        width: 2rem;
        aspect-ratio: 1 / 1;
    }

    .top-btn:focus {
        outline: 0.25em solid var(--clr-top-btn-bg);
        outline-offset: 0.15em;
    }
</style>

<script defer>
    const topButton = document.querySelector(".top-btn");

    window.onscroll = () => {
        if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
            topButton.classList.remove("hidden");
        } else {
            topButton.classList.add("hidden");
        }
    }

    topButton.addEventListener('click', () => {
        window.scrollTo({
            top: 0,
            left: 0,
            behavior: "smooth",
        });
    });
</script>
    </body>
</html>