:root {
  --bg:#11100e;
  --screen:#17140e;
  --text:#e6b96c;
  --bright:#ffd89a;
  --dim:#a89069;
  --faint:#65583e;
  --line:#51432c;
  --glow:rgba(232,175,81,.08);
  --mono:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;
  color-scheme:dark;
}

html[data-phosphor=green] {
  --bg:#0b110d;
  --screen:#0c160f;
  --text:#8bca99;
  --bright:#c0f1b9;
  --dim:#7d9f84;
  --faint:#405e45;
  --line:#35503d;
  --glow:rgba(100,220,120,.07);
}

html[data-phosphor=white] {
  --bg:#111316;
  --screen:#171a1e;
  --text:#b9c3d0;
  --bright:#e8edf4;
  --dim:#929cab;
  --faint:#566270;
  --line:#424b56;
  --glow:rgba(190,210,240,.05);
}

* {
  box-sizing:border-box;
}

html {
  min-height:100%;
  scroll-behavior:smooth;
}

body {
  margin:0;
  background:var(--bg);
  color:var(--text);
  font:14px/1.75 var(--mono);
  padding:0;
  -webkit-font-smoothing:antialiased;
}

button,input {
  font:inherit;
}

button,a,input {
  touch-action:manipulation;
}

button {
  color:inherit;
  cursor:pointer;
}

a {
  color:var(--bright);
  text-decoration:none;
  border-bottom:1px dotted var(--faint);
  overflow-wrap:anywhere;
}

a:hover {
  background:var(--text);
  color:var(--screen);
  border-color:var(--text);
}

button:focus-visible,a:focus-visible,input:focus-visible {
  outline:1px solid var(--bright);
  outline-offset:4px;
}

::selection {
  background:var(--text);
  color:var(--screen);
}

