/* CROSS-EXAMINED - Copyright (c) 2026 Jan-Maurice Dahlmanns - MIT License (see LICENSE) */

:root {
  --ink: #1a1210;
  --gold: #e8c040;
  --gold2: #f8e8a8;
  --red: #d8342a;
  --blue: #3a7ae8;
  --text: #f6f2ea;
  --dim: #b8aa98;
  --panel: rgba(16, 12, 10, 0.92);
  --line: #6a5034;
  --serif: Georgia, "Times New Roman", serif;
  --sans: "Segoe UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; overflow: hidden; background: #070505; color: var(--text); font: 18px/1.45 var(--sans); user-select: none; }
.hidden { display: none !important; }
button { font: 600 18px var(--sans); color: var(--text); background: linear-gradient(#3a2a1e, #22180f); border: 2px solid var(--line); border-radius: 6px; padding: 8px 18px; cursor: pointer; box-shadow: 0 3px 0 #0a0604; }
button:hover:not(:disabled) { border-color: var(--gold); color: #fff; background: linear-gradient(#4a3624, #2a1e12); }
button:active:not(:disabled) { transform: translateY(2px); box-shadow: 0 1px 0 #0a0604; }
button:disabled { opacity: 0.4; cursor: default; }
button.primary { background: linear-gradient(#8a2a1e, #5a160e); border-color: #d8705a; }
button.danger { border-color: #8a2a1e; }
select, input[type=range] { font: inherit; background: #1a1210; color: var(--text); border: 2px solid var(--line); border-radius: 4px; padding: 4px 8px; }
input[type=range] { accent-color: var(--gold); padding: 0; }
a { color: var(--gold); }
kbd { font: 14px Consolas, monospace; background: #2a1e14; border: 1px solid #6a5034; border-bottom-width: 3px; border-radius: 4px; padding: 0 6px; }
.dim { color: var(--dim); }
.center { text-align: center; }

/* the 16:9 stage, scaled to fit */
#app { position: fixed; left: 50%; top: 50%; width: 1280px; height: 720px; transform-origin: center; overflow: hidden; background: #000; }
#stageWrap { position: absolute; inset: 0; }
#stage { display: block; width: 1280px; height: 720px; }
#stageWrap.examining { cursor: crosshair; }
#stageWrap.examining.hot { cursor: zoom-in; }

/* HUD */
#hud { position: absolute; inset: 0; pointer-events: none; }
#hud > * { pointer-events: auto; }
#topBtns { position: absolute; top: 14px; right: 14px; display: flex; gap: 8px; }
#topBtns button { font-size: 15px; padding: 6px 12px; opacity: 0.9; }
#health { position: absolute; top: 16px; left: 16px; display: flex; gap: 6px; padding: 8px 10px; background: rgba(0, 0, 0, 0.5); border-radius: 8px; border: 2px solid #6a5034; }
#health i { width: 26px; height: 26px; display: block; clip-path: polygon(50% 0, 100% 38%, 82% 100%, 18% 100%, 0 38%); background: radial-gradient(circle at 40% 30%, #fff6c0, #e8b030 60%, #8a5a10); }
#health i.lost { background: #3a2a20; }
#health i.lost.blink { animation: blink 0.25s 4; background: #ff3a2a; }
@keyframes blink { 50% { opacity: 0.2; } }

#locName { position: absolute; top: 14px; left: 14px; padding: 6px 18px; font: bold 22px var(--serif); color: var(--gold2); background: linear-gradient(90deg, rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0)); border-left: 5px solid var(--gold); }
#card { position: absolute; top: 40px; left: 40px; font: bold 30px Consolas, "Courier New", monospace; color: #7aff8a; text-shadow: 0 0 8px #000, 2px 2px 0 #000; }
#card div:first-child { font-size: 36px; }

/* text box */
#textbox { position: absolute; left: 40px; right: 40px; bottom: 18px; height: 190px; padding: 30px 36px 18px; background: linear-gradient(rgba(14, 18, 34, 0.94), rgba(6, 8, 16, 0.96)); border: 4px solid #c8b080; border-radius: 14px; box-shadow: 0 0 0 3px #1a1210, 0 8px 24px rgba(0, 0, 0, 0.6); cursor: pointer; }
.nameplate { position: absolute; top: -26px; left: 22px; padding: 4px 22px; font: bold 22px var(--sans); color: #fff; background: linear-gradient(#4a5aa8, #2a3678); border: 3px solid #c8b080; border-radius: 8px; letter-spacing: 0.5px; }
.nameplate.me { background: linear-gradient(#2a8a7a, #155a50); }
#text { font: 26px/1.42 var(--sans); color: #fff; text-shadow: 1px 2px 0 rgba(0, 0, 0, 0.6); white-space: pre-wrap; }
#text.testimony { color: #8aff9a; }
#text .red { color: #ff6a5a; font-weight: 700; }
#text .blue { color: #8ac8ff; }
#text .green { color: #8aff9a; }
#text .gold { color: #ffd860; font-weight: 700; }
#nextArrow { position: absolute; right: 22px; bottom: 10px; color: var(--gold); font-size: 22px; animation: bob 0.8s infinite; }
@keyframes bob { 50% { transform: translateY(5px); } }

/* cross-examination */
#crossBar { position: absolute; left: 50%; transform: translateX(-50%); bottom: 216px; display: flex; gap: 10px; align-items: center; padding: 8px 12px; background: rgba(0, 0, 0, 0.55); border-radius: 12px; }
#crossBar button { font-size: 20px; padding: 8px 16px; }
#crossBar .press { background: linear-gradient(#2a5ad8, #163a98); border-color: #8ab0ff; }
#crossBar .present, .present { background: linear-gradient(#d83a2a, #8a1a12); border-color: #ff9a8a; }
#crossCount { font: bold 18px var(--sans); color: var(--gold2); min-width: 60px; text-align: center; }

/* investigation */
#invMenu { position: absolute; right: 30px; bottom: 30px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
#invMenu button { width: 190px; height: 64px; font-size: 22px; }
#invMenu button.new::after { content: " •"; color: var(--gold); }
#examineHint { position: absolute; left: 50%; bottom: 24px; transform: translateX(-50%); display: flex; gap: 14px; align-items: center; padding: 10px 16px; background: rgba(0, 0, 0, 0.7); border-radius: 10px; font-size: 20px; }

.panel { position: absolute; z-index: 5; }
.panel.list { right: 30px; bottom: 30px; width: 460px; display: flex; flex-direction: column; gap: 8px; }
.panel.list button { text-align: left; font-size: 20px; }
.panel.list .back { text-align: center; }
.panel.choices { left: 50%; top: 42%; transform: translate(-50%, -50%); width: 640px; display: flex; flex-direction: column; gap: 12px; }
.panel.choices button { font-size: 22px; padding: 14px; }
.seen { color: #8aff9a; }

/* court record */
#record { position: absolute; inset: 40px 70px; z-index: 10; padding: 18px 22px; background: linear-gradient(#2a1e14f2, #160f0af2); border: 4px solid #c8b080; border-radius: 16px; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto 1fr auto; gap: 14px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.7); }
.recHead { grid-column: 1 / 3; display: flex; align-items: center; justify-content: space-between; }
.recHead h2 { margin: 0; font: bold 30px var(--serif); color: var(--gold2); max-width: 760px; }
.tabs { display: flex; gap: 6px; }
.tabs button.sel { border-color: var(--gold); background: linear-gradient(#6a4a24, #3a2812); }
#recGrid { display: grid; grid-template-columns: repeat(4, 96px); grid-auto-rows: 96px; gap: 10px; align-content: start; overflow-y: auto; padding: 4px; }
.recItem { width: 96px; height: 96px; display: grid; place-items: center; background: rgba(255, 255, 255, 0.06); border: 3px solid transparent; border-radius: 10px; cursor: pointer; }
.recItem:hover { border-color: #8a6a3a; }
.recItem.sel { border-color: var(--gold); background: rgba(232, 192, 64, 0.15); }
#recDetail { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 6px; }
.recPic { background: rgba(255, 255, 255, 0.05); border-radius: 12px; }
.recPic.zoomable { cursor: zoom-in; outline: 2px dashed rgba(232, 192, 64, 0.5); }
.recInfo h3 { margin: 0 0 6px; font: bold 26px var(--serif); color: var(--gold2); text-align: center; }
.recInfo p { margin: 0; font-size: 19px; }
.recBtns { grid-column: 1 / 3; display: flex; justify-content: center; gap: 14px; }
.recBtns button { min-width: 180px; font-size: 22px; }
#zoom { position: absolute; inset: 0; z-index: 20; display: grid; place-items: center; background: rgba(0, 0, 0, 0.85); cursor: zoom-out; }

#itemPop { position: absolute; left: 50%; top: 46%; transform: translate(-50%, -50%); z-index: 9; width: 760px; display: flex; gap: 20px; align-items: center; padding: 18px 24px; background: linear-gradient(#1e2a44f4, #0e1424f4); border: 4px solid #c8b080; border-radius: 14px; cursor: pointer; animation: pop 0.25s; }
#itemPop h3 { margin: 0 0 4px; font: bold 28px var(--serif); color: var(--gold2); }
#itemPop p { margin: 4px 0; }
@keyframes pop { from { transform: translate(-50%, -50%) scale(0.6); opacity: 0; } }

#backlog { position: absolute; inset: 40px 120px; z-index: 30; padding: 20px 28px; overflow-y: auto; background: rgba(8, 6, 4, 0.95); border: 3px solid #c8b080; border-radius: 12px; }
#backlog h2 { margin-top: 0; color: var(--gold2); font-family: var(--serif); }
#backlog p { margin: 6px 0; }
#backlog b { color: var(--gold2); }
#toast { position: absolute; left: 50%; top: 20px; transform: translateX(-50%); z-index: 60; padding: 10px 22px; background: rgba(0, 0, 0, 0.85); border: 2px solid var(--gold); border-radius: 8px; font-weight: 600; }
#loading { position: absolute; inset: 0; z-index: 70; display: grid; place-items: center; background: rgba(0, 0, 0, 0.6); font: bold 30px var(--serif); color: var(--gold2); letter-spacing: 6px; }

/* menus */
.screen { position: absolute; inset: 0; z-index: 40; overflow-y: auto; display: flex; flex-direction: column; align-items: center; padding: 40px 30px; }
.screen.dim { background: rgba(8, 5, 4, 0.82); }
.screen.overlay { background: rgba(8, 5, 4, 0.78); justify-content: center; }
.screen.title { background: linear-gradient(rgba(10, 6, 4, 0.05), rgba(10, 6, 4, 0.55)); }
.logo { text-align: center; margin: 30px 0 34px; }
.logo .l1 { font: italic 900 96px/1 "Arial Black", Impact, var(--sans); letter-spacing: 2px; color: #fff; text-shadow: 0 6px 0 #3a0a06, 0 0 30px rgba(0, 0, 0, 0.6); -webkit-text-stroke: 3px #1a0a06; }
.logo .l1 span { color: var(--red); }
.logo .l2 { font: bold 24px var(--serif); letter-spacing: 10px; color: var(--gold2); text-shadow: 0 2px 4px #000; margin-top: 10px; }
.title-small { font: bold 22px var(--serif); color: var(--gold); letter-spacing: 6px; margin-top: 120px; }
h1 { font: italic 900 64px "Arial Black", Impact, var(--sans); margin: 10px 0; text-shadow: 0 4px 0 #3a0a06; }
h2 { font: bold 40px var(--serif); color: var(--gold2); margin: 10px 0 20px; text-shadow: 0 3px 0 #000; }
.menu { display: flex; flex-direction: column; gap: 10px; width: 360px; }
.menu button { font-size: 22px; padding: 12px; }
.menu.row { flex-direction: row; justify-content: center; width: auto; margin-top: 16px; }
.box { background: var(--panel); border: 3px solid #8a6a3a; border-radius: 14px; padding: 20px 28px; width: 100%; max-width: 980px; }
.box.narrow { max-width: 700px; }
.foot { margin-top: auto; padding-top: 18px; font-size: 14px; color: var(--dim); text-align: center; text-shadow: 0 1px 2px #000; }
.cases { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; width: 100%; max-width: 1100px; }
.case { background: var(--panel); border: 3px solid #8a6a3a; border-radius: 14px; padding: 18px; display: flex; flex-direction: column; gap: 8px; }
.case.locked { opacity: 0.5; }
.case .num { font: bold 16px var(--serif); letter-spacing: 4px; color: var(--gold); }
.case h3 { margin: 0; font: bold 30px var(--serif); }
.case p { flex: 1; margin: 0; color: var(--dim); }
.case .ok { color: #8aff9a; font-weight: 700; }
.slots { display: flex; flex-direction: column; gap: 10px; width: 100%; max-width: 860px; }
.slot { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 18px; background: var(--panel); border: 2px solid #6a5034; border-radius: 10px; }
.slot div:last-child { display: flex; gap: 8px; }
.settings { display: grid; grid-template-columns: 220px 1fr; gap: 14px 18px; align-items: center; font-size: 20px; }
.help { display: grid; grid-template-columns: 200px 1fr; gap: 12px 18px; font-size: 18px; }
.help b { color: var(--gold2); }

#boot { position: absolute; inset: 0; z-index: 80; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #0a0605; }
#bootError { color: var(--dim); max-width: 700px; text-align: center; }
