:root { --bg: #0d1b2a; --panel: #1b263b; --ink: #e0e1dd; --muted: #8d99ae; --accent: #48cae4; --accent-2: #ffd166; --error: #ef476f; --ok: #06d6a0; } * { box-sizing: border-box; } body { margin: 0; background: var(--bg); color: var(--ink); font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; line-height: 1.5; } .container { max-width: 760px; margin: 0 auto; padding: 1.5rem 1rem 3rem; } a { color: var(--accent); } a:hover { color: var(--accent-2); } h1 { font-size: 1.4rem; margin: 0 0 .5rem; } h2 { color: var(--accent); } hr { border: none; border-top: 1px dashed var(--muted); margin: 1rem 0; } header nav { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; } .spacer { flex: 1 1 auto; } .nick-form { display: flex; align-items: center; gap: .35rem; } .nick-form label { color: var(--muted); } input, textarea, button { font: inherit; border: 1px solid var(--muted); background: var(--panel); color: var(--ink); padding: .35rem .5rem; } input:focus, textarea:focus { outline: 2px solid var(--accent); } button { cursor: pointer; background: var(--accent); color: var(--bg); border-color: var(--accent); font-weight: bold; } button:hover { background: var(--accent-2); border-color: var(--accent-2); } .marquee { color: var(--accent-2); background: var(--panel); padding: .25rem; } pre { background: var(--panel); padding: .75rem; overflow-x: auto; } .info { padding: .5rem .75rem; margin: .5rem 0; } .success { background: rgba(6, 214, 160, .15); border: 1px solid var(--ok); } .error { background: rgba(239, 71, 111, .15); border: 1px solid var(--error); } .status { color: var(--muted); } .status.ok { color: var(--ok); } /* chat */ .chat-log { height: 20vh; overflow-y: auto; background: var(--panel); padding: .75rem; margin-bottom: .75rem; } .chat-line { margin: .15rem 0; word-wrap: break-word; } .chat-line.mine .chat-nick { color: var(--accent-2); } .chat-nick { color: var(--accent); font-weight: bold; } .chat-time { color: var(--muted); font-size: .75rem; } .chat-system { color: var(--muted); font-style: italic; margin: .25rem 0; } .chat-form { display: flex; gap: .5rem; } .chat-form input { flex: 1 1 auto; } /* guestbook */ .guestbook-form { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; } .guestbook-form textarea { width: 100%; min-height: 4rem; } .guestbook-entries { list-style: none; padding: 0; } .guestbook-entries li { background: var(--panel); padding: .5rem .75rem; margin: .5rem 0; } .entry-message { white-space: pre-wrap; word-wrap: break-word; } .entry-meta { color: var(--muted); font-size: .8rem; margin-top: .25rem; } /* portal */ .portal-form { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; margin: .75rem 0; } .rename-form { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; margin: .5rem 0; } .roster { list-style: none; padding: 0; } .roster li { padding: .15rem 0; } .legend { color: var(--muted); font-size: .85rem; display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; } .dot { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; background: var(--muted); vertical-align: middle; } .dot.chat { background: var(--ok); } .dot.network { background: var(--accent-2); } .dot.offline { background: var(--muted); } .whoami { color: var(--accent-2); font-weight: bold; } .whoami:hover { color: var(--accent); } .muted { color: var(--muted); } code { background: var(--panel); padding: .1rem .3rem; } /* canvas / r-place */ .palette { display: flex; flex-wrap: wrap; gap: 4px; margin: .5rem 0; } .swatch { width: 26px; height: 26px; border: 2px solid var(--panel); border-radius: 4px; cursor: pointer; } .swatch.selected { border-color: var(--ink); } .canvas-wrap { overflow: auto; max-width: 100%; } #canvas { image-rendering: pixelated; cursor: crosshair; border: 2px solid var(--muted); touch-action: none; } footer { color: var(--muted); }