[hidden] {
  display:none!important;
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

.terminal {
  max-width:1160px;
  min-height:100svh;
  margin:auto;
  padding:clamp(40px, 10svh, 100px) 48px 24px;
  display:flex;
  flex-direction:column;
  position:relative;
}

.terminal-screen {
  position:relative;
  flex:1;
  min-width:0;
  padding:0 0 48px;
}

.transcript {
  position:relative;
  z-index:6;
}

.command-form {
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
  z-index:6;
  margin:0;
  min-height:29px;
}

.prompt {
  white-space:nowrap;
  flex-shrink:0;
}

.prompt-host {
  color:var(--bright);
}

.prompt-path {
  color:var(--dim);
}

.prompt-dollar {
  padding-left:8px;
}

.input-wrap {
  position:relative;
  flex:1;
  min-width:0;
  display:flex;
  align-items:center;
}

.input-wrap input {
  color:var(--bright);
  width:100%;
  border:0;
  border-radius:0;
  background:transparent;
  padding:1px 0;
  outline:none;
  caret-color:var(--bright);
  min-width:0;
  line-height:1.75;
  text-shadow:0 0 12px var(--glow);
}

.input-wrap input:focus-visible {
  outline:none;
}

.block-cursor {
  position:absolute;
  left:0;
  top:5px;
  width:8px;
  height:17px;
  background:var(--text);
  opacity:.8;
  pointer-events:none;
  animation:blink 1.2s steps(1) infinite;
}

.input-wrap.has-value .block-cursor {
  display:none;
}

.input-wrap:not(.has-value) input {
  caret-color:transparent;
}

.enter-key {
  border:1px solid var(--line);
  padding:0 9px;
  background:transparent;
  color:var(--dim);
  line-height:24px;
  visibility:hidden;
}

.command-form:focus-within .enter-key {
  visibility:visible;
}

.enter-key:hover {
  color:var(--bright);
  border-color:var(--text);
}

.terminal-footer {
  position:relative;
  z-index:6;
  display:flex;
  align-items:center;
  font-size:11px;
  color:var(--dim);
}

.terminal-footer button {
  border:0;
  background:none;
  font-size:11px;
  padding:10px 12px;
  margin-left:-12px;
  color:var(--dim);
}

.terminal-footer button:hover {
  color:var(--bright);
}

.home-actions { display:flex; flex-wrap:wrap; gap:4px 18px; margin:16px 0 0; }
.home-actions button { background:none; border:0; padding:10px 0; color:var(--dim); font-size:11px; min-height:44px; }
.home-actions button:hover,.home-actions button:focus-visible { color:var(--bright); }

.entry {
  margin-bottom:30px;
  animation:arrive .2s ease-out;
}

.echo {
  color:var(--bright);
  margin-bottom:14px;
  overflow-wrap:anywhere;
}

.echo .prompt {
  margin-right:12px;
}

.output {
  max-width:920px;
  padding-left:0;
  overflow-wrap:anywhere;
}

.output p {
  margin:0 0 13px;
}

.output .muted {
  color:var(--dim);
}

.output .bright {
  color:var(--bright);
}

.output .small {
  font-size:11px;
}

.output h2 {
  font:inherit;
  color:var(--bright);
  font-size:16px;
  letter-spacing:.02em;
  margin:0 0 15px;
}

.output h3 {
  font:inherit;
  color:var(--bright);
  margin:0 0 9px;
}

.output h1 {
  font:inherit;
  font-size:20px;
  margin:0 0 20px;
  color:var(--bright);
}

.output .rule {
  color:var(--faint);
  border:0;
  border-top:1px solid var(--line);
  margin:20px 0;
}

.output .section-tag {
  color:var(--dim);
  font-size:10px;
  text-transform:uppercase;
  letter-spacing:.15em;
  margin-bottom:15px;
}

.command-button {
  background:none;
  border:0;
  color:var(--bright);
  padding:0;
  text-align:left;
  line-height:inherit;
  text-decoration:none;
  cursor:pointer;
}

.command-button:hover {
  text-decoration:underline;
  text-underline-offset:4px;
}

.help-row {
  display:grid;
  grid-template-columns:165px 1fr;
  gap:20px;
  max-width:690px;
  margin-bottom:9px;
}

.help-row>span {
  color:var(--dim);
  font-size:12px;
}

.suggestions {
  margin-top:20px;
  display:flex;
  gap:8px 23px;
  flex-wrap:wrap;
}

.suggestions .command-button {
  color:var(--text);
  font-size:11px;
}

.suggestions .command-button:before {
  content:'[ ';
  color:var(--dim);
}

.suggestions .command-button:after {
  content:' ]';
  color:var(--dim);
}


.identity {
  display:grid;
  grid-template-columns:110px 1fr;
  gap:4px 22px;
  font-size:12px;
  margin:0 0 22px;
}

.identity dt {
  color:var(--dim);
}

.identity dd {
  margin:0;
}

.research-item,.paper-item,.talk-item,.post-item {
  margin:0 0 22px;
  padding:0 0 22px;
  border-bottom:1px solid var(--line);
}

.research-item:last-of-type,.paper-item:last-of-type,.talk-item:last-of-type {
  border-bottom:0;
}

.item-number {
  color:var(--dim);
  font-size:10px;
  display:block;
  margin-bottom:7px;
}

.paper-item h3,.post-item h3 {
  font-size:14px;
  line-height:1.65;
  font-weight:500;
}

.paper-item p {
  color:var(--dim);
  font-size:11px;
  line-height:1.8;
  max-width:780px;
}

.paper-item .paper-actions {
  display:flex;
  gap:20px;
  font-size:11px;
}

.tagline {
  padding:12px 0;
  border-top:1px dashed var(--line);
  border-bottom:1px dashed var(--line);
  color:var(--bright);
  max-width:730px;
}

.terminal-copy {
  background:transparent;
  border:0;
  border-bottom:1px dotted var(--faint);
  color:var(--bright);
  padding:0;
  font-size:11px;
}

.error {
  color:var(--bright);
}

.document-output {
  font-size:13px;
  line-height:1.9;
  max-width:850px;
}

.document-output p {
  margin:0 0 20px;
}

.document-output h2 {
  font-size:17px;
  margin:35px 0 20px;
}

.document-output h3 {
  font-size:14px;
  margin:25px 0 15px;
}

.document-output ul,.document-output ol {
  padding-left:22px;
}

.document-output li {
  margin-bottom:7px;
}

.document-output pre {
  font:12px/1.75 var(--mono);
  overflow:auto;
  padding:17px;
  background:#0002;
  border:1px solid var(--line);
  max-width:100%;
  color:var(--text);
}

.document-output code {
  color:var(--bright);
  font-family:var(--mono);
  font-size:.9em;
}

.document-output blockquote {
  border-left:2px solid var(--line);
  margin:20px 0;
  padding:0 20px;
  color:var(--dim);
}

.document-output table {
  display:block;
  overflow:auto;
  max-width:100%;
  border-collapse:collapse;
  font-size:12px;
}

.document-output th,.document-output td {
  border-bottom:1px solid var(--line);
  padding:10px;
  text-align:left;
}

.document-output img {
  max-width:100%;
  height:auto;
}

.document-output .timeline-item {
  display:grid;
  grid-template-columns:100px 1fr;
  gap:20px;
  margin-bottom:18px;
}

.timeline-date {
  color:var(--dim);
}

.command-count {
  color:var(--dim);
}

.document-output .post-header {
  margin-bottom:30px;
}

.document-output .post-header h1 {
  font-size:22px;
  margin-top:20px;
}

.document-output .post-meta {
  color:var(--dim);
}

@keyframes blink {
  50% {
    opacity:0;
  }
}

@keyframes arrive {
  from {
    opacity:0;
    transform:translateY(3px);
  }
  to {
    opacity:1;
    transform:translateY(0);
  }
}

@media(max-width:800px) {
  .terminal {
    padding:56px 28px 20px;
  }
  body {
    font-size:13px;
  }

  .help-row {
    grid-template-columns:130px 1fr;
    gap:10px;
  }
}

@media(max-width:480px) {
  .input-wrap input {
    font-size:16px;
  }
  body {
    font-size:12px;
  }

  .terminal {
    padding:40px 20px 16px;
  }

  .command-form {
    gap:8px;
  }
  .prompt-dollar {
    padding-left:5px;
  }
  .enter-key {
    visibility:visible;
    padding:0 7px;
  }

  .identity {
    grid-template-columns:80px 1fr;
    font-size:11px;
    gap:6px 13px;
  }
  .help-row {
    grid-template-columns:105px 1fr;
    gap:10px;
  }
  .help-row>span {
    font-size:10px;
  }
  .suggestions {
    gap:10px 15px;
  }
  .output h2 {
    font-size:14px;
  }
  .paper-item h3 {
    font-size:12px;
  }
  .document-output {
    font-size:12px;
  }
  .document-output .timeline-item {
    grid-template-columns:65px 1fr;
    gap:10px;
  }

  .entry {
    margin-bottom:25px;
  }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  .entry,.block-cursor {
    animation:none;
  }
}

.shell-text {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  font: 12px/1.8 var(--mono);
  margin: 0 0 15px;
  color: var(--text);
}
.file-row {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr) 75px;
  gap: 20px;
  max-width: 720px;
  padding: 5px 0;
  border-bottom: 1px solid var(--glow);
}
.file-mode, .file-size {
  font-size: 10px;
  color: var(--dim);
}
.file-size { text-align: right; }
.file-row button { overflow-wrap: anywhere; }
.neofetch {
  display: grid;
  grid-template-columns: 170px 1fr;
  gap: 35px;
  padding: 14px 0;
}
.fetch-art {
  font: 18px/1.35 var(--mono);
  color: var(--bright);
  margin: 15px 0;
  text-shadow: 0 0 20px var(--glow);
}
.output .fetch-row {
  display: flex;
  gap: 20px;
  font-size: 11px;
  margin: 0 0 7px;
}
.fetch-key { min-width: 65px; color: var(--bright); }
.fetch-palette { display: flex; margin-top: 20px; }
.fetch-palette i { width: 24px; height: 15px; }
.dna-art { font: 12px/1.2 var(--mono); color: var(--bright); }
.history-panel {
  position: relative;
  z-index: 10;
  border: 1px solid var(--text);
  background: var(--screen);
  padding: 20px;
  margin: 15px 0 25px;
  max-width: 740px;
  box-shadow: 0 12px 35px #0006;
}
.history-heading { display: flex; justify-content: space-between; align-items: center; font-size: 12px; }
.history-heading button { border: 0; background: none; color: var(--dim); font-size: 10px; }
.history-panel input { width: 100%; background: transparent; border: 0; border-bottom: 1px solid var(--line); padding: 15px 0 10px; color: var(--bright); font: 16px var(--mono); border-radius: 0; margin-bottom: 15px; }
.history-results { display: flex; flex-direction: column; align-items: stretch; gap: 5px; }
.history-result { background: transparent; border: 0; text-align: left; color: var(--text); font-size: 12px; padding: 5px; overflow-wrap: anywhere; }
.history-result:hover, .history-result:focus { background: var(--line); color: var(--bright); }
.history-panel>p { margin: 16px 0 0; font-size: 9px; color: var(--dim); }
@media(max-width:600px) {
  .neofetch { grid-template-columns: 1fr; gap: 10px; }
  .fetch-art { font-size: 12px; margin: 0 0 10px; }
  .file-row { grid-template-columns: minmax(0,1fr) 55px; gap: 10px; }
  .file-mode { display: none; }
  .file-size { font-size: 9px; }
  .shell-text { font-size: 11px; }
}
@media print {
  body {
    background:white;
    color:black;
    padding:0;
  }
  .terminal-footer,.command-form,.home-actions {
    display:none;
  }
  .terminal {
    min-height:0;
    padding:0;
  }

  .terminal-screen {
    padding:0;
    background:none;
  }
  .output,.output p,.output a,.output h2 {
    color:black;
  }
  .echo {
    color:#555;
  }
}

