Files
code_of_conquest_dnd/mockups/Main Window + Wireframes.dc.html
Phillip Tarrant 49bc6b22c0 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>
2026-07-10 16:06:23 -05:00

364 lines
42 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>