Move inline position:fixed styles from setup.html and expert.css into the shared layout.css stylesheet. Convert #scene-container and #status-bar from position:fixed to grid-child layout within .app-shell--live, eliminating fragile top/height calc chains that broke on every new overlay element. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
77 lines
2.6 KiB
HTML
77 lines
2.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
<title>Spaxel — Setup</title>
|
|
<link rel="stylesheet" href="css/tokens.css">
|
|
<link rel="stylesheet" href="css/layout.css">
|
|
<link rel="stylesheet" href="css/panels.css">
|
|
<link rel="stylesheet" href="css/floorplan.css">
|
|
<style>
|
|
.app-shell--live .setup-header {
|
|
height: 44px;
|
|
gap: var(--space-4);
|
|
font-size: var(--text-sm);
|
|
}
|
|
.setup-header__link {
|
|
color: var(--text-secondary);
|
|
text-decoration: none;
|
|
font-size: var(--text-sm);
|
|
}
|
|
.setup-header__link:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
#status-text {
|
|
color: var(--text-secondary);
|
|
flex: 1;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="has-mobile-nav">
|
|
<div class="app-shell app-shell--live">
|
|
|
|
<nav class="app-header setup-header">
|
|
<a href="/" class="setup-header__link">← Home</a>
|
|
<span style="color:var(--text-primary);font-weight:600;">Spaxel Setup</span>
|
|
<span id="status-text"></span>
|
|
<a href="/live" class="setup-header__link">Live View</a>
|
|
</nav>
|
|
|
|
<main class="app-main">
|
|
<div id="scene-container"></div>
|
|
</main>
|
|
|
|
</div><!-- /.app-shell -->
|
|
|
|
<div class="setup-toolbar">
|
|
<button id="btn-floorplan">Floor Plan</button>
|
|
<button id="btn-nodes">Nodes</button>
|
|
<button id="btn-zones">Zones</button>
|
|
<button id="btn-coverage">Coverage</button>
|
|
<button id="btn-calibrate">Calibrate</button>
|
|
</div>
|
|
|
|
<script src="js/viz3d.js"></script>
|
|
<script src="js/websocket.js"></script>
|
|
<script src="js/app.js"></script>
|
|
<script src="js/placement.js"></script>
|
|
<script src="js/floorplan-setup.js"></script>
|
|
<script src="js/zone-editor.js"></script>
|
|
<script src="js/portal.js"></script>
|
|
<script>
|
|
// Auto-activate setup mode
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
// Open the placement/setup panels on load
|
|
if (typeof Placement !== 'undefined' && Placement.init) {
|
|
Placement.init();
|
|
}
|
|
if (typeof FloorPlanSetup !== 'undefined' && FloorPlanSetup.init) {
|
|
FloorPlanSetup.init();
|
|
}
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|