/* Optional arcade cartridge, opened from the homepage or the tank command. */
body.tank-open { overflow: hidden; }
.tank-dialog {
  width: min(660px, calc(100vw - 20px));
  max-height: calc(100dvh - 20px);
  overflow: auto;
  border: 1px solid #706044;
  border-radius: 5px;
  background: #141b1d;
  color: #edc879;
  padding: 20px 24px;
  font: 12px/1.5 var(--mono);
  box-shadow: 0 25px 100px #000b;
}
.tank-dialog::backdrop { background: #080d10e8; }
.tank-dialog button { background: transparent; border: 1px solid #53605b; color: #edc879; padding: 8px 12px; font: 11px var(--mono); cursor: pointer; }
.tank-dialog button:hover, .tank-dialog button:focus-visible { background: #293531; border-color: #edc879; }
.tank-dialog button:disabled { opacity: .35; cursor: default; }
.tank-header { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding-bottom: 12px; }
.tank-kicker { color: #9ba7a0; font-size: 8px; letter-spacing: .15em; }
.tank-header h2 { font: bold 15px/1.4 var(--mono); margin: 5px 0 0; letter-spacing: .06em; }
.tank-header>button { border: 0; color: #a7b4aa; }
.tank-hud { display: flex; justify-content: space-between; border-top: 1px solid #37443d; padding: 10px 0; }
.tank-hud span { display: block; font-size: 8px; color: #a7b4aa; letter-spacing: .12em; }
.tank-hud strong { font-size: 16px; letter-spacing: .12em; font-weight: normal; }
.tank-stage { position: relative; display: flex; justify-content: center; background: #101719; border: 1px solid #37443d; }
.tank-stage canvas { display: block; width: min(100%, 416px, max(240px, calc(100dvh - 350px))); height: auto; aspect-ratio: 1; image-rendering: pixelated; touch-action: none; }
.tank-overlay { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: safe center; overflow-y: auto; padding: 20px; text-align: center; background: #101719e8; }
.tank-overlay h3 { color: #edc879; font-size: clamp(14px, 3vw, 21px); letter-spacing: .08em; margin: 0 0 12px; }
.tank-overlay p { max-width: 290px; color: #b7c4ba; font-size: 11px; margin: 0 0 20px; }
.tank-overlay button { background: #edc879; color: #101719; border-color: #edc879; font-weight: bold; padding: 10px 22px; }
.tank-overlay button:hover { color: #edc879; }
.tank-reward { margin-top:14px; display:flex; flex-wrap:wrap; justify-content:center; gap:4px 16px; }
.tank-reward p { flex-basis:100%; font-size:10px; margin:0; color:#c6e7b2; }
.tank-reward a { color:#edc879; font-size:11px; padding:10px 0; }
.tank-reward a:hover { background:#edc879; color:#101719; }
.tank-instructions { text-align: center; color: #a7b4aa; font-size: 9px; margin: 10px 0; }
.tank-controls { display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.tank-dpad { display: grid; grid-template-columns: repeat(3, 36px); grid-template-rows: repeat(3, 32px); gap: 3px; }
.tank-dpad button { padding: 0; font-size: 16px; touch-action: none; user-select: none; -webkit-user-select: none; }
.pad-up { grid-area: 1 / 2; }
.pad-left { grid-area: 2 / 1; }
.pad-right { grid-area: 2 / 3; }
.pad-down { grid-area: 3 / 2; }
.tank-dialog .tank-fire { height: 64px; width: 64px; border-radius: 50%; border: 2px solid #a66a46; color: #efaa74; touch-action: none; user-select: none; -webkit-user-select: none; }
.tank-dialog .is-held { background: #4c4933; border-color: #edc879; }
.tank-actions { display: flex; flex-direction: column; gap: 8px; }
.tank-objective { text-align: center; color: #9ba7a0; font-size: 9px; margin: 10px 0 0; }
@media (max-width:480px) {
  .tank-dialog { padding: 12px 15px; }
  .tank-header h2 { font-size: 12px; }
  .tank-header>button { padding: 8px 2px; }
  .tank-stage canvas { width: min(100%, max(220px, calc(100dvh - 340px))); }
  .tank-controls { gap: 10px; }
  .tank-dpad { grid-template-columns: repeat(3, 40px); grid-template-rows: repeat(3, 36px); }
  .tank-dialog .tank-fire { width: 60px; height: 60px; }
}

/* Shell editing: suggestions stay beside the prompt, out of command output. */
.input-wrap { overflow:hidden; }
.input-wrap input { position:relative; z-index:1; }
.command-ghost { position:absolute; left:0; top:1px; white-space:pre; color:var(--dim); opacity:.7; pointer-events:none; }
.ghost-prefix { visibility:hidden; }
.completion-panel { position:relative; z-index:7; max-width:680px; margin:10px 0 0; border:1px solid var(--line); background:var(--screen); box-shadow:0 8px 24px #0003; }
#completion-options { max-height:224px; overflow-y:auto; overscroll-behavior:contain; }
.completion-option { padding:7px 14px; cursor:pointer; overflow-wrap:anywhere; border-left:2px solid transparent; }
.completion-option:hover { background:var(--glow); }
.completion-option[aria-selected=true] { color:var(--bright); background:var(--glow); border-left-color:var(--bright); }
.completion-panel p { margin:0; padding:8px 14px; border-top:1px solid var(--line); font-size:10px; color:var(--dim); }
.input-notice { position:relative; z-index:6; margin:7px 0 0; color:var(--dim); font-size:11px; }

/* A focused, read-only buffer with a stable status line and command area. */
body.vim-open { overflow:hidden; }
.vim-dialog { width:min(1060px,calc(100vw - 64px)); height:min(820px,calc(100vh - 64px)); height:min(820px,calc(100dvh - 64px)); max-width:none; max-height:none; padding:0; border:1px solid var(--line); border-radius:5px; background:var(--screen); color:var(--text); font:13px/24px var(--mono); box-shadow:0 28px 120px #000a; overflow:hidden; }
.vim-dialog[open] { display:flex; flex-direction:column; }
.vim-dialog::backdrop { background:#070907d9; backdrop-filter:blur(5px); }
.vim-bar { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:16px 22px; border-bottom:1px solid var(--line); flex-shrink:0; }
.vim-bar>div:first-child { min-width:0; }
.vim-brand { color:var(--dim); font-size:9px; letter-spacing:.16em; }
.vim-bar h2 { margin:3px 0 0; font-size:14px; font-weight:normal; color:var(--bright); overflow-wrap:anywhere; line-height:1.6; }
.vim-actions { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.vim-dialog button { border:1px solid var(--line); background:transparent; padding:5px 10px; font-size:11px; }
.vim-dialog button:hover { color:var(--bright); background:var(--glow); border-color:var(--dim); }
.vim-help { padding:10px 22px; font-size:11px; line-height:1.8; color:var(--dim); border-bottom:1px solid var(--line); flex-shrink:0; }
.vim-buffer { flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:18px 0 40px; outline:none; scrollbar-color:var(--line) var(--screen); }
.vim-buffer:focus-visible { box-shadow:inset 2px 0 var(--dim); }
.vim-line { display:grid; grid-template-columns:56px minmax(0,1fr); padding:0 24px 0 0; min-height:24px; border-left:2px solid transparent; }
.vim-line-number { text-align:right; padding-right:18px; color:var(--dim); opacity:.65; user-select:none; }
.vim-line-text { white-space:pre-wrap; overflow-wrap:anywhere; tab-size:4; }
.vim-current { background:var(--glow); border-left-color:var(--text); }
.vim-current .vim-line-number { color:var(--bright); opacity:1; }
.vim-no-numbers .vim-line { grid-template-columns:minmax(0,1fr); padding-left:22px; }
.vim-no-numbers .vim-line-number { display:none; }
.vim-buffer mark { background:var(--line); color:var(--bright); border-bottom:1px solid var(--dim); }
.vim-buffer mark.vim-active-match { background:var(--bright); color:var(--screen); }
.vim-status { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:5px 20px; border-top:1px solid var(--line); background:var(--glow); color:var(--bright); font-size:10px; flex-shrink:0; }
.vim-status>span:first-child { letter-spacing:.08em; }
#vim-position { margin-left:auto; white-space:nowrap; }
.vim-command { display:flex; align-items:center; gap:10px; padding:5px 20px; border-top:1px solid var(--line); flex-shrink:0; }
.vim-command label { color:var(--bright); font-size:16px; }
.vim-command input { flex:1; min-width:0; color:var(--bright); border:0; outline:none; background:transparent; padding:4px 0; border-radius:0; caret-color:var(--bright); }
.vim-notice { min-height:34px; margin:0; padding:5px 20px; color:var(--dim); font-size:10px; line-height:24px; flex-shrink:0; }
.vim-touch { display:none; padding:8px 16px; border-top:1px solid var(--line); gap:8px; flex-shrink:0; }
@media (pointer:coarse) { .vim-touch { display:flex; } .vim-touch button { flex:1; min-height:44px; } }
@media (max-width:640px) {
  .vim-dialog { width:100vw; height:100vh; height:100dvh; border-radius:0; border:0; }
  .vim-bar { padding:12px 14px; gap:8px; }
  .vim-brand { font-size:8px; }
  .vim-bar h2 { font-size:12px; }
  .vim-actions { gap:5px; }
  .vim-dialog button { padding:7px 8px; }
  .vim-line { grid-template-columns:42px minmax(0,1fr); padding-right:14px; }
  .vim-line-number { padding-right:12px; }
  .vim-status { padding:6px 12px; gap:6px; font-size:9px; flex-wrap:wrap; }
  .vim-command,.vim-notice,.vim-help { padding-left:14px; padding-right:14px; }
  .vim-command input { font-size:16px; }
  .vim-notice { padding-bottom:max(5px,env(safe-area-inset-bottom)); }
}

@media (max-width:480px) { .command-ghost { font-size:16px; } }

/* Discoverable research, with compact actions that also work on touch screens. */
.paper-group-title { margin:28px 0 4px; padding-bottom:9px; border-bottom:1px solid var(--line); color:var(--bright); font-size:12px; font-weight:normal; letter-spacing:.04em; }
.share-actions { display:inline-flex; align-items:center; flex-wrap:wrap; gap:10px; margin:6px 0; font-size:11px; }
.share-actions a,.share-actions button { white-space:nowrap; }
.share-url { flex-basis:100%; min-width:0; width:100%; padding:7px 9px; border:1px solid var(--line); background:var(--screen); color:var(--bright); border-radius:0; }
.search-result { padding:20px 0; border-bottom:1px solid var(--line); }
.search-result h3 { margin:6px 0; font-size:15px; font-weight:normal; line-height:1.6; }
.search-result p { margin:6px 0; }
.search-result mark { background:var(--line); color:var(--bright); padding:0 1px; }
.search-result a:hover mark { background:transparent; color:inherit; }
@media (pointer:coarse) { .share-actions a,.share-actions button { display:inline-flex; min-height:44px; align-items:center; } }

/* DNA Snake: a separate cartridge, discoverable through the terminal. */
body.snake-open { overflow:hidden; }
.snake-dialog { width:min(540px,calc(100vw - 20px)); max-height:calc(100dvh - 20px); overflow:auto; background:#101815; color:#b8d4b8; border:1px solid #4a6552; border-radius:5px; padding:20px 24px; font:12px/1.5 var(--mono); box-shadow:0 25px 100px #000b; }
.snake-dialog::backdrop { background:#080d10e8; }
.snake-dialog button { background:transparent; color:#c6e7b2; border:1px solid #4a6552; padding:10px 12px; min-height:44px; font:11px var(--mono); }
.snake-dialog button:hover,.snake-dialog button:focus-visible { background:#293e30; border-color:#c6e7b2; }
.snake-dialog button:disabled { opacity:.4; cursor:default; }
.snake-header { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; }
.snake-kicker { font-size:8px; letter-spacing:.14em; color:#90a897; }
.snake-header h2 { font-size:17px; letter-spacing:.08em; margin:5px 0 0; }
.snake-header>button { border:0; }
.snake-hud { display:flex; justify-content:space-between; padding:10px 0; border-top:1px solid #334b3b; }
.snake-hud span { display:block; color:#90a897; font-size:8px; letter-spacing:.12em; }
.snake-hud strong { font-size:16px; font-weight:normal; }
.snake-stage { position:relative; display:flex; justify-content:center; border:1px solid #334b3b; }
.snake-stage canvas { display:block; width:min(100%,400px,max(240px,calc(100dvh - 370px))); height:auto; aspect-ratio:1; touch-action:none; }
.snake-overlay { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:safe center; overflow-y:auto; padding:20px; background:#101815ed; text-align:center; }
.snake-overlay h3 { font-size:clamp(14px,3vw,20px); letter-spacing:.05em; margin:0 0 12px; color:#c6e7b2; }
.snake-overlay p { margin:0 0 20px; max-width:250px; font-size:11px; }
.snake-overlay button { background:#c6e7b2; color:#101815; }
.snake-overlay button:hover { color:#c6e7b2; }
.snake-sequence { display:flex; align-items:center; gap:12px; min-width:0; padding:12px 0; border-bottom:1px solid #334b3b; }
.snake-sequence>span { flex-shrink:0; color:#90a897; font-size:10px; }
.snake-sequence code { font:12px var(--mono); letter-spacing:.08em; overflow-wrap:anywhere; min-width:0; color:#c6e7b2; }
.snake-instructions,.snake-objective { text-align:center; font-size:9px; color:#90a897; margin:10px 0; }
.snake-controls { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.snake-dpad { display:grid; grid-template-columns:repeat(3,44px); grid-template-rows:repeat(2,44px); gap:4px; }
.snake-dpad button { padding:0; font-size:18px; touch-action:manipulation; }
.snake-pad-up { grid-area:1 / 2; }
.snake-pad-left { grid-area:2 / 1; }
.snake-pad-down { grid-area:2 / 2; }
.snake-pad-right { grid-area:2 / 3; }
.snake-actions { display:flex; flex-direction:column; gap:6px; }
@media(max-width:480px) { .snake-dialog { padding:12px 15px; } .snake-header h2 { font-size:14px; } .snake-stage canvas { width:min(100%,max(220px,calc(100dvh - 350px))); } }

/* Public guestbook; loaded only when a visitor opens it. */
body.guestbook-open { overflow:hidden; }
.guestbook-dialog { width:min(820px,calc(100vw - 24px)); max-height:calc(100dvh - 32px); overflow:auto; padding:24px; border:1px solid var(--line); border-radius:4px; background:var(--bg); color:var(--text); font:13px/1.7 var(--mono); }
.guestbook-dialog::backdrop { background:#080d10e8; }
.guestbook-header { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.guestbook-header h2 { margin:0; font:inherit; font-size:18px; color:var(--bright); }
.guestbook-dialog button { background:transparent; border:1px solid var(--line); padding:10px 12px; color:var(--dim); min-height:44px; }
.guestbook-header button { border:0; }
.guestbook-intro { margin:16px 0 6px; }
.guestbook-status { font-size:11px; color:var(--dim); }
.guestbook-actions { display:flex; align-items:center; flex-wrap:wrap; gap:12px 20px; margin-top:16px; }
.guestbook-actions a { padding:10px 0; }
@media(max-width:480px) { .guestbook-dialog { padding:16px; } }
