@font-face { font-family: "Nintendo DS BIOS"; src: url("/assets/Nintendo-DS-BIOS.ttf"); } :root { --red: #ff0047; --red-dark: #7d0425; --red-bright: #ff77a8; --yellow: #ffa300; --blue: #0000ff; --white: #fff1e8; --spacing: 4px; } html { overflow: hidden; } body { font-family: "Nintendo DS BIOS"; margin: 0; height: 100dvh; height: 100vh; font-size: 1.2rem; background-image: linear-gradient(26.57deg, var(--red-dark) 0%, var(--red) 100%); } button { color: inherit; font: inherit; cursor: pointer; background-color: transparent; } #root { display: flex; flex-direction: column; height: 100%; isolation: isolate; overflow: hidden; } @keyframes scroll { from { background-position: 0 0; } to { background-position: var(--translate-amount) 0; } } #desktop { border-bottom: 1px solid var(--white); flex-grow: 1; padding: 1em; overflow: hidden; position: relative; z-index: 2; } #desktop::after { position: absolute; border-bottom: 1px solid var(--white); z-index: 3; } #netpunk, #netpunk_descender { pointer-events: none; width: min(25em, 50vw); display: block; position: absolute; right: 0; bottom: 0; } #netpunk { z-index: -1; } #netpunk_descender { background-image: url("/assets/netpunk_descender.png"); height: calc(100% + 5px); /* yellow + white borders + some margin for safety */ background-repeat: no-repeat; background-size: 100% 100%; } #bg { /* cos(26.57deg) sin(26.57deg) */ width: calc(100vw * 0.89438856 + 100vh * 0.44729084); height: calc(100vh * 0.89438856 + 100vw * 0.44729084); position: fixed; left: 50%; top: 50%; z-index: 1; opacity: 0.1; transform: translate(-50%, -50%) rotate(26.57deg); background-image: url("/assets/bg_top.svg"); animation: scroll linear infinite; animation-duration: 4s; --translate-amount: 32px; } #bg.reverse { --translate-amount: -32px; background-image: url("/assets/bg_bottom.svg"); } nav { z-index: 2; background-image: linear-gradient(to bottom, var(--red) 0%, var(--red) 50%, black 50%, black 100%); display: flex; color: var(--white); gap: calc(var(--spacing) * 2); text-shadow: black 1px 1px 0; border-top: 2px solid var(--yellow); position: relative; } nav img { width: 1lh; height: 1lh; display: block; } nav button { text-shadow: inherit; } nav > ul { display: flex; flex-grow: 1; gap: var(--spacing); align-items: center; padding: 6px; } nav > ul > li > button { padding: var(--spacing) calc(var(--spacing) + 0.3em); background-color: transparent; border-radius: 0.6em; border: 2px solid var(--red-dark); position: relative; max-width: 10vw; z-index: 5; display: flex; gap: var(--spacing); } nav > ul > li > button > div { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } nav > ul > li > button > img { height: 1em; width: 1em; } nav > div { position: relative; display: flex; } #start > div { height: 50%; aspect-ratio: 1 / 1; overflow: hidden; position: relative; } #start > div > div { position: absolute; height: 200%; width: 200%; bottom: 0; right: 0; border-right: 2px solid var(--red-dark); border-top: 2px solid var(--red-dark); border-top-right-radius: 9999px; box-sizing: border-box; box-shadow: inset var(--yellow) -1px 1px 0px; } #start > button { display: flex; background-color: transparent; border: none; padding: calc(var(--spacing) * 1.5); font-size: 1.2em; display: flex; justify-content: center; align-items: center; gap: var(--spacing); } #time { padding: var(--spacing); justify-content: center; flex-direction: column; align-items: center; border-left: 2px solid var(--red-dark); } .window { background-color: black; border-radius: 4px; border: 2px solid var(--red-bright); border-top-color: var(--white); box-shadow: black 0 -2px; position: absolute; display: flex; flex-direction: column; z-index: 4; box-sizing: border-box; padding: 6px; gap: 6px; --grab-region-size: 8px; } .window.hidden { opacity: 0; pointer-events: none; visibility: none; } .window .titlebar { color: var(--white); user-select: none; cursor: grab; display: flex; text-shadow: var(--red-bright) 1px 1px 0; gap: calc(var(--spacing) * 2); } .window.maximized .titlebar { cursor: default; } .window .titlebar > .title { flex: 1; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; width: 0; } .window .titlebar > img { pointer-events: none; height: 1em; width: 1em; } .window .titlebar > .buttons { display: flex; gap: var(--spacing); cursor: default; } .window .titlebar button { height: 1em; border-radius: 4px; border: 1px solid var(--white); padding: var(--spacing); box-sizing: border-box; } .window .titlebar button:hover { background-color: #fff1e830; } .window .titlebar button img { height: calc(1em - 2 * (var(--spacing) + 1px)); display: block; } .window.dragging { will-change: top, left; } .window.dragging > .titlebar{ cursor: grabbing; } .window .content { height: 100%; display: flex; justify-content: center; overflow: hidden auto; } .window .content > img { height: 100%; width: 100%; object-fit: contain; } .window .text_content { background-color: var(--white); padding: var(--spacing); margin: 0; border: none; border-radius: 0; resize: none; font: inherit; caret-color: var(--yellow); width: 100%; height: 100%; box-sizing: border-box; flex-direction: column; overflow-y: auto; font-size: 1.25rem; line-height: 1.1; } p, .link { margin-top: var(--spacing); } h1::before { content: "# " } h2::before { content: "## " } h3::before { content: "### " } blockquote, .credit { margin-left: 2em; margin-right: 2em; } .credit::before { content: "- " } .window .text_content ol { list-style: decimal inside; } .window .text_content li { padding-left: var(--spacing); } .window .text_content:focus-visible { outline: none; box-shadow: inset var(--red-bright) 0 0 0 1px; } .window .text_content ::selection, .window .text_content ::-moz-selection { background-color: var(--red); color: var(--white); } .window .external_warning { color: var(--white); background-color: var(--red-dark); padding: var(--spacing); display: flex; flex-direction: column; align-items: center; gap: var(--spacing); width: max-content; overflow: hidden; } .window .external_warning a, .window .text_content a { color: var(--red); } .window .external_warning a:hover, .window .text_content a:hover { color: var(--red-bright); } .window .external_warning > button { border: none; background-color: var(--red); border-radius: 0.6em; padding: var(--spacing) calc(var(--spacing) + 0.3em); } .side_v { position: absolute; height: var(--grab-region-size); width: calc(100% - 4px); transform: translate(-2px, var(--y)); cursor: row-resize; user-select: none; } .side_h { height: calc(100% - 4px); position: absolute; width: var(--grab-region-size); transform: translate(var(--x), -2px); cursor: col-resize; user-select: none; } .corner { position: absolute; height: var(--grab-region-size); width: var(--grab-region-size); transform: translate(var(--x), var(--y)); user-select: none; } .n { --y: calc(-100% + 2px); top: 0; } .e { --x: calc(100% - 2px); right: 0; } .s { --y: calc(100% - 2px); bottom: 0; } .w { --x: calc(-100% + 2px); left: 0; } .n.e { cursor: ne-resize; } .n.w { cursor: nw-resize; } .s.e { cursor: se-resize; } .s.w { cursor: sw-resize; } .icon_list { display: flex; height: 100%; flex-direction: column; gap: var(--spacing); flex-wrap: wrap; width: min-content; } .icon_list > button { display: flex; flex-direction: column; text-shadow: black 1px 1px 0; color: var(--white); max-width: 3.5em; align-items: center; border: none; padding: 0; } .icon_list > button:focus-visible { outline: none; } .icon_list .name { overflow-wrap: anywhere; -webkit-line-clamp: 2; display: -webkit-box; -webkit-box-orient: vertical; overflow-y: hidden; height: 2em; } .icon_list > button.focused > .name { overflow-y: visible; position: relative; width: 100%; -webkit-line-clamp: unset; } .icon_list > button > .name > div { width: 100%; } .icon_list > button.focused > .name > div { box-shadow: var(--red) 0 0 0 4px, var(--red-dark) 0 0 0 5px; background-color: var(--red); position: absolute; left: 50%; transform: translateX(-50%); } .icon_list .icon { height: 3.5em; width: 3.5em; padding: calc(var(--spacing) * 2); box-sizing: border-box; } .icon_list .icon > img { width: 100%; height: 100%; } #start_menu { position: absolute; z-index: 9999; background-color: var(--red); bottom: 0; left: 0; border: var(--red) solid 2px; border-radius: 4px 4px 0 0; border-bottom: 0; font-size: 1.1em; color: var(--white); max-width: 20em; max-height: 50vh; display: flex; flex-direction: column; text-shadow: black 1px 1px 0; } #start_menu_content { background-color: black; display: flex; flex-grow: 1; } #start_menu_content > div { padding: 6px 12px; font-size: 0.9em; display: flex; flex-direction: column; justify-content: end; } #start_menu_content > div > ul { list-style: "- " inside; } #start_menu_content > ul { background-color: black; gap: var(--spacing); display: flex; flex-direction: column; padding: 6px 12px; background-color: var(--red-dark); white-space: nowrap; } #start_menu a { color: var(--white); } #start_menu a:hover { color: white; } #start_menu_content > ul a { text-decoration: none; } #profile { display: flex; padding: calc(var(--spacing) * 2); gap: calc(var(--spacing) * 2); font-size: 1em; align-items: center; background-image: linear-gradient(to bottom, var(--red) 0%, var(--red-dark) 100%) } #profile > img { width: 3em; height: 3em; padding: 2px; background-color: var(--red-dark); border-radius: 4px; } #footer { padding: 6px 12px; text-align: end; background-image: linear-gradient(to bottom, var(--red) 0%, var(--red-dark) 100%) } ::selection, ::-moz-selection { background-color: var(--blue); } pre > code { white-space: pre; font-family: monospace; font-size: 1rem; } .link a::before { content: "["; } .link a::after { content: "]"; } iframe { width: 100%; height: 100%; }