<!doctype html>
<html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Graphshell G4 session switch</title>
<style>
:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,sans-serif;background:#071019;color:#f4eedf}
*{box-sizing:border-box}body{margin:0}.switcher{position:sticky;top:0;z-index:2;display:flex;gap:8px;padding:12px;background:#0b1720;border-bottom:1px solid #314756;overflow:auto}
button{border:1px solid #566f7e;border-radius:999px;padding:8px 13px;background:#132a37;color:#f4eedf;font:inherit;font-weight:700;white-space:nowrap}
button[aria-selected="true"]{border-color:#d8a657;background:#2c2a22}iframe{display:block;width:100%;height:1050px;border:0;background:#071019}iframe[hidden]{display:none}
</style></head><body><nav class="switcher" aria-label="Projection sessions" role="tablist">
<button type="button" role="tab" aria-selected="true" data-session="session-0">Turnstone · Browsing graph</button><button type="button" role="tab" aria-selected="false" data-session="session-1">Isometry · Player overmap</button><button type="button" role="tab" aria-selected="false" data-session="session-2">Isometry · Moor crossing</button></nav><main><iframe id="session-0" title="Turnstone · Browsing graph" srcdoc="<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Graphshell projection receipt</title>
<style>
:root{color-scheme:dark;--ink:#f4eedf;--muted:#9eacb4;--line:#314756;--deep:#09141d;--panel:#10212c;--gold:#d8a657;--ok:#65bd85;--bad:#e46d5c}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 0%,#193448 0,transparent 38%),linear-gradient(150deg,#071019,#0b1720 50%,#0d1b24);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.shell{width:min(1100px,calc(100% - 40px));margin:0 auto;padding:48px 0 64px}header{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end;margin-bottom:26px}.eyebrow{margin:0 0 9px;color:var(--gold);font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}h1{margin:0;font-size:clamp(32px,5vw,54px);letter-spacing:-.04em;line-height:1.03}.lede{max-width:720px;margin:14px 0 0;color:#b9c5ca;font-size:17px}.session{align-self:start;border:1px solid var(--line);border-radius:999px;padding:8px 13px;color:#b9c5ca;background:#0a1821;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.projection{border:1px solid var(--line);border-radius:22px;background:rgba(13,29,39,.96);box-shadow:0 18px 55px rgba(0,0,0,.25);overflow:hidden}.projection-head{display:flex;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line)}.status{color:#b9d5c5;font-size:12px}.scene{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px}.scene.positioned{position:relative;display:block;height:760px;padding:0;background:radial-gradient(circle at 50% 48%,rgba(44,79,99,.24),transparent 54%),linear-gradient(rgba(69,100,116,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(69,100,116,.08) 1px,transparent 1px);background-size:auto,32px 32px,32px 32px}.routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.routes line{stroke:#527487;stroke-width:.45;vector-effect:non-scaling-stroke}.placed{position:absolute;width:42%;transform:translate(-50%,-50%);z-index:1}.placed .item{box-shadow:0 14px 35px rgba(0,0,0,.28)}.item{position:relative;min-width:0;min-height:176px;border:1px solid #38505f;border-radius:16px;background:var(--panel);overflow:hidden}.card{padding:21px}.card-top{display:flex;justify-content:space-between;gap:14px}.card-kicker{color:#79a9be;font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.card h3,.glyph h3,.placeholder h3{margin:4px 0 14px;font-size:21px}.badges,.actions{display:flex;flex-wrap:wrap;gap:7px}.badge{border:1px solid #415b6b;border-radius:999px;padding:4px 8px;color:#c4d2d8;background:#132a37;font-size:11px}dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}dl div{border-left:2px solid #34566a;padding-left:10px}dt{color:var(--muted);font-size:11px;text-transform:uppercase}dd{margin:3px 0 0;font-weight:650;overflow-wrap:anywhere}.glyph{display:grid;grid-template-columns:64px 1fr;gap:15px;align-items:center;padding:24px}.glyph-mark{display:grid;place-items:center;width:64px;height:64px;border:1px solid #7a653e;border-radius:20px;color:var(--gold);font-size:32px}.image{display:flex;flex-direction:column}.image img{display:block;width:100%;height:176px;object-fit:cover}.image-meta{display:flex;justify-content:space-between;gap:12px;padding:12px 14px}.placeholder{display:grid;place-items:center;text-align:center;padding:26px}.placeholder-mark{font-size:32px;color:#718795}button{border:1px solid #566f7e;border-radius:10px;padding:8px 11px;background:#1a3443;color:var(--ink);font:inherit;font-size:12px;font-weight:700}.receipts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.receipt{border:1px solid var(--line);border-radius:14px;padding:15px;background:#0b1922}.receipt strong{display:block}.receipt p{margin:5px 0 0;color:var(--muted);font-size:13px}.accepted{color:var(--ok)}.rejected{color:var(--bad)}@media(max-width:720px){.shell{width:min(100% - 24px,620px);padding-top:28px}header{grid-template-columns:1fr}.session{justify-self:start}.scene,.receipts{grid-template-columns:1fr}.scene.positioned{display:grid;height:auto;padding:18px;background:transparent}.scene.positioned .routes{display:none}.scene.positioned .placed{position:relative;left:auto!important;top:auto!important;width:auto;transform:none}.scene.positioned .placed .item{box-shadow:none}}
</style>
</head>
<body>
<main class="shell">
<header><div><p class="eyebrow">Graphshell · G4</p><h1>Browsing graph</h1><p class="lede">Turnstone disclosed this scene through the shared projection protocol.</p></div><div class="session">loopback:turnstone:g3</div></header><section class="projection"><div class="projection-head"><strong>Disclosed scene</strong><span class="status">Live · 3 items</span></div><div class="scene positioned"><svg class="routes" viewBox="0 0 100 100" preserveAspectRatio="none" aria-hidden="true"><line x1="76.000" y1="20.000" x2="24.000" y2="80.000"></line><line x1="76.000" y1="20.000" x2="68.533" y2="60.555"></line></svg><div class="placed" style="left:68.533%;top:60.555%"><article class="item card" aria-label="Harmony map"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>Harmony map</h3></div><div class="badges"><span class="badge">turnstone</span><span class="badge">granted projection</span></div></div><dl><div><dt>Address</dt><dd>mere://harmony-map</dd></div><div><dt>Source</dt><dd>Turnstone graph</dd></div></dl><div class="actions"><button type="button" data-intent="turnstone.fit-view" title="Frame the disclosed Turnstone graph without changing it.">Fit view</button><button type="button" data-intent="turnstone.open-address" title="Ask Turnstone to add or select an address in graph truth.">Open address</button></div></article></div><div class="placed" style="left:24.000%;top:80.000%"><article class="item card" aria-label="Radio map"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>Radio map</h3></div><div class="badges"><span class="badge">turnstone</span><span class="badge">granted projection</span></div></div><dl><div><dt>Address</dt><dd>mere://radio-map</dd></div><div><dt>Source</dt><dd>Turnstone graph</dd></div></dl><div class="actions"><button type="button" data-intent="turnstone.fit-view" title="Frame the disclosed Turnstone graph without changing it.">Fit view</button><button type="button" data-intent="turnstone.open-address" title="Ask Turnstone to add or select an address in graph truth.">Open address</button></div></article></div><div class="placed" style="left:76.000%;top:20.000%"><article class="item card" aria-label="Field notes"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>Field notes</h3></div><div class="badges"><span class="badge">turnstone</span><span class="badge">granted projection</span></div></div><dl><div><dt>Address</dt><dd>mere://field-notes</dd></div><div><dt>Source</dt><dd>Turnstone graph</dd></div></dl><div class="actions"><button type="button" data-intent="turnstone.fit-view" title="Frame the disclosed Turnstone graph without changing it.">Fit view</button><button type="button" data-intent="turnstone.open-address" title="Ask Turnstone to add or select an address in graph truth.">Open address</button></div></article></div></div></section><section class="receipts" aria-label="Intent receipts"><article class="receipt"><strong>Fit view</strong><span class="accepted">Accepted</span><p>The endpoint admitted and lowered the advertised intent.</p></article><article class="receipt"><strong>Open address</strong><span class="rejected">Rejected</span><p>open-address requires an address</p></article></section></main></body></html>
"></iframe><iframe id="session-1" title="Isometry · Player overmap" srcdoc="<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Graphshell projection receipt</title>
<style>
:root{color-scheme:dark;--ink:#f4eedf;--muted:#9eacb4;--line:#314756;--deep:#09141d;--panel:#10212c;--gold:#d8a657;--ok:#65bd85;--bad:#e46d5c}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 0%,#193448 0,transparent 38%),linear-gradient(150deg,#071019,#0b1720 50%,#0d1b24);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.shell{width:min(1100px,calc(100% - 40px));margin:0 auto;padding:48px 0 64px}header{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end;margin-bottom:26px}.eyebrow{margin:0 0 9px;color:var(--gold);font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}h1{margin:0;font-size:clamp(32px,5vw,54px);letter-spacing:-.04em;line-height:1.03}.lede{max-width:720px;margin:14px 0 0;color:#b9c5ca;font-size:17px}.session{align-self:start;border:1px solid var(--line);border-radius:999px;padding:8px 13px;color:#b9c5ca;background:#0a1821;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.projection{border:1px solid var(--line);border-radius:22px;background:rgba(13,29,39,.96);box-shadow:0 18px 55px rgba(0,0,0,.25);overflow:hidden}.projection-head{display:flex;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line)}.status{color:#b9d5c5;font-size:12px}.scene{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px}.scene.positioned{position:relative;display:block;height:760px;padding:0;background:radial-gradient(circle at 50% 48%,rgba(44,79,99,.24),transparent 54%),linear-gradient(rgba(69,100,116,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(69,100,116,.08) 1px,transparent 1px);background-size:auto,32px 32px,32px 32px}.routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.routes line{stroke:#527487;stroke-width:.45;vector-effect:non-scaling-stroke}.placed{position:absolute;width:42%;transform:translate(-50%,-50%);z-index:1}.placed .item{box-shadow:0 14px 35px rgba(0,0,0,.28)}.item{position:relative;min-width:0;min-height:176px;border:1px solid #38505f;border-radius:16px;background:var(--panel);overflow:hidden}.card{padding:21px}.card-top{display:flex;justify-content:space-between;gap:14px}.card-kicker{color:#79a9be;font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.card h3,.glyph h3,.placeholder h3{margin:4px 0 14px;font-size:21px}.badges,.actions{display:flex;flex-wrap:wrap;gap:7px}.badge{border:1px solid #415b6b;border-radius:999px;padding:4px 8px;color:#c4d2d8;background:#132a37;font-size:11px}dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}dl div{border-left:2px solid #34566a;padding-left:10px}dt{color:var(--muted);font-size:11px;text-transform:uppercase}dd{margin:3px 0 0;font-weight:650;overflow-wrap:anywhere}.glyph{display:grid;grid-template-columns:64px 1fr;gap:15px;align-items:center;padding:24px}.glyph-mark{display:grid;place-items:center;width:64px;height:64px;border:1px solid #7a653e;border-radius:20px;color:var(--gold);font-size:32px}.image{display:flex;flex-direction:column}.image img{display:block;width:100%;height:176px;object-fit:cover}.image-meta{display:flex;justify-content:space-between;gap:12px;padding:12px 14px}.placeholder{display:grid;place-items:center;text-align:center;padding:26px}.placeholder-mark{font-size:32px;color:#718795}button{border:1px solid #566f7e;border-radius:10px;padding:8px 11px;background:#1a3443;color:var(--ink);font:inherit;font-size:12px;font-weight:700}.receipts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.receipt{border:1px solid var(--line);border-radius:14px;padding:15px;background:#0b1922}.receipt strong{display:block}.receipt p{margin:5px 0 0;color:var(--muted);font-size:13px}.accepted{color:var(--ok)}.rejected{color:var(--bad)}@media(max-width:720px){.shell{width:min(100% - 24px,620px);padding-top:28px}header{grid-template-columns:1fr}.session{justify-self:start}.scene,.receipts{grid-template-columns:1fr}.scene.positioned{display:grid;height:auto;padding:18px;background:transparent}.scene.positioned .routes{display:none}.scene.positioned .placed{position:relative;left:auto!important;top:auto!important;width:auto;transform:none}.scene.positioned .placed .item{box-shadow:none}}
</style>
</head>
<body>
<main class="shell">
<header><div><p class="eyebrow">Graphshell · G4</p><h1>Player overmap</h1><p class="lede">Isometry disclosed this scene through the shared projection protocol.</p></div><div class="session">loopback:isometry:overmap</div></header><section class="projection"><div class="projection-head"><strong>Disclosed scene</strong><span class="status">Live · 3 items</span></div><div class="scene positioned"><svg class="routes" viewBox="0 0 100 100" preserveAspectRatio="none" aria-hidden="true"><line x1="50.000" y1="20.000" x2="76.000" y2="80.000"></line><line x1="24.000" y1="60.000" x2="50.000" y2="20.000"></line></svg><div class="placed" style="left:24.000%;top:60.000%"><article class="item card" aria-label="Harbour"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>Harbour</h3></div><div class="badges"><span class="badge">overmap</span><span class="badge">player-visible</span></div></div><dl><div><dt>Place</dt><dd>harbour</dd></div><div><dt>Party</dt><dd>Here</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.frame-projection" title="Frame the disclosed player overmap.">Frame map</button><button type="button" data-intent="isometry.travel" title="Ask the campaign authority to move the party.">Travel here</button></div></article></div><div class="placed" style="left:50.000%;top:20.000%"><article class="item card" aria-label="Glass Moor"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>Glass Moor</h3></div><div class="badges"><span class="badge">overmap</span><span class="badge">player-visible</span></div></div><dl><div><dt>Place</dt><dd>moor</dd></div><div><dt>Party</dt><dd>Discovered</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.frame-projection" title="Frame the disclosed player overmap.">Frame map</button><button type="button" data-intent="isometry.travel" title="Ask the campaign authority to move the party.">Travel here</button></div></article></div><div class="placed" style="left:76.000%;top:80.000%"><article class="item card" aria-label="Old Observatory"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>Old Observatory</h3></div><div class="badges"><span class="badge">overmap</span><span class="badge">player-visible</span></div></div><dl><div><dt>Place</dt><dd>observatory</dd></div><div><dt>Party</dt><dd>Discovered</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.frame-projection" title="Frame the disclosed player overmap.">Frame map</button><button type="button" data-intent="isometry.travel" title="Ask the campaign authority to move the party.">Travel here</button></div></article></div></div></section><section class="receipts" aria-label="Intent receipts"><article class="receipt"><strong>Frame map</strong><span class="accepted">Accepted</span><p>The endpoint admitted and lowered the advertised intent.</p></article><article class="receipt"><strong>Travel here</strong><span class="rejected">Rejected</span><p>the player projection grant is read-only for campaign travel</p></article></section></main></body></html>
" hidden></iframe><iframe id="session-2" title="Isometry · Moor crossing" srcdoc="<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Graphshell projection receipt</title>
<style>
:root{color-scheme:dark;--ink:#f4eedf;--muted:#9eacb4;--line:#314756;--deep:#09141d;--panel:#10212c;--gold:#d8a657;--ok:#65bd85;--bad:#e46d5c}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 0%,#193448 0,transparent 38%),linear-gradient(150deg,#071019,#0b1720 50%,#0d1b24);color:var(--ink);font:15px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.shell{width:min(1100px,calc(100% - 40px));margin:0 auto;padding:48px 0 64px}header{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:end;margin-bottom:26px}.eyebrow{margin:0 0 9px;color:var(--gold);font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}h1{margin:0;font-size:clamp(32px,5vw,54px);letter-spacing:-.04em;line-height:1.03}.lede{max-width:720px;margin:14px 0 0;color:#b9c5ca;font-size:17px}.session{align-self:start;border:1px solid var(--line);border-radius:999px;padding:8px 13px;color:#b9c5ca;background:#0a1821;font:12px ui-monospace,SFMono-Regular,Consolas,monospace}.projection{border:1px solid var(--line);border-radius:22px;background:rgba(13,29,39,.96);box-shadow:0 18px 55px rgba(0,0,0,.25);overflow:hidden}.projection-head{display:flex;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid var(--line)}.status{color:#b9d5c5;font-size:12px}.scene{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px}.scene.positioned{position:relative;display:block;height:760px;padding:0;background:radial-gradient(circle at 50% 48%,rgba(44,79,99,.24),transparent 54%),linear-gradient(rgba(69,100,116,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(69,100,116,.08) 1px,transparent 1px);background-size:auto,32px 32px,32px 32px}.routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.routes line{stroke:#527487;stroke-width:.45;vector-effect:non-scaling-stroke}.placed{position:absolute;width:42%;transform:translate(-50%,-50%);z-index:1}.placed .item{box-shadow:0 14px 35px rgba(0,0,0,.28)}.item{position:relative;min-width:0;min-height:176px;border:1px solid #38505f;border-radius:16px;background:var(--panel);overflow:hidden}.card{padding:21px}.card-top{display:flex;justify-content:space-between;gap:14px}.card-kicker{color:#79a9be;font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase}.card h3,.glyph h3,.placeholder h3{margin:4px 0 14px;font-size:21px}.badges,.actions{display:flex;flex-wrap:wrap;gap:7px}.badge{border:1px solid #415b6b;border-radius:999px;padding:4px 8px;color:#c4d2d8;background:#132a37;font-size:11px}dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}dl div{border-left:2px solid #34566a;padding-left:10px}dt{color:var(--muted);font-size:11px;text-transform:uppercase}dd{margin:3px 0 0;font-weight:650;overflow-wrap:anywhere}.glyph{display:grid;grid-template-columns:64px 1fr;gap:15px;align-items:center;padding:24px}.glyph-mark{display:grid;place-items:center;width:64px;height:64px;border:1px solid #7a653e;border-radius:20px;color:var(--gold);font-size:32px}.image{display:flex;flex-direction:column}.image img{display:block;width:100%;height:176px;object-fit:cover}.image-meta{display:flex;justify-content:space-between;gap:12px;padding:12px 14px}.placeholder{display:grid;place-items:center;text-align:center;padding:26px}.placeholder-mark{font-size:32px;color:#718795}button{border:1px solid #566f7e;border-radius:10px;padding:8px 11px;background:#1a3443;color:var(--ink);font:inherit;font-size:12px;font-weight:700}.receipts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.receipt{border:1px solid var(--line);border-radius:14px;padding:15px;background:#0b1922}.receipt strong{display:block}.receipt p{margin:5px 0 0;color:var(--muted);font-size:13px}.accepted{color:var(--ok)}.rejected{color:var(--bad)}@media(max-width:720px){.shell{width:min(100% - 24px,620px);padding-top:28px}header{grid-template-columns:1fr}.session{justify-self:start}.scene,.receipts{grid-template-columns:1fr}.scene.positioned{display:grid;height:auto;padding:18px;background:transparent}.scene.positioned .routes{display:none}.scene.positioned .placed{position:relative;left:auto!important;top:auto!important;width:auto;transform:none}.scene.positioned .placed .item{box-shadow:none}}
</style>
</head>
<body>
<main class="shell">
<header><div><p class="eyebrow">Graphshell · G4</p><h1>Moor crossing</h1><p class="lede">Isometry disclosed this scene through the shared projection protocol.</p></div><div class="session">loopback:isometry:tile-board</div></header><section class="projection"><div class="projection-head"><strong>Disclosed scene</strong><span class="status">Live · 4 items</span></div><div class="scene positioned"><svg class="routes" viewBox="0 0 100 100" preserveAspectRatio="none" aria-hidden="true"></svg><div class="placed" style="left:24.000%;top:20.000%"><article class="item card" aria-label="grass tile"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>grass tile</h3></div><div class="badges"><span class="badge">tile-board</span><span class="badge">player-visible</span></div></div><dl><div><dt>Cell</dt><dd>0, 0</dd></div><div><dt>Map</dt><dd>Moor crossing</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.inspect-tile" title="Focus the disclosed tile without changing the campaign.">Inspect tile</button></div></article></div><div class="placed" style="left:41.333%;top:20.000%"><article class="item card" aria-label="grass tile"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>grass tile</h3></div><div class="badges"><span class="badge">tile-board</span><span class="badge">player-visible</span></div></div><dl><div><dt>Cell</dt><dd>1, 0</dd></div><div><dt>Map</dt><dd>Moor crossing</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.inspect-tile" title="Focus the disclosed tile without changing the campaign.">Inspect tile</button></div></article></div><div class="placed" style="left:58.667%;top:50.000%"><article class="item card" aria-label="stone tile"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>stone tile</h3></div><div class="badges"><span class="badge">tile-board</span><span class="badge">player-visible</span></div></div><dl><div><dt>Cell</dt><dd>2, 1</dd></div><div><dt>Map</dt><dd>Moor crossing</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.inspect-tile" title="Focus the disclosed tile without changing the campaign.">Inspect tile</button></div></article></div><div class="placed" style="left:76.000%;top:80.000%"><article class="item card" aria-label="grass tile"><div class="card-top"><div><span class="card-kicker">Portable card</span><h3>grass tile</h3></div><div class="badges"><span class="badge">tile-board</span><span class="badge">player-visible</span></div></div><dl><div><dt>Cell</dt><dd>3, 2</dd></div><div><dt>Map</dt><dd>Moor crossing</dd></div></dl><div class="actions"><button type="button" data-intent="isometry.inspect-tile" title="Focus the disclosed tile without changing the campaign.">Inspect tile</button></div></article></div></div></section><section class="receipts" aria-label="Intent receipts"><article class="receipt"><strong>Inspect tile</strong><span class="accepted">Accepted</span><p>The endpoint admitted and lowered the advertised intent.</p></article></section></main></body></html>
" hidden></iframe></main><script>
const tabs=[...document.querySelectorAll('[role=tab]')];
for(const tab of tabs){tab.addEventListener('click',()=>{for(const item of tabs){const active=item===tab;item.setAttribute('aria-selected',active);document.getElementById(item.dataset.session).hidden=!active;}});}
</script></body></html>