/* The King Is Missing. --u is the size of one game pixel in CSS pixels (set by game.js). */
:root {
  --u: 1.5;
  --soot: #0b0a0e;
  --soot2: #16131b;
  --paper: #efe3c2;
  --paper2: #d9c9a0;
  --ink: #2a1f16;
  --gold: #d9b45a;
  --gold2: #f3e3b0;
  --blood: #b8322b;
  --violet: #b996ff;
  --fell: "IM Fell English", Georgia, "Times New Roman", serif;
  --pirata: "Pirata One", "IM Fell English", Georgia, serif;
  --pix: "Jersey 10", ui-monospace, monospace;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: #000; color: var(--paper); overflow: hidden; }
body { font-family: var(--fell); -webkit-tap-highlight-color: transparent; }
#stage { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: #000; }
#game { position: relative; overflow: hidden; background: var(--soot); user-select: none; -webkit-user-select: none; touch-action: none; }
#view { position: absolute; inset: 0; width: 100%; height: 100%; image-rendering: pixelated; image-rendering: crisp-edges; }
[hidden] { display: none !important; }
button { font: inherit; color: inherit; cursor: pointer; }
a { color: var(--gold2); }

/* ---------- small on-canvas bits */
#hudTop { position: absolute; top: calc(var(--u) * 8px); left: 50%; transform: translateX(-50%); z-index: 5; }
#btnMenu {
  font-family: var(--pix); font-size: calc(var(--u) * 13px); line-height: 1; letter-spacing: .04em;
  padding: calc(var(--u) * 3px) calc(var(--u) * 9px); border-radius: calc(var(--u) * 3px);
  background: rgba(11, 10, 14, .55); color: var(--gold2); border: 1px solid rgba(217, 180, 90, .35);
}
#btnMenu:hover, #btnMenu:focus-visible { border-color: var(--gold); outline: none; }
#roomname {
  position: absolute; left: 0; right: 0; top: 18%; margin: 0; text-align: center; pointer-events: none; z-index: 4;
  font-family: var(--pirata); font-size: calc(var(--u) * 26px); color: var(--gold2); letter-spacing: .02em;
  text-shadow: 0 calc(var(--u) * 2px) 0 #000, 0 0 calc(var(--u) * 12px) rgba(0, 0, 0, .9); opacity: 0;
}
#roomname.show { animation: roomname 3.2s ease forwards; }
@keyframes roomname { 0% { opacity: 0; transform: translateY(6px); } 15% { opacity: 1; transform: none; } 70% { opacity: 1; } 100% { opacity: 0; } }
#toast {
  position: absolute; left: 50%; bottom: 16%; transform: translate(-50%, 8px); margin: 0; z-index: 6; pointer-events: none;
  font-family: var(--fell); font-style: italic; font-size: calc(var(--u) * 13px); color: var(--gold2);
  background: rgba(11, 10, 14, .78); padding: calc(var(--u) * 4px) calc(var(--u) * 10px); border-radius: calc(var(--u) * 2px);
  opacity: 0; transition: opacity .25s ease, transform .25s ease; white-space: nowrap;
}
#toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ---------- speech */
#dlg {
  position: absolute; left: 8%; right: 8%; top: 4%; z-index: 7; display: flex; gap: calc(var(--u) * 10px); align-items: flex-end;
  background: linear-gradient(180deg, rgba(22, 19, 27, .94), rgba(11, 10, 14, .96));
  border: 1px solid rgba(217, 180, 90, .45); border-radius: calc(var(--u) * 3px);
  padding: calc(var(--u) * 8px) calc(var(--u) * 12px); min-height: calc(var(--u) * 78px);
  box-shadow: 0 calc(var(--u) * 6px) calc(var(--u) * 24px) rgba(0, 0, 0, .6);
}
#dlgPortrait { width: calc(var(--u) * 64px); height: calc(var(--u) * 64px); image-rendering: pixelated; flex: none; }
.dlg-body { flex: 1; min-width: 0; }
#dlgName { margin: 0 0 calc(var(--u) * 2px); font-family: var(--pirata); font-size: calc(var(--u) * 15px); color: var(--gold); letter-spacing: .03em; }
#dlgText { margin: 0; font-size: calc(var(--u) * 14.5px); line-height: 1.32; color: var(--paper); min-height: 2.6em; }
#dlg.door #dlgText { font-style: italic; color: #f3d6a8; }
#dlgAsk { display: flex; flex-wrap: wrap; gap: calc(var(--u) * 6px); margin-top: calc(var(--u) * 6px); }
#dlgAsk button {
  font-family: var(--fell); font-style: italic; font-size: calc(var(--u) * 13px);
  background: transparent; color: var(--paper2); border: 1px solid rgba(217, 180, 90, .3);
  padding: calc(var(--u) * 3px) calc(var(--u) * 10px); border-radius: calc(var(--u) * 2px);
}
#dlgAsk button.sel, #dlgAsk button:hover { color: var(--soot); background: var(--gold2); border-color: var(--gold2); }
#dlg { padding-bottom: calc(var(--u) * 16px); }
/* the bobbing "Space to continue" under a finished line */
.more {
  margin: 0; font-family: var(--pix); font-size: calc(var(--u) * 11px); letter-spacing: .06em; line-height: 1;
  display: inline-flex; align-items: center; gap: calc(var(--u) * 4px); pointer-events: none;
  animation: more-bob 1.1s ease-in-out infinite;
}
.more::after {
  content: ""; width: 0; height: 0; border-left: calc(var(--u) * 3px) solid transparent; border-right: calc(var(--u) * 3px) solid transparent;
  border-top: calc(var(--u) * 4px) solid currentColor;
}
#dlgMore { position: absolute; right: calc(var(--u) * 12px); bottom: calc(var(--u) * 5px); color: var(--gold); }
#cardMore { margin-top: calc(var(--u) * 8px); color: #7a5a30; }
@keyframes more-bob { 0%, 100% { transform: translateY(0); opacity: .75; } 50% { transform: translateY(calc(var(--u) * -2px)); opacity: 1; } }

