.header{position:fixed;top:0;left:0;right:0;z-index:100;height:55px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:1rem;align-items:center;padding:1rem 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.header--logged-out{position:static;background:transparent;border-bottom:none}.header__left{display:flex;align-items:center}.header__nav-center{display:flex;gap:2rem;grid-column:2;justify-self:center}.header__nav-link{color:var(--color-text);text-decoration:none;font-size:1rem;padding:.25rem 0;border-bottom:2px solid transparent;transition:border-color .2s}.header__nav-link:hover:not(.header__nav-link--active){border-bottom-color:color-mix(in srgb,currentColor 45%,transparent)}.header__nav-link--active{border-bottom-color:var(--color-text);font-weight:500}.header__login-button{color:var(--color-link);text-decoration:none;font-size:.875rem;padding:.5rem 1rem;border-radius:4px;transition:background-color .2s}.header__login-button:hover{background:color-mix(in srgb,var(--color-text) 5%,transparent)}.header__title{color:var(--color-text);text-decoration:none;font-size:1.125rem;font-weight:500;white-space:nowrap;display:flex;align-content:center}.header__title:hover{opacity:.8}.header__title__hero-icon{width:1em;height:1em;margin-right:.5em;image-rendering:pixelated}.header__right{display:flex;align-items:center;grid-column:3;justify-self:end}.header__menu-button{display:flex;align-items:center;justify-content:center;padding:.5rem;background:none;border:none;color:var(--color-text);cursor:pointer;border-radius:4px;transition:background-color .2s}.header__menu-button:hover{background:color-mix(in srgb,var(--color-text) 10%,transparent)}.header__menu-button:active{background:color-mix(in srgb,var(--color-text) 15%,transparent)}.header__menu-button svg{display:block}@media (min-width: 769px){.header__menu-button{display:none}}.home-page{flex:1;display:flex;align-items:center;justify-content:center;padding:0;max-width:812px;margin:0 auto;width:100%;flex-direction:column;container-type:inline-size}.home-page__hero-icon{width:100%;max-width:18cqw;height:auto;display:block;margin:0 auto 6cqw;image-rendering:pixelated}.home-page__title{margin:0;font-family:Courier New,monospace;font-size:6cqw;color:var(--color-text);display:flex;align-items:center;justify-content:center}.home-page__links{display:flex;gap:1rem;flex-grow:0;padding:1rem;align-items:center;min-height:3.5em;opacity:0}.home-page__links--visible{animation:home-page-links-fade-in .15s ease-out forwards}.home-page__links a{color:var(--color-link);text-decoration:none}.home-page__welcome{color:var(--color-text)}.home-page__logout{padding:0;border:none;background:none;font:inherit;color:var(--color-link);cursor:pointer;text-decoration:none}.home-page__logout:hover{text-decoration:underline}@keyframes home-page-links-fade-in{0%{opacity:0}to{opacity:1}}.sidebar{position:fixed;left:0;bottom:0;background:var(--color-surface);border-right:1px solid var(--color-border);transform:translate(-100%);transition:transform .3s ease-in-out;overflow-y:auto}@media (max-width: 768px){.sidebar{top:0;width:100%;border-right:none;z-index:200}.sidebar--open{transform:translate(0)}}@media (min-width: 769px){.sidebar{top:55px;width:250px;transform:translate(0);z-index:50}}.sidebar__overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:150}@media (min-width: 769px){.sidebar__overlay{display:none}}.sidebar__close{position:absolute;top:1rem;right:1rem;display:flex;align-items:center;justify-content:center;padding:.5rem;background:none;border:none;color:var(--color-text);cursor:pointer;border-radius:4px;transition:background-color .2s}.sidebar__close:hover{background:color-mix(in srgb,var(--color-text) 10%,transparent)}.sidebar__close:active{background:color-mix(in srgb,var(--color-text) 15%,transparent)}.sidebar__close svg{display:block}@media (min-width: 769px){.sidebar__close{display:none}}.sidebar__content{display:flex;flex-direction:column;height:100%}@media (max-width: 768px){.sidebar__content{padding:4rem 1rem 1rem}}@media (min-width: 769px){.sidebar__content{padding:1rem}}.sidebar__nav{flex:1;display:flex;flex-direction:column}.sidebar__link{color:var(--color-text);text-decoration:none;padding:.75rem 1rem;border-radius:4px;margin-bottom:.25rem;transition:background-color .2s}.sidebar__link:hover:not(.sidebar__link--active){background:color-mix(in srgb,var(--color-text) 5%,transparent)}.sidebar__link--active{background:color-mix(in srgb,var(--color-text) 10%,transparent);font-weight:500}.sidebar__link--requires-auth{opacity:.5}.sidebar__footer{margin-top:auto;padding-top:1rem;border-top:1px solid var(--color-border)}.sidebar__footer:empty{display:none}.sidebar__user,.sidebar__login{display:block;color:var(--color-link);text-decoration:none;padding:.75rem 1rem;border-radius:4px;transition:background-color .2s}.sidebar__user:hover,.sidebar__login:hover{background:color-mix(in srgb,var(--color-text) 5%,transparent);text-decoration:underline}.layout{min-height:100vh;display:flex;flex-direction:column;max-width:100vw;overflow-x:hidden}.layout__main{flex:1;height:100%;display:flex;flex-direction:column;container-type:inline-size}.layout--logged-in .layout__main{padding-top:61px}@media (min-width: 769px){.layout--logged-in .layout__main{margin-left:250px}}.loading-spinner{display:block;flex-shrink:0;color:inherit}.loading-spinner__ring{transform-origin:center;transform-box:fill-box}.loading-spinner__ring--outer{opacity:.9;animation:loading-spinner-rotate-cw 2.6s linear infinite}.loading-spinner__ring--mid{opacity:.55;animation:loading-spinner-rotate-ccw 1.85s linear infinite}.loading-spinner__ring--inner{opacity:.32;animation:loading-spinner-rotate-cw 1.25s linear infinite}.route-loading{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem;color:var(--color-text)}@keyframes loading-spinner-rotate-cw{0%{transform:rotate(-90deg)}to{transform:rotate(270deg)}}@keyframes loading-spinner-rotate-ccw{0%{transform:rotate(-90deg)}to{transform:rotate(-450deg)}}.login-form{flex:1;display:flex;align-items:center;justify-content:center;padding:1rem}.login-form__form{display:flex;flex-direction:column;gap:.5rem;width:100%;max-width:360px}.login-form__title{margin:0 0 .75rem;font-size:1.5rem;font-weight:600}.login-form__error{margin:0;padding:.6rem .75rem;border-radius:4px;background:color-mix(in srgb,red 12%,transparent);color:light-dark(#c00,#ff8080);font-size:.875rem}.login-form__label{font-size:.875rem;color:var(--color-text-muted);margin-top:.25rem}.login-form__input{padding:.55rem .75rem;border:1px solid var(--color-border);border-radius:4px;background:var(--color-surface);color:var(--color-text);font-size:1rem;font-family:inherit}.login-form__input:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:transparent}.login-form__submit{margin-top:.75rem;padding:.65rem 1rem;border:none;border-radius:4px;background:var(--color-primary);color:#fff;font-size:1rem;font-family:inherit;cursor:pointer}.login-form__submit:hover:not(:disabled){background:var(--color-primary-hover)}.login-form__submit:disabled{opacity:.6;cursor:default}.not-found-page{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;flex:1;padding:2rem;gap:1rem}.not-found-page__code{display:block;width:min(90vw,14rem);color:var(--color-text-muted)}.not-found-page__code rect{fill:currentColor}.not-found-page__title{font-size:1.75rem;color:var(--color-text);font-family:Courier New,monospace;font-weight:400;margin:0}.not-found-page__message{font-size:1rem;color:var(--color-text-muted);max-width:40ch;margin:0;font-style:italic}.not-found-page__home{display:inline-block;padding:.625rem 1.25rem;border-radius:6px;background:var(--color-primary);color:#fff;text-decoration:none;font-weight:500}.not-found-page__home:hover{background:var(--color-primary-hover);color:#fff}:root{color-scheme:light dark;--color-text: light-dark(#1a1a1a, #e5e5e5);--color-text-muted: light-dark(#555555, #aaaaaa);--color-surface: light-dark(#ffffff, #121212);--color-border: light-dark(#e0e0e0, #333333);--color-link: light-dark(#1a0dab, #8ab4f8);--color-primary: light-dark(#1a73e8, #8ab4f8);--color-primary-hover: light-dark(#1669c1, #8ab4f8)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,sans-serif;color:var(--color-text);background:var(--color-surface);overflow-x:hidden}#root{min-height:100vh;max-width:100vw;overflow-x:hidden}
