docs(mockups): add the UI/systems bible (11 screens + README)

High-fidelity HTML/CSS/JS design references for the tactical-CRPG direction —
title, character creation, character sheet, inventory, world map, quest log,
shop, pause/settings, dialogue, combat HUD, main exploration window. README is
the handoff spec (visual system, per-screen state models, Godot translation
notes). Not production code — the source of truth for the game's look + systems.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-10 16:06:23 -05:00
parent b639cab0c2
commit 49bc6b22c0
13 changed files with 4671 additions and 0 deletions

View File

@@ -0,0 +1,363 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="./support.js"></script>
</head>
<body>
<x-dc>
<helmet data-dc-atomics>
<meta name="design_doc_mode" content="canvas">
<link href="https://fonts.googleapis.com/css2?family=Architects+Daughter&display=swap" rel="stylesheet">
<style>
body{margin:0;background:#efece6;font-family:system-ui,sans-serif}
a{color:#8f3a34}a:hover{color:#6f2b26}
.dv-turn{padding:44px 48px 40px;border-bottom:1px solid rgba(0,0,0,.08);scroll-margin-top:16px}
.dv-thd{display:flex;align-items:baseline;gap:10px;margin:0 0 6px}
.dv-tid{font:600 10px ui-monospace,Menlo,monospace;padding:3px 7px;background:#1a1a1a;color:#fff;border-radius:4px;text-decoration:none}
.dv-tname{font:600 14px/1.3 system-ui,sans-serif;color:#1a1a1a}
.dv-sub{margin:0 0 28px;font:13px/1.55 system-ui,sans-serif;color:rgba(0,0,0,.52);max-width:820px}
.dv-opts{display:flex;flex-wrap:wrap;gap:44px;align-items:flex-start}
.dv-opt{flex:none;display:flex;flex-direction:column;gap:12px;scroll-margin-top:16px}
.dv-oid{font:600 10.5px ui-monospace,Menlo,monospace;padding:3px 7px;background:rgba(0,0,0,.08);color:#1a1a1a;border-radius:5px;text-decoration:none}
.dv-olabel{display:flex;align-items:baseline;gap:10px;font:400 12.5px/1.45 system-ui,sans-serif;color:rgba(0,0,0,.58);max-width:900px}
.dv-card{background:#0f0d0b;border:1px solid rgba(0,0,0,.35);border-radius:10px;box-shadow:0 6px 22px rgba(0,0,0,.18);overflow:hidden}
.dv-opt:target .dv-oid{background:#8f3a34;color:#fff}
.dv-next{margin:30px 0 0;font:12.5px/1.7 system-ui,sans-serif;color:rgba(0,0,0,.5);max-width:860px}
</style>
</helmet>
<section class="dv-turn" id="t2">
<div class="dv-thd"><a class="dv-tid" href="#t2">2</a><span class="dv-tname">1b built out — full 1920×1080</span></div>
<p class="dv-sub"><a class="dv-oid" href="#1b">1b</a> at real scale. Added a <strong>slide-in system dock</strong> on the right edge of the world (Inventory / Character / Quests / Map / Spellbook / Party) — click the tab to slide it in and out. The bottom row is now labeled as <strong>quick-select consumables</strong> pulled from your inventory, with an <strong>End Turn</strong> control for the turn-based loop, and the narration book gains a free-text action line for that tabletop feel.</p>
<div class="dv-opts">
<div class="dv-opt" id="2a">
<div class="dv-olabel"><a class="dv-oid" href="#2a">2a</a><span><strong>The full main window.</strong> Try the dock tab (right edge of the world). Everything is placeholder art — real isometric render, item icons and portraits drop into the marked slots.</span></div>
<div class="dv-card" style="width:1920px;height:1080px;position:relative;display:flex">
<!-- ================= LEFT: WORLD ================= -->
<div style="width:1180px;height:1080px;position:relative;overflow:hidden;background:repeating-linear-gradient(135deg,#26221c 0 16px,#221e18 16px 32px)">
<div style="position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 40%,rgba(0,0,0,0) 40%,rgba(0,0,0,.55) 100%)"></div>
<div style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:#6b6152;font:16px ui-monospace,monospace;letter-spacing:.18em">ISOMETRIC WORLD VIEW<span style="font:18px 'Architects Daughter',cursive;letter-spacing:.02em;color:#8a7f6c">party &amp; enemies on the tile grid · real render here</span></div>
<!-- turn order -->
<div style="position:absolute;top:28px;left:28px;background:rgba(18,15,12,.82);border:1px solid rgba(200,180,140,.2);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:11px">
<div style="font:12px ui-monospace,monospace;letter-spacing:.16em;color:#9a8f78">TURN ORDER</div>
<div style="display:flex;gap:12px">
<div style="position:relative"><div style="width:60px;height:60px;border-radius:50%;border:3px solid #a9843f;background:#3a332a;color:#c9bda3;font:600 15px system-ui;display:flex;align-items:center;justify-content:center;box-shadow:0 0 14px rgba(169,132,63,.5)">EL</div><div style="position:absolute;top:-4px;right:-4px;width:20px;height:20px;border-radius:50%;background:#a9843f;color:#1a1512;font:700 10px ui-monospace;display:flex;align-items:center;justify-content:center">17</div></div>
<div style="position:relative"><div style="width:60px;height:60px;border-radius:50%;border:2px solid #5a5348;background:#2a251f;color:#9a8f78;font:600 15px system-ui;display:flex;align-items:center;justify-content:center">DW</div><div style="position:absolute;top:-4px;right:-4px;width:20px;height:20px;border-radius:50%;background:#3a352e;color:#c9bda3;font:700 10px ui-monospace;display:flex;align-items:center;justify-content:center">12</div></div>
<div style="position:relative"><div style="width:60px;height:60px;border-radius:50%;border:2px solid #5a5348;background:#2a251f;color:#9a8f78;font:600 15px system-ui;display:flex;align-items:center;justify-content:center">HU</div><div style="position:absolute;top:-4px;right:-4px;width:20px;height:20px;border-radius:50%;background:#3a352e;color:#c9bda3;font:700 10px ui-monospace;display:flex;align-items:center;justify-content:center">09</div></div>
<div style="position:relative"><div style="width:60px;height:60px;border-radius:50%;border:2px dashed #6b3b38;background:#2a1c1a;color:#b8524a;font:600 20px system-ui;display:flex;align-items:center;justify-content:center"></div></div>
</div>
</div>
<!-- minimap -->
<div style="position:absolute;top:28px;right:28px;width:200px;height:200px;background:rgba(18,15,12,.82);border:1px solid rgba(200,180,140,.24);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#7a7060;font:12px ui-monospace,monospace;letter-spacing:.14em">MINIMAP</div>
<!-- slide-in system dock -->
<div style="position:absolute;right:44px;top:50%;transition:transform .32s cubic-bezier(.4,0,.2,1),opacity .32s;transform:{{ dockShift }};opacity:{{ dockOpacity }};display:flex;flex-direction:column;gap:10px;background:rgba(14,11,9,.9);border:1px solid #a9843f;border-radius:12px;padding:12px">
<div style="display:flex;align-items:center;gap:12px"><div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.75);display:flex;align-items:center;justify-content:center;font:700 15px ui-monospace;color:#c9bda3">I</div><span style="font:600 14px system-ui;color:#c9bda3;letter-spacing:.04em">Inventory</span></div>
<div style="display:flex;align-items:center;gap:12px"><div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.75);display:flex;align-items:center;justify-content:center;font:700 15px ui-monospace;color:#c9bda3">C</div><span style="font:600 14px system-ui;color:#c9bda3;letter-spacing:.04em">Character</span></div>
<div style="display:flex;align-items:center;gap:12px"><div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.75);display:flex;align-items:center;justify-content:center;font:700 15px ui-monospace;color:#c9bda3">J</div><span style="font:600 14px system-ui;color:#c9bda3;letter-spacing:.04em">Quest Log</span></div>
<div style="display:flex;align-items:center;gap:12px"><div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.75);display:flex;align-items:center;justify-content:center;font:700 15px ui-monospace;color:#c9bda3">K</div><span style="font:600 14px system-ui;color:#c9bda3;letter-spacing:.04em">Spellbook</span></div>
<div style="display:flex;align-items:center;gap:12px"><div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.75);display:flex;align-items:center;justify-content:center;font:700 15px ui-monospace;color:#c9bda3">M</div><span style="font:600 14px system-ui;color:#c9bda3;letter-spacing:.04em">World Map</span></div>
<div style="display:flex;align-items:center;gap:12px"><div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.75);display:flex;align-items:center;justify-content:center;font:700 15px ui-monospace;color:#c9bda3">P</div><span style="font:600 14px system-ui;color:#c9bda3;letter-spacing:.04em">Party</span></div>
</div>
<!-- dock handle -->
<div onClick="{{ toggleDock }}" style="position:absolute;right:8px;top:50%;transform:translateY(-50%);width:26px;height:104px;background:rgba(14,11,9,.92);border:1px solid #a9843f;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#a9843f;font:700 22px ui-monospace">{{ handleArrow }}</div>
<!-- bottom command bar -->
<div style="position:absolute;left:0;right:0;bottom:0;height:150px;background:linear-gradient(180deg,rgba(10,8,6,0),rgba(10,8,6,.94) 40px);display:flex;align-items:flex-end;gap:24px;padding:0 28px 22px;box-sizing:border-box">
<!-- stats -->
<div style="display:flex;flex-direction:column;gap:8px;width:230px">
<div><div style="font:11px ui-monospace,monospace;color:#caa39c;margin-bottom:3px">HP 42 / 60</div><div style="height:12px;border-radius:6px;background:#2a251f;border:1px solid #4a4238;overflow:hidden"><div style="width:70%;height:100%;background:linear-gradient(90deg,#b8524a,#8f3a34)"></div></div></div>
<div><div style="font:11px ui-monospace,monospace;color:#9caccb;margin-bottom:3px">MP 18 / 30</div><div style="height:12px;border-radius:6px;background:#2a251f;border:1px solid #4a4238;overflow:hidden"><div style="width:60%;height:100%;background:linear-gradient(90deg,#4f7ab8,#243f6f)"></div></div></div>
<div style="display:flex;align-items:center;gap:8px;margin-top:2px"><span style="font:11px ui-monospace,monospace;color:#c9a86a">GOLD</span><span style="font:600 17px ui-monospace,monospace;color:#d9b46a">◈ 1,240 gp</span></div>
</div>
<!-- quick-select consumables -->
<div style="flex:1;display:flex;flex-direction:column;align-items:center;gap:7px">
<div style="font:11px 'Architects Daughter',cursive;letter-spacing:.06em;color:#8a7f6c">QUICK-SELECT · consumables from inventory</div>
<div style="display:flex;gap:9px">
<div style="width:62px;height:62px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.72);position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font:9px system-ui;color:#9a8f78"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#a9843f">1</span>Salve</div>
<div style="width:62px;height:62px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.72);position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font:9px system-ui;color:#9a8f78"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#a9843f">2</span>Draught</div>
<div style="width:62px;height:62px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.72);position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font:9px system-ui;color:#9a8f78"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#a9843f">3</span>Bomb</div>
<div style="width:62px;height:62px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.72);position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font:9px system-ui;color:#9a8f78"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#a9843f">4</span>Antidote</div>
<div style="width:62px;height:62px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.72);position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font:9px system-ui;color:#9a8f78"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#a9843f">5</span>Ration</div>
<div style="width:62px;height:62px;border:1px solid #6b6152;border-radius:8px;background:rgba(40,34,28,.72);position:relative;display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font:9px system-ui;color:#9a8f78"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#a9843f">6</span>Torch</div>
<div style="width:62px;height:62px;border:1px dashed #4a4238;border-radius:8px;background:rgba(30,26,22,.5);position:relative"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#5a5348">7</span></div>
<div style="width:62px;height:62px;border:1px dashed #4a4238;border-radius:8px;background:rgba(30,26,22,.5);position:relative"><span style="position:absolute;top:3px;left:6px;font:10px ui-monospace,monospace;color:#5a5348">8</span></div>
</div>
</div>
<!-- end turn -->
<div style="display:flex;flex-direction:column;align-items:center;gap:6px">
<div style="padding:16px 26px;border:1.5px solid #a9843f;border-radius:10px;background:linear-gradient(180deg,#3a2f1f,#2a2015);color:#e8d9b6;font:600 16px system-ui;letter-spacing:.06em;box-shadow:0 0 14px rgba(169,132,63,.28);cursor:pointer">END TURN</div>
<span style="font:10px ui-monospace,monospace;color:#7a7060">↵ enter</span>
</div>
</div>
</div>
<!-- ================= RIGHT: NARRATION BOOK ================= -->
<div style="width:740px;height:1080px;background:linear-gradient(180deg,#ece2ca,#e4d8bd);border-left:4px solid #1a1512;box-sizing:border-box;padding:34px 40px;display:flex;flex-direction:column">
<div style="display:flex;align-items:baseline;justify-content:space-between;border-bottom:2px solid #bfa878;padding-bottom:14px;margin-bottom:22px">
<span style="font:600 24px 'Architects Daughter',cursive;letter-spacing:.06em;color:#5a4326">THE DUNGEON MASTER</span>
<span style="font:13px ui-monospace,monospace;color:#8a7748;letter-spacing:.1em">ROUND 4 · THE LOWER WARD</span>
</div>
<div style="font:20px/1.65 Georgia,serif;color:#4a3f2c;flex:1;overflow:hidden">
<p style="margin:0 0 18px">The alley stinks of piss and rot. Rain beads on the cobbles and runs black into the gutter. Your left arm has gone hot to the touch — the bite you took in the sewers three nights ago is turning, and the fever with it.</p>
<p style="margin:0 0 18px">The beastfolk fence weighs your coin purse in one clawed hand, unhurried. His good eye drifts from the silver to the soft flesh of your throat, and back again.</p>
<p style="margin:0 0 18px;color:#6a5a3a;font-style:italic">"Thin," he says. "For what you're asking."</p>
<p style="margin:0;padding:14px 16px;background:#d9c9a2;border-left:4px solid #8f3a34;color:#5a3230;font-style:italic;font-size:18px">✗ Sleight of Hand (14) failed. His grip closes hard around your wrist.</p>
</div>
<div style="border-top:2px solid #bfa878;padding-top:20px;margin-top:20px">
<div style="font:600 18px 'Architects Daughter',cursive;color:#5a4326;margin-bottom:14px">▸ Your turn. What do you do?</div>
<div style="display:flex;flex-direction:column;gap:10px">
<div style="border:1px solid #8f7a4a;border-radius:8px;padding:13px 16px;font:16px system-ui;color:#4a3f2c;background:#f1e8d2;cursor:pointer" style-hover="background:#e6d9b8;border-color:#5a4326"><strong style="color:#8f6a2a">1</strong> · Pay the fence double and keep your hand where he can see it</div>
<div style="border:1px solid #8f7a4a;border-radius:8px;padding:13px 16px;font:16px system-ui;color:#4a3f2c;background:#f1e8d2;cursor:pointer" style-hover="background:#e6d9b8;border-color:#5a4326"><strong style="color:#8f6a2a">2</strong> · Draw your blade — he's closer than his guards</div>
<div style="border:1px solid #8f7a4a;border-radius:8px;padding:13px 16px;font:16px system-ui;color:#4a3f2c;background:#f1e8d2;cursor:pointer" style-hover="background:#e6d9b8;border-color:#5a4326"><strong style="color:#8f6a2a">3</strong> · Lie — tell him the rest is coming with your dwarf</div>
</div>
<div style="margin-top:16px;display:flex;align-items:center;gap:12px;border:1px dashed #a99464;border-radius:8px;padding:12px 16px;background:rgba(255,255,255,.35)">
<span style="font:14px ui-monospace,monospace;color:#8a7748"></span>
<span style="font:16px Georgia,serif;font-style:italic;color:#8a7c5a">…or describe your own action</span>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="dv-next">Try next: "the dock should be icons, not text labels" · "add a combat-log tab to the narration book" · "now sketch the character-creation screen" · "sketch the inventory screen the I button opens" · "make the book parchment darker / grittier"</p>
</section>
<section class="dv-turn" id="t1">
<div class="dv-thd"><a class="dv-tid" href="#t1">1</a><span class="dv-tname">Main window — 4 layout directions</span></div>
<p class="dv-sub">1920×1080 in-game HUD. Common ingredients across all four: an isometric tile view, a turn-by-turn <strong>Dungeon Master narration feed</strong>, HP / MP / stamina, a keyed action hotbar, and inventory / currency quick-slots. What changes is <strong>where the narration lives</strong> and <strong>how ornate the frame is</strong> — the two axes that matter most for a DnD-table feel. Rough sketches; ignore exact colors.</p>
<div class="dv-opts">
<!-- ============ 1a : IMMERSIVE ORB BAR ============ -->
<div class="dv-opt" id="1a">
<div class="dv-olabel"><a class="dv-oid" href="#1a">1a</a><span><strong>Immersive orb bar (Diablo 2 / Grim Dawn).</strong> Full-bleed world, everything floats over it. Narration is a translucent log you can collapse. Most game-first, least reading-focused.</span></div>
<div class="dv-card" style="width:900px;height:506px;position:relative;background:repeating-linear-gradient(135deg,#26221c 0 12px,#221e18 12px 24px)">
<div style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;color:#6b6152;font:12px ui-monospace,monospace;letter-spacing:.14em">ISOMETRIC WORLD VIEW<span style="font:11px 'Architects Daughter',cursive;letter-spacing:.02em;color:#8a7f6c">party &amp; enemies on the tile grid</span></div>
<!-- turn order top-left -->
<div style="position:absolute;top:16px;left:16px;background:rgba(18,15,12,.8);border:1px solid rgba(200,180,140,.18);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px">
<div style="font:10px ui-monospace,monospace;letter-spacing:.14em;color:#9a8f78">TURN ORDER</div>
<div style="display:flex;gap:7px">
<div style="width:38px;height:38px;border-radius:50%;border:2px solid #a9843f;background:#3a332a;color:#c9bda3;font:600 10px system-ui;display:flex;align-items:center;justify-content:center">EL</div>
<div style="width:38px;height:38px;border-radius:50%;border:1px solid #5a5348;background:#2a251f;color:#9a8f78;font:600 10px system-ui;display:flex;align-items:center;justify-content:center">DW</div>
<div style="width:38px;height:38px;border-radius:50%;border:1px solid #5a5348;background:#2a251f;color:#9a8f78;font:600 10px system-ui;display:flex;align-items:center;justify-content:center">HU</div>
<div style="width:38px;height:38px;border-radius:50%;border:1px dashed #6b3b38;background:#2a1c1a;color:#b8524a;font:600 10px system-ui;display:flex;align-items:center;justify-content:center"></div>
</div>
</div>
<!-- minimap top-right -->
<div style="position:absolute;top:16px;right:16px;width:124px;height:124px;background:rgba(18,15,12,.8);border:1px solid rgba(200,180,140,.2);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#7a7060;font:10px ui-monospace,monospace;letter-spacing:.1em">MINIMAP</div>
<!-- narration log floating bottom-left -->
<div style="position:absolute;left:16px;bottom:150px;width:300px;background:rgba(14,11,9,.82);border:1px solid rgba(200,180,140,.16);border-radius:8px;padding:11px 13px">
<div style="font:10px ui-monospace,monospace;letter-spacing:.14em;color:#a9843f;margin-bottom:6px">⌂ DUNGEON MASTER ▾</div>
<div style="font:12.5px/1.5 Georgia,serif;color:#c9bda3">The alley stinks of piss and rot. Your left arm's gone hot — the bite is turning. The fence weighs your coin, then your throat.</div>
<div style="margin-top:8px;font:11px 'Architects Daughter',cursive;color:#7a7060">␣ continue · click to expand log</div>
</div>
<!-- bottom bar -->
<div style="position:absolute;left:0;right:0;bottom:0;height:132px;background:linear-gradient(180deg,rgba(10,8,6,0),rgba(10,8,6,.92) 42px);display:flex;align-items:flex-end;justify-content:space-between;padding:0 26px 16px;box-sizing:border-box">
<!-- HP orb -->
<div style="text-align:center"><div style="width:88px;height:88px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#b8524a,#6f2620);border:2px solid #1a1512"></div><div style="font:10px ui-monospace,monospace;color:#c9a; margin-top:4px;color:#caa39c">HP 42/60</div></div>
<!-- center: stamina + hotbar -->
<div style="display:flex;flex-direction:column;align-items:center;gap:7px;flex:1;padding:0 20px">
<div style="width:260px;height:7px;border-radius:4px;background:#2a251f;border:1px solid #4a4238;overflow:hidden"><div style="width:64%;height:100%;background:#8f9a4f"></div></div>
<div style="display:flex;gap:7px">
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">1</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">2</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">3</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">4</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">5</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">6</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">7</span></div>
<div style="width:44px;height:44px;border:1px solid #6b6152;border-radius:6px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">8</span></div>
</div>
</div>
<!-- right: quick slots + MP orb -->
<div style="display:flex;align-items:flex-end;gap:14px">
<div style="display:flex;flex-direction:column;gap:6px;align-items:center">
<div style="display:flex;gap:6px">
<div style="width:34px;height:34px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:34px;height:34px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:34px;height:34px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
</div>
<div style="font:10px ui-monospace,monospace;color:#a9843f">◈ 1,240 gp</div>
</div>
<div style="text-align:center"><div style="width:88px;height:88px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#4f7ab8,#243f6f);border:2px solid #1a1512"></div><div style="font:10px ui-monospace,monospace;margin-top:4px;color:#9caccb">MP 18/30</div></div>
</div>
</div>
</div>
</div>
<!-- ============ 1b : TABLETOP SPLIT ============ -->
<div class="dv-opt" id="1b">
<div class="dv-olabel"><a class="dv-oid" href="#1b">1b</a><span><strong>Tabletop split — the DM's screen.</strong> World on the left, a permanent narration column on the right like an open book. Best for reading-heavy, story-first turns. Leans hardest into the DnD-table feel.</span></div>
<div class="dv-card" style="width:900px;height:506px;position:relative;display:flex">
<!-- LEFT: world -->
<div style="width:534px;height:506px;position:relative;background:repeating-linear-gradient(135deg,#26221c 0 12px,#221e18 12px 24px)">
<div style="position:absolute;inset:0 0 96px 0;display:flex;align-items:center;justify-content:center;color:#6b6152;font:12px ui-monospace,monospace;letter-spacing:.14em">ISOMETRIC WORLD VIEW</div>
<!-- turn order -->
<div style="position:absolute;top:14px;left:14px;background:rgba(18,15,12,.8);border:1px solid rgba(200,180,140,.18);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px">
<div style="font:10px ui-monospace,monospace;letter-spacing:.14em;color:#9a8f78">TURN ORDER</div>
<div style="display:flex;gap:7px">
<div style="width:34px;height:34px;border-radius:50%;border:2px solid #a9843f;background:#3a332a;color:#c9bda3;font:600 9px system-ui;display:flex;align-items:center;justify-content:center">EL</div>
<div style="width:34px;height:34px;border-radius:50%;border:1px solid #5a5348;background:#2a251f;color:#9a8f78;font:600 9px system-ui;display:flex;align-items:center;justify-content:center">DW</div>
<div style="width:34px;height:34px;border-radius:50%;border:1px solid #5a5348;background:#2a251f;color:#9a8f78;font:600 9px system-ui;display:flex;align-items:center;justify-content:center">HU</div>
<div style="width:34px;height:34px;border-radius:50%;border:1px dashed #6b3b38;background:#2a1c1a;color:#b8524a;font:600 9px system-ui;display:flex;align-items:center;justify-content:center"></div>
</div>
</div>
<!-- minimap -->
<div style="position:absolute;top:14px;right:14px;width:104px;height:104px;background:rgba(18,15,12,.8);border:1px solid rgba(200,180,140,.2);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#7a7060;font:9px ui-monospace,monospace;letter-spacing:.1em">MINIMAP</div>
<!-- bottom bar within world -->
<div style="position:absolute;left:0;right:0;bottom:0;height:96px;background:rgba(10,8,6,.92);display:flex;align-items:center;gap:16px;padding:0 16px;box-sizing:border-box">
<div style="display:flex;flex-direction:column;gap:5px;width:150px">
<div><div style="font:8px ui-monospace,monospace;color:#caa39c;margin-bottom:2px">HP 42/60</div><div style="height:8px;border-radius:4px;background:#2a251f;overflow:hidden"><div style="width:70%;height:100%;background:#b8524a"></div></div></div>
<div><div style="font:8px ui-monospace,monospace;color:#9caccb;margin-bottom:2px">MP 18/30</div><div style="height:8px;border-radius:4px;background:#2a251f;overflow:hidden"><div style="width:60%;height:100%;background:#4f7ab8"></div></div></div>
<div style="display:flex;align-items:center;gap:6px;margin-top:2px"><span style="font:8px ui-monospace,monospace;color:#c9a86a">GOLD</span><span style="font:600 12px ui-monospace,monospace;color:#d9b46a">◈ 1,240 gp</span></div>
</div>
<div style="display:flex;gap:6px;flex-wrap:wrap;flex:1;justify-content:center">
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7)"></div>
</div>
</div>
</div>
<!-- RIGHT: narration book -->
<div style="width:366px;height:506px;background:#e7dcc4;border-left:3px solid #1a1512;box-sizing:border-box;padding:20px 22px;display:flex;flex-direction:column">
<div style="display:flex;align-items:baseline;justify-content:space-between;border-bottom:1.5px solid #bfa878;padding-bottom:8px;margin-bottom:12px">
<span style="font:600 13px 'Architects Daughter',cursive;letter-spacing:.06em;color:#5a4326">THE DUNGEON MASTER</span>
<span style="font:9px ui-monospace,monospace;color:#8a7748">ROUND 4</span>
</div>
<div style="font:14px/1.6 Georgia,serif;color:#4a3f2c;flex:1">
<p style="margin:0 0 12px">The alley stinks of piss and rot. Rain beads on the cobbles. Your left arm has gone hot to the touch — the bite from the sewers is turning.</p>
<p style="margin:0 0 12px">The beastfolk fence weighs your coin in one clawed hand, then looks at your throat.</p>
<p style="margin:0;padding:8px 10px;background:#d9c9a2;border-left:3px solid #8f3a34;color:#5a3230;font-style:italic">✗ Sleight of Hand failed. His grip closes on your wrist.</p>
</div>
<div style="border-top:1.5px solid #bfa878;padding-top:12px;margin-top:12px">
<div style="font:600 12px 'Architects Daughter',cursive;color:#5a4326;margin-bottom:8px">▸ Your turn. What do you do?</div>
<div style="display:flex;flex-direction:column;gap:6px">
<div style="border:1px solid #8f7a4a;border-radius:5px;padding:6px 9px;font:12px system-ui;color:#4a3f2c;background:#efe6cf">1 · Pay the fence double</div>
<div style="border:1px solid #8f7a4a;border-radius:5px;padding:6px 9px;font:12px system-ui;color:#4a3f2c;background:#efe6cf">2 · Draw your blade</div>
<div style="border:1px solid #8f7a4a;border-radius:5px;padding:6px 9px;font:12px system-ui;color:#4a3f2c;background:#efe6cf">3 · Lie about the coin</div>
</div>
</div>
</div>
</div>
</div>
<!-- ============ 1c : NARRATION-FORWARD BOTTOM BOX ============ -->
<div class="dv-opt" id="1c">
<div class="dv-olabel"><a class="dv-oid" href="#1c">1c</a><span><strong>Cinematic narration box.</strong> World up top, a wide DM text box across the bottom with inline choices — classic JRPG/CRPG framing. Balances world and story; hotbar tray straddles the seam.</span></div>
<div class="dv-card" style="width:900px;height:506px;position:relative;background:#0f0d0b">
<!-- world top -->
<div style="position:absolute;left:0;right:0;top:0;height:320px;background:repeating-linear-gradient(135deg,#26221c 0 12px,#221e18 12px 24px)">
<div style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#6b6152;font:12px ui-monospace,monospace;letter-spacing:.14em">ISOMETRIC WORLD VIEW</div>
<!-- portrait + bars top-left -->
<div style="position:absolute;top:14px;left:14px;display:flex;gap:10px;background:rgba(14,11,9,.8);border:1px solid rgba(200,180,140,.16);border-radius:8px;padding:8px 10px">
<div style="width:42px;height:42px;border-radius:50%;border:2px solid #a9843f;background:#3a332a;color:#c9bda3;font:600 10px system-ui;display:flex;align-items:center;justify-content:center">EL</div>
<div style="display:flex;flex-direction:column;gap:4px;width:120px;justify-content:center">
<div style="height:7px;border-radius:4px;background:#2a251f;overflow:hidden"><div style="width:70%;height:100%;background:#b8524a"></div></div>
<div style="height:7px;border-radius:4px;background:#2a251f;overflow:hidden"><div style="width:60%;height:100%;background:#4f7ab8"></div></div>
<div style="height:7px;border-radius:4px;background:#2a251f;overflow:hidden"><div style="width:64%;height:100%;background:#8f9a4f"></div></div>
</div>
</div>
<div style="position:absolute;top:14px;right:14px;width:104px;height:104px;background:rgba(18,15,12,.8);border:1px solid rgba(200,180,140,.2);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#7a7060;font:9px ui-monospace,monospace;letter-spacing:.1em">MINIMAP</div>
</div>
<!-- hotbar tray straddling seam -->
<div style="position:absolute;left:50%;transform:translateX(-50%);top:294px;display:flex;gap:7px;background:rgba(10,8,6,.95);border:1px solid rgba(200,180,140,.18);border-radius:8px;padding:7px 9px">
<div style="width:42px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">1</span></div>
<div style="width:42px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">2</span></div>
<div style="width:42px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">3</span></div>
<div style="width:42px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">4</span></div>
<div style="width:42px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">5</span></div>
<div style="width:42px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:9px ui-monospace,monospace;color:#8a7f6c">6</span></div>
<div style="width:1px;background:#4a4238;margin:2px 3px"></div>
<div style="width:34px;height:42px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);display:flex;align-items:flex-end;justify-content:center;padding-bottom:3px;font:8px ui-monospace,monospace;color:#a9843f"></div>
</div>
<!-- narration box bottom -->
<div style="position:absolute;left:0;right:0;bottom:0;height:186px;background:#e7dcc4;border-top:3px solid #1a1512;box-sizing:border-box;padding:16px 22px;display:flex;gap:22px">
<div style="flex:1">
<div style="display:flex;align-items:baseline;gap:10px;margin-bottom:8px"><span style="font:600 12px 'Architects Daughter',cursive;letter-spacing:.06em;color:#5a4326">THE DUNGEON MASTER</span><span style="font:9px ui-monospace,monospace;color:#8a7748">ROUND 4</span></div>
<p style="margin:0;font:14px/1.55 Georgia,serif;color:#4a3f2c">The alley stinks of piss and rot. Your left arm's gone hot — the bite is turning. The beastfolk fence weighs your coin, then your throat. <span style="color:#8f3a34;font-style:italic">Your Sleight of Hand failed; his grip closes on your wrist.</span></p>
</div>
<div style="width:210px;display:flex;flex-direction:column;gap:6px;justify-content:center">
<div style="font:600 11px 'Architects Daughter',cursive;color:#5a4326">▸ What do you do?</div>
<div style="border:1px solid #8f7a4a;border-radius:5px;padding:6px 9px;font:11.5px system-ui;color:#4a3f2c;background:#efe6cf">1 · Pay double</div>
<div style="border:1px solid #8f7a4a;border-radius:5px;padding:6px 9px;font:11.5px system-ui;color:#4a3f2c;background:#efe6cf">2 · Draw your blade</div>
<div style="border:1px solid #8f7a4a;border-radius:5px;padding:6px 9px;font:11.5px system-ui;color:#4a3f2c;background:#efe6cf">3 · Lie about the coin</div>
</div>
</div>
</div>
</div>
<!-- ============ 1d : ORNATE GOTHIC FRAME ============ -->
<div class="dv-opt" id="1d">
<div class="dv-olabel"><a class="dv-oid" href="#1d">1d</a><span><strong>Ornate gothic frame.</strong> A carved border wraps the whole screen; stats and map sit in corner cartouches, narration in a footer ribbon. Most decorative — the "dark fantasy" end of the range.</span></div>
<div class="dv-card" style="width:900px;height:506px;position:relative;background:repeating-linear-gradient(135deg,#26221c 0 12px,#221e18 12px 24px)">
<!-- world label -->
<div style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#6b6152;font:12px ui-monospace,monospace;letter-spacing:.14em">ISOMETRIC WORLD VIEW</div>
<!-- ornate frame -->
<div style="position:absolute;inset:0;border:10px solid #1a1512;box-sizing:border-box;pointer-events:none"></div>
<div style="position:absolute;inset:10px;border:1.5px solid #a9843f;box-sizing:border-box;pointer-events:none;opacity:.55"></div>
<!-- corner diamonds -->
<div style="position:absolute;top:4px;left:4px;width:16px;height:16px;background:#a9843f;transform:rotate(45deg)"></div>
<div style="position:absolute;top:4px;right:4px;width:16px;height:16px;background:#a9843f;transform:rotate(45deg)"></div>
<div style="position:absolute;bottom:4px;left:4px;width:16px;height:16px;background:#a9843f;transform:rotate(45deg)"></div>
<div style="position:absolute;bottom:4px;right:4px;width:16px;height:16px;background:#a9843f;transform:rotate(45deg)"></div>
<!-- top-left cartouche: portrait + orbs -->
<div style="position:absolute;top:22px;left:22px;display:flex;align-items:center;gap:10px;background:rgba(14,11,9,.85);border:1.5px solid #a9843f;border-radius:10px;padding:9px 12px">
<div style="width:46px;height:46px;border-radius:50%;border:2px solid #a9843f;background:#3a332a;color:#c9bda3;font:600 11px system-ui;display:flex;align-items:center;justify-content:center">EL</div>
<div style="display:flex;gap:8px">
<div style="text-align:center"><div style="width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#b8524a,#6f2620);border:1.5px solid #1a1512"></div><div style="font:7px ui-monospace,monospace;color:#caa39c;margin-top:2px">HP</div></div>
<div style="text-align:center"><div style="width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#4f7ab8,#243f6f);border:1.5px solid #1a1512"></div><div style="font:7px ui-monospace,monospace;color:#9caccb;margin-top:2px">MP</div></div>
<div style="text-align:center"><div style="width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#9aa85a,#4f5926);border:1.5px solid #1a1512"></div><div style="font:7px ui-monospace,monospace;color:#b6bd8e;margin-top:2px">ST</div></div>
</div>
</div>
<!-- top-right cartouche: minimap -->
<div style="position:absolute;top:22px;right:22px;width:112px;height:112px;background:rgba(14,11,9,.85);border:1.5px solid #a9843f;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#7a7060;font:9px ui-monospace,monospace;letter-spacing:.1em">MINIMAP</div>
<!-- footer narration ribbon -->
<div style="position:absolute;left:26px;right:26px;bottom:74px;background:rgba(231,220,196,.96);border:1.5px solid #1a1512;border-radius:6px;padding:10px 16px;display:flex;align-items:center;gap:14px">
<span style="font:600 11px 'Architects Daughter',cursive;letter-spacing:.06em;color:#5a4326;white-space:nowrap">THE DM ▸</span>
<span style="font:13px/1.45 Georgia,serif;color:#4a3f2c">The alley stinks of piss and rot; your arm's gone hot with fever. The fence weighs your coin, then your throat. <span style="color:#8f3a34;font-style:italic">Sleight of Hand failed.</span></span>
</div>
<!-- ornate hotbar tray bottom center -->
<div style="position:absolute;left:50%;transform:translateX(-50%);bottom:20px;display:flex;align-items:center;gap:8px">
<div style="width:12px;height:12px;background:#a9843f;transform:rotate(45deg)"></div>
<div style="display:flex;gap:6px;background:rgba(14,11,9,.9);border:1.5px solid #a9843f;border-radius:8px;padding:6px 8px">
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:8px ui-monospace,monospace;color:#8a7f6c">1</span></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:8px ui-monospace,monospace;color:#8a7f6c">2</span></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:8px ui-monospace,monospace;color:#8a7f6c">3</span></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:8px ui-monospace,monospace;color:#8a7f6c">4</span></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:8px ui-monospace,monospace;color:#8a7f6c">5</span></div>
<div style="width:40px;height:40px;border:1px solid #6b6152;border-radius:5px;background:rgba(40,34,28,.7);position:relative"><span style="position:absolute;top:2px;left:4px;font:8px ui-monospace,monospace;color:#8a7f6c">6</span></div>
</div>
<div style="width:12px;height:12px;background:#a9843f;transform:rotate(45deg)"></div>
</div>
</div>
</div>
</div>
<p class="dv-next">Try next: "expand <a class="dv-oid" href="#1b">1b</a> to full 1920×1080 detail" · "combine <a class="dv-oid" href="#1a">1a</a>'s orbs with <a class="dv-oid" href="#1b">1b</a>'s narration column" · "sketch the character-creation screen" · "sketch the inventory / character hub tabs" · "make <a class="dv-oid" href="#1d">1d</a> less ornate"</p>
</section>
</x-dc>
<script type="text/x-dc" data-dc-script>
class Component extends DCLogic {
state = { dockOpen: true };
renderVals() {
const open = this.state.dockOpen;
return {
dockShift: open ? 'translateY(-50%) translateX(0)' : 'translateY(-50%) translateX(230px)',
dockOpacity: open ? '1' : '0',
handleArrow: open ? '' : '',
toggleDock: () => this.setState(s => ({ dockOpen: !s.dockOpen })),
};
}
}
</script>
</body>
</html>