/* ---------- paper panels */
.panel { position: absolute; inset: 0; z-index: 10; display: flex; align-items: center; justify-content: center; background: rgba(4, 3, 8, .62); }
.panel.clear { background: linear-gradient(90deg, rgba(4, 3, 8, .82) 0%, rgba(4, 3, 8, .35) 60%, rgba(4, 3, 8, 0) 100%); justify-content: flex-start; }
#card { position: absolute; inset: 0; z-index: 9; display: flex; align-items: center; justify-content: center; background: rgba(4, 3, 8, .45); }
.paper {
  position: relative; background: var(--paper); color: var(--ink);
  border-radius: calc(var(--u) * 2px); padding: calc(var(--u) * 14px) calc(var(--u) * 18px);
  width: min(88%, calc(var(--u) * 330px)); max-height: 88%; overflow: auto;
  box-shadow: 0 calc(var(--u) * 10px) calc(var(--u) * 30px) rgba(0, 0, 0, .65), inset 0 0 calc(var(--u) * 30px) rgba(120, 90, 40, .25);
  background-image: radial-gradient(120% 90% at 50% 40%, #f4ead0 0%, #e6d6ad 70%, #d2bf8e 100%);
}
.paper.wide { width: min(92%, calc(var(--u) * 470px)); }
.paper h2 { margin: 0 0 calc(var(--u) * 6px); font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 24px); color: #3a2414; line-height: 1.05; }
#card .paper { text-align: center; }
#cardIcon { width: calc(var(--u) * 32px); height: calc(var(--u) * 32px); image-rendering: pixelated; display: block; margin: 0 auto calc(var(--u) * 4px); }
#cardBody { font-size: calc(var(--u) * 15px); line-height: 1.38; margin: 0 0 calc(var(--u) * 8px); }
#cardFoot { font-style: italic; font-size: calc(var(--u) * 12px); color: #6d5537; margin: 0; }
.say { font-style: italic; font-size: calc(var(--u) * 13px); margin: 0 0 calc(var(--u) * 6px); color: #4a3522; }
.purse, .stat { font-family: var(--pix); font-size: calc(var(--u) * 13px); margin: 0 0 calc(var(--u) * 6px); color: #5a4128; letter-spacing: .02em; }
.hint { font-style: italic; font-size: calc(var(--u) * 11.5px); color: #6d5537; margin: calc(var(--u) * 6px) 0 0; }
.kicker { font-family: var(--pix); font-size: calc(var(--u) * 12px); letter-spacing: .12em; text-transform: uppercase; color: #7a5a30; margin: 0; }
.center { text-align: center; }
.list { display: flex; flex-direction: column; gap: calc(var(--u) * 4px); }
.list h3 { font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 15px); margin: calc(var(--u) * 6px) 0 0; color: #6b3f1d; }
.list .row {
  display: flex; align-items: center; gap: calc(var(--u) * 8px); text-align: left; width: 100%;
  background: rgba(255, 250, 235, .35); border: 1px solid rgba(90, 60, 30, .25); border-radius: calc(var(--u) * 2px);
  padding: calc(var(--u) * 4px) calc(var(--u) * 8px); color: var(--ink);
}
.list .row:hover:not(:disabled), .list .row:focus-visible { background: rgba(255, 250, 235, .8); border-color: #8a5a2b; outline: none; }
.list .row.on { border-color: #8a5a2b; background: rgba(217, 180, 90, .35); }
.list .row:disabled { opacity: .5; cursor: default; }
.list .row .ico { width: calc(var(--u) * 24px); height: calc(var(--u) * 24px); image-rendering: pixelated; flex: none; }
.list .row .txt { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.list .row b { font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 14px); }
.list .row small { font-size: calc(var(--u) * 11.5px); line-height: 1.25; color: #5a4128; }
.list .row .cost { font-family: var(--pix); font-size: calc(var(--u) * 16px); color: #6b3f1d; }
.list .empty { font-style: italic; color: #7a5a30; font-size: calc(var(--u) * 12px); margin: 0; }
/* ---------- gear tab: the inventory (worn things on a little king, the satchel, the details) */
.inv { display: flex; flex-direction: column; gap: calc(var(--u) * 6px); }
.inv h3 { font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 15px); line-height: 1.1; margin: 0 0 calc(var(--u) * 3px); color: #6b3f1d; }
.inv-top { display: grid; grid-template-columns: auto auto; justify-content: space-around; gap: calc(var(--u) * 20px); align-items: start; }
.doll {
  position: relative; display: grid; grid-template-columns: auto calc(var(--u) * 60px) auto; grid-template-rows: auto auto;
  column-gap: calc(var(--u) * 6px); row-gap: calc(var(--u) * 3px); align-items: center;
  padding: 0 calc(var(--u) * 6px);
  background: radial-gradient(48% 60% at 50% 58%, rgba(255, 236, 170, .55) 0%, rgba(255, 236, 170, 0) 70%);
}
.doll-fig { grid-column: 2; grid-row: 1 / span 2; width: calc(var(--u) * 60px); height: calc(var(--u) * 68px); image-rendering: pixelated; align-self: end; }
.doll::after {
  content: ""; grid-column: 2; grid-row: 2; align-self: end; justify-self: center; width: calc(var(--u) * 34px); height: calc(var(--u) * 4px);
  margin-bottom: calc(var(--u) * -1px); border-radius: 50%; background: rgba(58, 36, 20, .28); z-index: 0;
}
.slotwrap { display: flex; flex-direction: column; align-items: center; gap: calc(var(--u) * 2px); }
.slotwrap small { font-family: var(--pix); font-size: calc(var(--u) * 10px); letter-spacing: .08em; text-transform: uppercase; color: #7a5a30; }
.s-weapon { grid-column: 1; grid-row: 1; }
.s-ring { grid-column: 1; grid-row: 2; }
.s-cloak { grid-column: 3; grid-row: 1; }
.s-key { grid-column: 3; grid-row: 2; }
.inv-bag .grid { display: grid; grid-template-columns: repeat(5, calc(var(--u) * 30px)); gap: calc(var(--u) * 3px); }

.inv .cell {
  position: relative; width: calc(var(--u) * 30px); height: calc(var(--u) * 30px); padding: 0;
  display: grid; place-items: center; border-radius: calc(var(--u) * 2px);
  background: linear-gradient(180deg, rgba(120, 84, 44, .22), rgba(120, 84, 44, .1));
  border: 1px solid rgba(90, 60, 30, .45);
  box-shadow: inset 0 calc(var(--u) * 1.5px) calc(var(--u) * 3px) rgba(58, 36, 20, .35), inset 0 0 0 calc(var(--u) * 1px) rgba(255, 250, 235, .25);
  transition: transform .12s ease-out, box-shadow .12s ease-out, border-color .12s ease-out;
}
.inv .cell.slot { width: calc(var(--u) * 32px); height: calc(var(--u) * 32px); background: linear-gradient(180deg, rgba(120, 84, 44, .3), rgba(120, 84, 44, .14)); }
.inv .cell .ico { width: calc(var(--u) * 22px); height: calc(var(--u) * 22px); image-rendering: pixelated; }
.inv .cell.slot .ico { width: calc(var(--u) * 24px); height: calc(var(--u) * 24px); }
.inv .cell.empty { background: rgba(120, 84, 44, .07); border-style: dashed; border-color: rgba(90, 60, 30, .28); box-shadow: inset 0 calc(var(--u) * 1px) calc(var(--u) * 2px) rgba(58, 36, 20, .12); cursor: default; }
.inv .cell.slot.empty { cursor: pointer; }
.inv .cell.on { border-color: #b8862f; background: linear-gradient(180deg, rgba(217, 180, 90, .55), rgba(217, 180, 90, .3)); }
.inv .cell .badge {
  position: absolute; right: calc(var(--u) * -3px); top: calc(var(--u) * -3px); min-width: calc(var(--u) * 10px); height: calc(var(--u) * 10px);
  display: grid; place-items: center; border-radius: 50%; background: #3a2414; color: var(--gold2);
  font-family: var(--pix); font-size: calc(var(--u) * 9px); line-height: 1; box-shadow: 0 calc(var(--u) * 1px) calc(var(--u) * 1.5px) rgba(0, 0, 0, .35);
}
.inv .cell:not(:disabled):hover, .inv .cell.sel { border-color: #3a2414; transform: translateY(calc(var(--u) * -1px)); box-shadow: inset 0 0 0 calc(var(--u) * 1px) var(--gold2), 0 calc(var(--u) * 2px) calc(var(--u) * 4px) rgba(58, 36, 20, .35); }
.inv .cell:focus-visible { outline: calc(var(--u) * 1px) dashed #3a2414; outline-offset: calc(var(--u) * 2px); }

.inv-info {
  display: grid; grid-template-columns: calc(var(--u) * 36px) 1fr; gap: calc(var(--u) * 10px); align-items: start;
  min-height: calc(var(--u) * 56px); padding: calc(var(--u) * 5px) calc(var(--u) * 10px);
  background: rgba(255, 250, 235, .42); border-top: 1px solid rgba(90, 60, 30, .3); border-bottom: 1px solid rgba(90, 60, 30, .3);
}
.info-ico { width: calc(var(--u) * 36px); height: calc(var(--u) * 36px); image-rendering: pixelated; }
.info-txt { min-width: 0; }
.info-txt b { display: block; font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 16px); line-height: 1.05; color: #3a2414; }
.info-body { margin: calc(var(--u) * 2px) 0 0; font-size: calc(var(--u) * 12px); line-height: 1.3; color: #4a3522; }
.info-stats { display: flex; flex-wrap: wrap; gap: calc(var(--u) * 4px); margin: calc(var(--u) * 4px) 0 0; }
.info-stats:empty { display: none; }
.chip {
  font-family: var(--pix); font-size: calc(var(--u) * 11.5px); line-height: 1; letter-spacing: .03em; color: #5a4128;
  padding: calc(var(--u) * 2px) calc(var(--u) * 5px); border: 1px solid rgba(90, 60, 30, .3); border-radius: calc(var(--u) * 2px); background: rgba(255, 250, 235, .5);
}
.chip.up { color: #3d5a1e; border-color: rgba(61, 90, 30, .4); }
.chip.down { color: #8a3b14; border-color: rgba(138, 59, 20, .35); }
.info-act { margin: calc(var(--u) * 4px) 0 0; font-style: italic; font-size: calc(var(--u) * 11px); color: #7a5a30; }
.info-act:empty { display: none; }

.journal p { margin: 0; font-size: calc(var(--u) * 13px); line-height: 1.35; padding: calc(var(--u) * 3px) 0 calc(var(--u) * 5px); border-bottom: 1px dashed rgba(90, 60, 30, .25); }
.journal p.mem { color: #4b2d6e; font-style: italic; }
.tabs { display: flex; gap: calc(var(--u) * 4px); margin-bottom: calc(var(--u) * 6px); border-bottom: 1px solid rgba(90, 60, 30, .3); }
.tabs button {
  font-family: var(--pirata); font-size: calc(var(--u) * 16px); background: none; border: 0; color: #7a5a30;
  padding: calc(var(--u) * 2px) calc(var(--u) * 8px); border-bottom: calc(var(--u) * 2px) solid transparent; margin-bottom: -1px;
}
.tabs button[aria-selected="true"] { color: #3a2414; border-bottom-color: #8a5a2b; }
.tabs button:focus-visible { outline: 1px dashed #8a5a2b; }
.stack { display: flex; flex-direction: column; gap: calc(var(--u) * 5px); align-items: stretch; }
.row-end { display: flex; justify-content: flex-end; margin-top: calc(var(--u) * 8px); }
.btn {
  font-family: var(--pirata); font-size: calc(var(--u) * 15px); letter-spacing: .02em;
  background: #3a2414; color: var(--gold2); border: 1px solid #6b3f1d; border-radius: calc(var(--u) * 2px);
  padding: calc(var(--u) * 4px) calc(var(--u) * 14px);
}
.btn:hover, .btn:focus-visible { background: #5a3418; outline: none; box-shadow: 0 0 0 calc(var(--u) * 1px) var(--gold); }
.btn.red { background: #5e1d18; border-color: #8f2d25; }
.btn.big { font-size: calc(var(--u) * 19px); padding: calc(var(--u) * 5px) calc(var(--u) * 18px); }
.keys { display: grid; grid-template-columns: auto 1fr; gap: calc(var(--u) * 2px) calc(var(--u) * 10px); margin: calc(var(--u) * 8px) 0 0; font-size: calc(var(--u) * 12px); }
.keys dt { font-family: var(--pix); font-size: calc(var(--u) * 13px); color: #6b3f1d; }
.keys dd { margin: 0; }

/* ---------- title */
#title .title-col { margin-left: 7%; max-width: 46%; }
#title h1 {
  font-family: var(--pirata); font-weight: 400; margin: 0; color: var(--gold2); line-height: .95;
  font-size: calc(var(--u) * 44px); text-shadow: 0 calc(var(--u) * 3px) 0 #000, 0 0 calc(var(--u) * 20px) rgba(217, 180, 90, .25);
}
#title .tag { font-style: italic; font-size: calc(var(--u) * 15px); color: var(--paper2); margin: calc(var(--u) * 6px) 0 calc(var(--u) * 14px); }
#title .btn { background: rgba(22, 19, 27, .85); border-color: rgba(217, 180, 90, .45); text-align: left; }
#title .btn:hover, #title .btn:focus-visible { background: rgba(58, 36, 20, .95); }
#title .btn[disabled], #title .btn[disabled]:hover { background: rgba(22, 19, 27, .6); box-shadow: none; }

/* ---------- site menu (2026-10-01, /assets/menu.js): candle-lit ledger buttons on the title, parchment in the pause menu */
#titleMenu {
  --vm-gap: calc(var(--u) * 3.5px); --vm-width: calc(var(--u) * 190px);
  --vm-accent: var(--gold); --vm-muted: var(--paper2); --vm-danger: #e58a7f;
  margin-inline: 0; color: var(--paper);
}
#titleMenu[data-vm-view="load"], #titleMenu[data-vm-view="replace"] { --vm-width: calc(var(--u) * 260px); }
#titleMenu[data-vm-view="settings"], #titleMenu[data-vm-view="credits"] { --vm-width: calc(var(--u) * 230px); }
#title .title-col { max-width: 50%; margin-bottom: calc(var(--u) * 14px); }
#title .tag { margin-bottom: calc(var(--u) * 10px); }
#titleMenu .btn { font-size: calc(var(--u) * 14px); padding: calc(var(--u) * 3px) calc(var(--u) * 12px); }
.vm-menu .vm-item { min-height: 0; align-items: flex-start; text-align: left; }
.vm-menu .vm-back, .vm-menu .vm-row .vm-item { align-items: center; text-align: center; }
.vm-menu .vm-sub { font-family: var(--fell); font-style: italic; font-size: calc(var(--u) * 10px); letter-spacing: 0; color: var(--paper2); opacity: .9; }
.vm-menu .vm-del { min-height: 0; border-radius: calc(var(--u) * 2px); font-family: var(--pirata); font-size: calc(var(--u) * 12px); }
#titleMenu .vm-panel {
  background: rgba(11, 10, 14, .82); border: 1px solid rgba(217, 180, 90, .35); border-radius: calc(var(--u) * 3px);
  padding: calc(var(--u) * 8px) calc(var(--u) * 10px);
}
#titleMenu .vm-h { font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 20px); color: var(--gold2); text-align: left; margin: 0; }
#titleMenu .vm-note { text-align: left; font-style: italic; font-size: calc(var(--u) * 11px); color: var(--paper2); }
#titleMenu .vm-slot .vm-slotnum { font-family: var(--pix); color: var(--gold); opacity: 1; }
.vm-menu .vm-slider { font-family: var(--pirata); font-size: calc(var(--u) * 14px); grid-template-columns: 5em 1fr 3em; }
.vm-menu .vm-slider output { font-family: var(--pix); font-size: calc(var(--u) * 14px); }
#titleMenu .vm-credits .vm-maker { font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 22px); color: var(--gold2); text-align: left; }
#titleMenu .vm-credits .vm-role { font-style: italic; color: var(--paper2); text-align: left; }
.opt-settings { --vm-accent: #8a5a2b; --vm-width: calc(var(--u) * 300px); --vm-gap: calc(var(--u) * 4px); }
.opt-settings .vm-h { font-family: var(--pirata); font-weight: 400; font-size: calc(var(--u) * 17px); color: #3a2414; }
.opt-settings .vm-slider label { color: #3a2414; }
.opt-settings .vm-back { align-self: flex-end; }

/* Portrait phones: the title fills the screen instead of the thin 16:9 strip (the game itself still asks to turn sideways). */
@media (orientation: portrait) and (max-width: 720px) {
  #title, #controls { position: fixed; --u: 1.05; }
  #title {
    flex-direction: column; justify-content: center; align-items: stretch; overflow-y: auto;
    padding: 48px 20px 72px;
    background: linear-gradient(180deg, rgba(4, 3, 8, .94) 0%, rgba(4, 3, 8, .3) 36%, rgba(4, 3, 8, .3) 64%, rgba(4, 3, 8, .94) 100%);
  }
  #title .title-col { margin: 0 auto; max-width: 340px; width: 100%; }
  #title .tag { margin-bottom: 16px; }
  #title h1 { font-size: 46px; }
  #titleMenu, #titleMenu[data-vm-view] { --vm-width: 100%; --vm-gap: 8px; }
  #titleMenu .btn { font-size: 18px; padding: 8px 16px; }
  #titleMenu .vm-sub { font-size: 12px; }
  #title .legal { gap: 6px 12px; justify-content: center; }
  #title .legal #ver { margin-left: 0; }
}
#title .legal {
  position: absolute; left: calc(var(--u) * 12px); right: calc(var(--u) * 12px); bottom: calc(var(--u) * 8px);
  display: flex; flex-wrap: wrap; gap: calc(var(--u) * 10px); font-size: calc(var(--u) * 10px);
}
#title .legal a { color: rgba(239, 227, 194, .55); text-decoration: none; }
#title .legal a:hover { color: var(--gold2); }
/* (2026-10-13: footer on the main menu only): the controls sheet opens over the title, so its links step aside there too */
body:has(#controls:not([hidden])) #title .legal { visibility: hidden; }
#ver { margin-left: auto; font-family: var(--pix); color: rgba(239, 227, 194, .4); }

/* ---------- phone controls */
#touch { display: none; position: absolute; inset: 0; pointer-events: none; z-index: 8; }
body.touch #touch.live { display: block; }
.tk {
  position: absolute; pointer-events: auto; border-radius: 50%; border: 1px solid rgba(243, 227, 176, .35);
  background: rgba(11, 10, 14, .38); color: rgba(243, 227, 176, .8); font-family: var(--pix); font-size: calc(var(--u) * 12px);
  width: calc(var(--u) * 46px); height: calc(var(--u) * 46px); display: flex; align-items: center; justify-content: center; touch-action: none;
}
.tk.on { background: rgba(217, 180, 90, .45); color: #000; }
.pad { position: absolute; left: calc(var(--u) * 12px); bottom: calc(var(--u) * 12px); width: calc(var(--u) * 140px); height: calc(var(--u) * 110px); }
.pad .l { left: 0; bottom: calc(var(--u) * 20px); }
.pad .r { left: calc(var(--u) * 92px); bottom: calc(var(--u) * 20px); }
.pad .u { left: calc(var(--u) * 46px); bottom: calc(var(--u) * 58px); width: calc(var(--u) * 44px); height: calc(var(--u) * 40px); }
.pad .d { left: calc(var(--u) * 46px); bottom: 0; width: calc(var(--u) * 44px); height: calc(var(--u) * 36px); }
.acts { position: absolute; right: calc(var(--u) * 12px); bottom: calc(var(--u) * 12px); width: calc(var(--u) * 150px); height: calc(var(--u) * 120px); }
.acts .j { right: 0; bottom: calc(var(--u) * 10px); width: calc(var(--u) * 56px); height: calc(var(--u) * 56px); }
.acts .a { right: calc(var(--u) * 62px); bottom: 0; width: calc(var(--u) * 52px); height: calc(var(--u) * 52px); }
.acts .o { right: calc(var(--u) * 22px); bottom: calc(var(--u) * 70px); width: calc(var(--u) * 42px); height: calc(var(--u) * 42px); }
.acts .s { right: calc(var(--u) * 100px); bottom: calc(var(--u) * 62px); width: calc(var(--u) * 40px); height: calc(var(--u) * 40px); }

#rotate { position: fixed; inset: 0; z-index: 30; display: flex; align-items: center; justify-content: center; background: var(--soot); text-align: center; padding: 2rem; font-size: 1.2rem; color: var(--gold2); }
#loading { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-style: italic; color: var(--paper2); z-index: 40; background: var(--soot); font-size: 1.1rem; }

@media (prefers-reduced-motion: reduce) {
  #roomname.show { animation-duration: .01s; opacity: 0; }
  #toast { transition: none; }
  .more { animation: none; }
  .inv .cell { transition: none; }
  .inv .cell:not(:disabled):hover, .inv .cell.sel { transform: none; }
}

/* ---------- pause menu size (2026-10-27 bug report: "Menu shouldn't have a scroll bar. Menu changes sizes when
   hovering over different items"): one fixed size on every tab; the item details box keeps its height; skills sit in
   two columns so they fit without scrolling; Quit sits beside Back on every tab */
#menu .paper.wide { height: 88%; display: flex; flex-direction: column; overflow: hidden; padding-top: calc(var(--u) * 10px); padding-bottom: calc(var(--u) * 10px); }
#menu .tabs, #menu #statLine, #menu .row-end { flex: none; }
#menu .pane { flex: 1 1 auto; min-height: 0; overflow-y: auto; scrollbar-width: thin; scrollbar-color: rgba(90, 60, 30, .4) transparent; }
#menu .row-end { justify-content: space-between; gap: calc(var(--u) * 8px); margin-top: calc(var(--u) * 6px); }
#menu .inv-info { height: calc(var(--u) * 84px); min-height: 0; overflow: hidden; }
#menuQuit.armed { background: #8f2d25; border-color: #c04a3c; }
#skillList { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: calc(var(--u) * 3px); }
#skillList .row { padding: calc(var(--u) * 2px) calc(var(--u) * 6px); gap: calc(var(--u) * 6px); }
#skillList .row .ico { width: calc(var(--u) * 20px); height: calc(var(--u) * 20px); }
#skillList .row b { font-size: calc(var(--u) * 13px); line-height: 1.1; }
#skillList .row small { font-size: calc(var(--u) * 10.5px); line-height: 1.18; }
#menu [data-pane="skills"] .say { margin-bottom: calc(var(--u) * 3px); }
#menu [data-pane="skills"] .hint { margin-top: calc(var(--u) * 4px); }
#menu [data-pane="options"] .keys { margin-top: calc(var(--u) * 5px); row-gap: calc(var(--u) * 1px); }
#menu [data-pane="options"] p.center { margin: calc(var(--u) * 6px) 0 0; }
