:root {
	/* Themeable colors (dark defaults) */
	--page-bg: #111;
	--page-fg: #eee;
	--accent: rgb(37, 99, 235); /* fallback primary blue */
	--accent-text: #ffffff; /* on-accent text */
	--ruler-bg: rgba(20, 20, 20, 0.5);
	--panel-bg: rgba(20, 20, 20, 0.85);
	--ruler-fg: #e4e4e4;
	--ruler-tick: #bdbdbd;
	--ruler-border: #333;
	--grid-blend-mode: overlay; /* blend effect for grid lines */
	/* Button accent colors */

	/* Grid and UI */
	--grid-color: rgba(255, 255, 255, 0.5);
	--ruler-height: 28px;
	--ruler-width: 40px;
	--toast-bg: rgba(0, 0, 0, 0.8);
	--toast-fg: white;
	/* Panels */
	--layers-panel-width: 0px;
}

@media (prefers-color-scheme: light) {
	:root {
		--page-bg: #f6f6f6;
		--page-fg: #111;
		--ruler-bg: rgba(245, 245, 245, 0.9);
		--panel-bg: rgba(245, 245, 245, 0.95);
		--ruler-fg: #222;
		--ruler-tick: #777;
		--ruler-border: #c8c8c8;
		--toast-bg: rgba(0, 0, 0, 0.85);
		--toast-fg: white;
		/* grid color can stay; color-burn adapts to bg */
	}
}

* {
	box-sizing: border-box;
}
html,
body {
	height: 100%;
}
html,
body {
	margin: 0;
	padding: 0;
	overflow: hidden;
	background: var(--page-bg);
	color: var(--page-fg);
	/* Prevent iOS Safari text auto-sizing that can inflate small labels */
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	/* Global: prevent accidental text selection; re-enable where needed */
	-webkit-user-select: none;
	user-select: none;
}

.app {
	height: 100%;
	width: 100%;
}

.viewport {
	position: fixed;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
	overflow: hidden; /* page must not scroll */
	background: var(--page-bg);
	cursor: grab;
	touch-action: none; /* allow custom pinch/pan gestures */
	user-select: none;
	-webkit-user-select: none;
	/* Prevent mix-blend-mode children (grid) from affecting overlays like the HUD */
	isolation: isolate;
}

/* The stage contains the image and the grid overlay and is transformed */
.stage {
	position: absolute;
	top: 0;
	left: 0;
	transform-origin: 0 0;
	will-change: transform;
}

.map-image {
	position: absolute;
	top: 0;
	left: 0;
	user-select: none;
	-webkit-user-drag: none;
	pointer-events: none; /* mouse events handled on viewport */
	z-index: 1;
}

.grid-canvas {
	position: absolute;
	inset: 0; /* cover the entire viewport */
	pointer-events: none;
	mix-blend-mode: var(--grid-blend-mode, color-burn); /* requested blend effect */
	/* Keep slight layer opacity for Safari compositing stability */
	opacity: 0.9;
	z-index: 2; /* above the image, below rulers */
}
.target-canvas {
	position: absolute;
	inset: 0;
	pointer-events: auto;
	touch-action: none;
	z-index: 3; /* above grid, below rulers */
}

/* Rulers for edge labels */
.ruler {
	position: absolute;
	z-index: 5;
	image-rendering: pixelated;
}
.ruler-top {
	left: var(--ruler-width);
	right: 0;
	top: 0;
	height: var(--ruler-height);
}
.ruler-left {
	top: var(--ruler-height);
	bottom: 0;
	left: 0;
	width: var(--ruler-width);
}

/* Corner block to cover intersection of rulers */
.viewport::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	width: var(--ruler-width);
	height: var(--ruler-height);
	background: var(--ruler-bg);
	border-right: 1px solid var(--ruler-border);
	border-bottom: 1px solid var(--ruler-border);
	z-index: 6;
}

/* Toast for copy feedback */
.toast {
	position: absolute;
	left: 50%;
	bottom: 24px;
	transform: translateX(-50%);
	background: var(--toast-bg);
	color: var(--toast-fg);
	padding: 8px 12px;
	border-radius: 6px;
	font-family:
		system-ui,
		-apple-system,
		Segoe UI,
		Roboto,
		sans-serif;
	font-size: 13px;
	opacity: 0;
	transition: opacity 150ms ease;
	pointer-events: none;
	z-index: 10;
}
.toast.show {
	opacity: 1;
}
.toast.interactive {
	pointer-events: auto;
	cursor: pointer;
}

/* Coordinate bar (desktop profile only; toggled via JS) */
.coord-bar {
	position: absolute;
	bottom: 0;
	left: var(--ruler-width);
	transform: none;
	padding: 4px 8px;
	background: var(--ruler-bg);
	color: var(--ruler-fg);
	border-top: 1px solid var(--ruler-border);
	font:
		12px system-ui,
		-apple-system,
		Segoe UI,
		Roboto,
		sans-serif;
	line-height: 1.3;
	z-index: 9;
	pointer-events: none;
	opacity: 0;
	transition: opacity 120ms ease;
}
.coord-bar.show {
	opacity: 1;
}
.coord-bar .badge-offline {
	display: inline-block;
	margin-left: 8px;
	padding: 1px 6px;
	border-radius: 10px;
	background: rgba(245, 158, 11, 0.18); /* amber */
	border: 1px solid rgba(245, 158, 11, 0.5);
	color: rgba(245, 158, 11, 0.95);
	font-size: 11px;
	line-height: 1.2;
}

/* Cursor states */
.grabbing {
	cursor: grabbing;
}

/* Settings UI */
.settings-btn {
	position: fixed; /* anchor to viewport origin, above stacking quirks */
	top: calc(0px + env(safe-area-inset-top, 0px));
	left: calc(0px + env(safe-area-inset-left, 0px));
	width: var(--ruler-width);
	height: var(--ruler-height);
	z-index: 2147483646; /* just under perf HUD */
	border: none;
	background: transparent;
	color: var(--ruler-fg);
	font-size: 16px;
	cursor: pointer;
	pointer-events: auto;
}
.layers-fab {
	position: fixed;
	left: auto;
	right: calc(12px + env(safe-area-inset-right, 0px));
	bottom: calc(12px + env(safe-area-inset-bottom, 0px));
	width: 40px;
	height: 40px;
	border-radius: 20px;
	z-index: 2147483645;
	border: 1px solid var(--accent);
	background: var(--panel-bg, var(--ruler-bg));
	color: var(--ruler-fg);
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	pointer-events: auto;
}
.layers-fab:focus-visible {
	outline: 2px solid var(--accent);
}

/* When Layers is open, shrink the viewport's right inset */
.layers-open .viewport {
	right: var(--layers-panel-width);
}
/* Hide the Layers FAB while the panel is open */
.layers-open .layers-fab {
	display: none;
}

/* Cluster popover removed */
.settings-btn:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: -2px;
}

.settings-panel {
	position: absolute;
	top: calc(var(--ruler-height) + 6px);
	left: 6px;
	width: min(380px, calc(100% - 12px));
	max-height: none;
	background: var(--panel-bg, var(--ruler-bg));
	color: var(--ruler-fg);
	border: 1px solid var(--ruler-border);
	border-radius: 8px;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
	z-index: 8;
	display: none;
	overflow: visible;
	font-family:
		system-ui,
		-apple-system,
		Segoe UI,
		Roboto,
		Helvetica,
		Arial,
		sans-serif;
	font-size: 0.8rem; /* ~80% of system default */
	user-select: text; /* re-enable selection inside panel */
	-webkit-user-select: text;
	touch-action: manipulation;
	contain: layout paint; /* isolate panel layout/paint for perf */
}

/* Ensure the main Settings panel reliably overlays content and is viewport-anchored */
#settingsPanel.settings-panel {
	position: fixed;
	top: calc(var(--ruler-height) + 6px);
	left: 6px;
	z-index: 9; /* above rulers (6) and generic panels (8), below toasts (10) */
}

/* Ensure Edit Marker panel overlays content similarly */
#editMarkerPanel.settings-panel {
	position: fixed;
	top: calc(var(--ruler-height) + 6px);
	left: 6px;
	z-index: 60; /* above #layersPanel (z-index: 40) */
}

#layersPanel {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: auto;
	width: 320px;
	max-width: 80vw;
	border-left: 1px solid var(--ruler-border);
	border-radius: 0;
	z-index: 40;
	flex-direction: column;
	height: 100vh;
	/* Prefer dynamic viewport height on modern browsers to avoid URL bar issues */
	height: 100dvh;
	/* Ensure controls are not obscured by iOS home indicator */
	padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 8px);
	contain: layout paint; /* isolate heavy side panel work */
}
/* Core dialogs use base .settings-panel positioning; no per-id override needed */
#layersPanel .settings-body {
	/* Allow content to shrink and scroll properly within the flex column */
	flex: 1 1 auto;
	min-height: 0;
	overflow-y: auto;
	padding-bottom: 12px;
}
#layersPanel .settings-footer {
	margin-top: auto;
	position: static;
	bottom: auto;
}
/* Divider inside Layers footer to separate groups */
#layersPanel .settings-footer .footer-divider {
	display: none;
}

/* On narrow screens, stack footer buttons in a single column to prevent overlap */
@media (max-width: 768px) {
	#layersPanel .settings-footer {
		grid-template-columns: 1fr;
	}
}
/* On very short viewports, allow the entire panel to scroll so footers remain reachable */
@media (max-height: 700px) {
	#layersPanel {
		overflow-y: auto;
	}
}
/* Show layers panel as flex only when open */
#layersPanel.settings-panel.open {
	display: flex;
}

/* Dialog footers inside Layers should not be sticky */

/* Remote Import floating dialog: ensure above Layers panel and fixed positioning */

#layersPanel .settings-body .settings-grid .setting-row {
	align-items: center;
}

.layer-row {
	display: grid;
	grid-template-columns: auto auto auto 1fr auto; /* drag, visible, active, name, actions */
	gap: 8px;
	align-items: center;
}
.layer-drag-handle {
	/* Prevent iOS long‑press text selection/callout during drag */
	-webkit-user-select: none;
	user-select: none;
	-webkit-touch-callout: none;
	-webkit-tap-highlight-color: transparent;
	/* Prevent default gestures interfering with drag */
	touch-action: none;
}
/* (removed dragging-specific selection block; panel selection is disabled globally) */
.layer-row input[type='checkbox'],
.layer-row input[type='radio'] {
	margin: 0;
}

/* Ensure layer rows use a compact 4-column grid overriding generic setting-row */
.settings-grid .layer-row {
	grid-template-columns: auto auto auto 1fr auto !important;
	align-items: center;
}
.layer-row .layer-name {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	cursor: pointer;
}
.layer-row .layer-actions button {
	margin-left: 6px;
}
.layer-row .overflow {
	position: relative;
}

/* Prevent long-press text selection/callout interfering with drag on iOS */
#layersList,
#layersList * {
	-webkit-user-select: none;
	user-select: none;
}
#layersList input,
#layersList textarea {
	-webkit-user-select: text;
	user-select: text;
}
.layer-row,
.layer-drag-handle {
	-webkit-touch-callout: none; /* disable copy/callout bubble on iOS */
}
.layer-drag-handle {
	touch-action: none; /* prevent default scrolling/selection while dragging */
}
.layer-row .overflow-menu {
	position: absolute;
	right: 0;
	top: 100%;
	background: var(--panel-bg, var(--ruler-bg));
	border: 1px solid var(--ruler-border);
	border-radius: 6px;
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
	z-index: 60;
	display: none;
}
.layer-row .overflow-menu.open {
	display: block;
}
.layer-row .overflow-menu button {
	display: block;
	width: 100%;
	background: transparent;
	border: none;
	color: var(--ruler-fg);
	text-align: left;
	padding: 8px 12px;
	cursor: pointer;
}
.layer-row .overflow-menu button:hover {
	background: rgba(255, 255, 255, 0.06);
}

/* Drag & reorder */
.layer-drag-handle {
	cursor: grab;
	min-width: 14px;
	width: 16px;
	height: 20px; /* room for 3 rows */
	display: inline-block;
	touch-action: none;
	user-select: none;
	-webkit-user-select: none;
	opacity: 0.7;
}
.layer-drag-handle::before {
	content: '';
	display: block;
	width: 12px;
	height: 18px; /* 3 rows */
	margin: 1px auto 0;
	background-image:
		radial-gradient(currentColor 1px, transparent 1px), radial-gradient(currentColor 1px, transparent 1px),
		radial-gradient(currentColor 1px, transparent 1px), radial-gradient(currentColor 1px, transparent 1px),
		radial-gradient(currentColor 1px, transparent 1px), radial-gradient(currentColor 1px, transparent 1px);
	background-position:
		0 0,
		6px 0,
		0 6px,
		6px 6px,
		0 12px,
		6px 12px;
	background-size: 6px 6px;
	background-repeat: no-repeat;
	opacity: 0.7;
}
.layer-drag-handle:hover::before {
	opacity: 0.95;
}
.grabbing .layer-drag-handle,
.layer-drag-handle:active {
	cursor: grabbing;
}
.layer-placeholder {
	margin: 0;
}
.layer-drag-ghost {
	box-shadow: 0 8px 20px rgba(0, 0, 0, 0.35);
	background: var(--panel-bg, var(--ruler-bg));
	opacity: 0.95;
	border-radius: 8px;
	font: inherit;
	border: 1px solid var(--ruler-border);
}
.layer-drag-ghost .layer-drag-handle {
	margin-left: 6px;
}
.layer-row.dragging-src {
	opacity: 0.5;
}
.settings-panel.open {
	display: block;
}

.settings-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 8px 10px;
	border-bottom: none;
}
.settings-header h2 {
	margin: 0;
	font-weight: 600;
	line-height: 1.2;
	display: flex;
	align-items: baseline;
	gap: 6px;
}
/* Version value styling */
.version-value {
	font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
	cursor: pointer;
}
.version-value.version-ok {
	color: #2e7d32; /* green 800 */
}
.version-value.version-stale {
	color: #c62828; /* red 800 */
}
.close-btn {
	border: none;
	/* Use warning (amber) background for all close buttons */
	background: rgba(245, 158, 11, 0.15);
	color: var(--ruler-fg);
	cursor: pointer;
	font-size: 14px;
	line-height: 1;
	padding: 4px 6px;
	min-width: 28px;
	min-height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 6px;
}
.close-btn:hover {
	background: rgba(245, 158, 11, 0.25);
}
.close-btn:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}
.settings-body {
	padding: 8px 10px 12px;
}
.settings-subtitle {
	opacity: 0.75;
	font-size: 0.85em;
	margin: 2px 0 8px;
}
.settings-subtitle a {
	color: inherit;
	text-decoration: underline;
}
.settings-grid {
	display: block;
	border-top: 1px solid var(--ruler-border);
}
.setting-row {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: center;
	gap: 8px 12px;
	padding: 6px 0; /* normalize vertical rhythm */
	min-height: 36px; /* consistent baseline height */
	border-top: 1px solid var(--ruler-border);
}
.setting-row:first-child {
	border-top: none;
}
.setting-row .name {
	color: var(--ruler-fg);
	opacity: 0.9;
}
.setting-row .control {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	min-height: 36px; /* align mixed controls consistently */
}
.setting-row .control label {
	display: inline-flex;
	align-items: center;
	gap: 8px;
}
.setting-row .control.control-vertical {
	flex-direction: column;
	align-items: flex-start;
}
/* Allow a control in a row to span both columns for wide inputs */
.setting-row .control.full-span {
	grid-column: 1 / -1;
}
/* Make full-span control buttons stretch full width */
.setting-row .control.full-span .btn {
	width: 100%;
}
/* Remove divider between paired rows (input + button) when marked */
.setting-row.no-divider {
	border-top: none;
	padding-top: 4px;
}
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 8px 12px;
	min-height: 36px;
	border-radius: 6px;
	border: 1px solid transparent;
	background: transparent;
	color: inherit;
	font:
		14px system-ui,
		-apple-system,
		Segoe UI,
		Roboto,
		sans-serif;
	cursor: pointer;
	transition:
		background-color 120ms ease,
		border-color 120ms ease,
		color 120ms ease;
}
.btn:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}
.btn[disabled] {
	opacity: 0.5;
	cursor: not-allowed;
}

/* Small, quieter buttons for inline actions */
.btn-sm {
	padding: 2px 10px;
	min-height: 20px;
	font-size: 10px;
}

.btn-ghost-danger {
	background: transparent;
	border-color: rgba(220, 38, 38, 0.45);
}
.btn-ghost-danger:hover {
	background: rgba(220, 38, 38, 0.1);
	border-color: rgba(220, 38, 38, 0.6);
}

.btn-primary {
	/* pale primary */
	background: rgba(37, 99, 235, 0.15);
	border-color: rgba(37, 99, 235, 0.55);
}
.btn-primary:hover {
	background: rgba(37, 99, 235, 0.25);
	border-color: rgba(37, 99, 235, 0.65);
}

.btn-secondary {
	/* pale neutral */
	background: rgba(107, 114, 128, 0.1);
	border-color: rgba(107, 114, 128, 0.55);
}
.btn-secondary:hover {
	background: rgba(107, 114, 128, 0.18);
	border-color: rgba(107, 114, 128, 0.65);
}

.btn-danger {
	/* pale danger */
	background: rgba(220, 38, 38, 0.15);
	border-color: rgba(220, 38, 38, 0.6);
}
.btn-danger:hover {
	background: rgba(220, 38, 38, 0.25);
	border-color: rgba(220, 38, 38, 0.7);
}

.btn-warning {
	/* pale warning */
	background: rgba(245, 158, 11, 0.15); /* amber-500 */
	border-color: rgba(245, 158, 11, 0.6);
}
.btn-warning:hover {
	background: rgba(245, 158, 11, 0.25);
	border-color: rgba(245, 158, 11, 0.7);
}

/* Success button */
.btn-success {
	background: rgba(16, 185, 129, 0.18); /* emerald-500 */
	border-color: rgba(16, 185, 129, 0.6);
}
.btn-success:hover {
	background: rgba(16, 185, 129, 0.28);
	border-color: rgba(16, 185, 129, 0.7);
}

/* Button layout inside footer rows */
.settings-footer .btn {
	margin-left: 0;
	width: 100%;
	text-align: center;
}

.settings-panel .settings-footer {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	padding: 10px;
	border-top: 1px solid var(--ruler-border);
	position: sticky;
	bottom: 0;
	background: var(--ruler-bg);
}
.settings-panel .settings-footer.no-divider {
	border-top: none;
}
.settings-panel .settings-footer.group {
	/* Consistent internal padding for grouped actions */
	padding-top: 8px;
	padding-bottom: 8px;
}
/* If two rows belong to the same logical group, suppress the divider between them */
.settings-panel .settings-footer.group-io + .settings-footer.group-io {
	border-top: none;
}
.settings-panel .settings-footer.group-debug + .settings-footer.group-debug {
	border-top: none;
}
.settings-panel .settings-footer.group-target + .settings-footer.group-target {
	border-top: none;
}
/* Add consistent space after a button group */
.settings-panel .settings-footer.group-end {
	/* Balanced gap between groups */
	margin-bottom: 8px;
}
/* Tighter spacing between rows within the same group */
.settings-panel .settings-footer.group:not(.group-end) {
	padding-bottom: 4px;
}
.settings-panel .settings-footer.group-io + .settings-footer.group-io,
.settings-panel .settings-footer.group-debug + .settings-footer.group-debug,
.settings-panel .settings-footer.group-target + .settings-footer.group-target {
	padding-top: 4px;
}
.settings-panel .settings-footer.three {
	grid-template-columns: 1fr 1fr 1fr;
}
.settings-panel .settings-footer .btn {
	margin-left: 0;
	width: 100%;
	min-height: 36px;
	text-align: center;
}
.settings-panel .settings-footer .full-row {
	grid-column: 1 / -1;
}

/* Reusable button group container (not footer-specific) */
.btn-group {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	padding: 10px;
	border-top: 1px solid var(--ruler-border);
	background: var(--ruler-bg);
}
.btn-group.three {
	grid-template-columns: 1fr 1fr 1fr;
}
.btn-group .btn {
	width: 100%;
	min-height: 36px;
}
.btn-group .full-row {
	grid-column: 1 / -1;
}

/* Textareas styled to match theme (Notes, Import JSON, etc.) */
.settings-panel textarea {
	width: 100%;
	padding: 8px 10px;
	border-radius: 6px;
	border: 1px solid var(--ruler-border);
	background: var(--panel-bg);
	color: var(--ruler-fg);
	caret-color: var(--ruler-fg);
	outline: none;
	resize: vertical;
	min-height: 72px;
}
.settings-panel textarea::placeholder {
	color: rgba(127, 127, 127, 0.85);
}
.settings-panel textarea:focus-visible {
	border-color: var(--accent);
	box-shadow: 0 0 0 2px transparent;
}

/* Clickable origin link styling */

/* Text-like inputs styled to match theme */
.settings-panel input[type='text'],
.settings-panel input[type='url'],
.settings-panel input[type='number'],
.settings-panel input[type='search'],
.settings-panel input[type='email'] {
	width: 100%;
	padding: 8px 10px;
	border-radius: 6px;
	border: 1px solid var(--ruler-border);
	background: var(--panel-bg);
	color: var(--ruler-fg);
	caret-color: var(--ruler-fg);
	outline: none;
	min-height: 36px;
	/* Re-enable text selection inside form inputs */
	-webkit-user-select: text;
	user-select: text;
}

/* Normalize sizes for toggles */
.settings-panel input[type='checkbox'],
.settings-panel input[type='radio'] {
	width: 16px;
	height: 16px;
	margin: 0;
}

/* Use the computed accent color for native controls where supported */
.settings-panel input[type='checkbox'],
.settings-panel input[type='radio'],
.settings-panel input[type='range'],
.settings-panel progress,
.settings-panel meter {
	accent-color: var(--accent);
}

/* Normalize slider track height to avoid row growth */
.settings-panel input[type='range'] {
	height: 24px;
}

/* Keycaps styling for shortcuts display */
.settings-panel kbd {
	display: inline-block;
	padding: 2px 6px;
	border-radius: 4px;
	border: 1px solid var(--ruler-border);
	background: rgba(255, 255, 255, 0.06);
	color: var(--ruler-fg);
	font:
		12px ui-monospace,
		SFMono-Regular,
		Menlo,
		Monaco,
		Consolas,
		'Liberation Mono',
		'Courier New',
		monospace;
	line-height: 1;
}
.settings-panel input[type='text']::placeholder,
.settings-panel input[type='url']::placeholder,
.settings-panel input[type='number']::placeholder,
.settings-panel input[type='search']::placeholder,
.settings-panel input[type='email']::placeholder {
	color: rgba(127, 127, 127, 0.85);
}
.settings-panel input[type='text']:focus-visible,
.settings-panel input[type='url']:focus-visible,
.settings-panel input[type='number']:focus-visible,
.settings-panel input[type='search']:focus-visible,
.settings-panel input[type='email']:focus-visible {
	border-color: var(--accent);
	box-shadow: 0 0 0 2px transparent;
}

/* Bottom sheet for small screens */
@media (max-width: 640px), (max-height: 540px) {
	.settings-panel {
		left: 0;
		right: 0;
		width: auto;
		top: auto;
		bottom: 0;
		max-height: 70vh;
		border-radius: 10px 10px 0 0;
		margin: 0 0 env(safe-area-inset-bottom) 0;
		overflow: auto;
	}

	/* Keep Settings using bottom-sheet behavior on small screens */
	#settingsPanel.settings-panel {
		left: 0;
		right: 0;
		width: auto;
		top: auto;
		bottom: 0;
		max-height: 70vh;
		border-radius: 10px 10px 0 0;
		margin: 0 0 env(safe-area-inset-bottom) 0;
		overflow: auto;
	}
	/* Keep Edit Marker panel bottom-sheet as well */
	#editMarkerPanel.settings-panel {
		left: 0;
		right: 0;
		width: auto;
		top: auto;
		bottom: 0;
		max-height: 70vh;
		border-radius: 10px 10px 0 0;
		margin: 0 0 env(safe-area-inset-bottom) 0;
		overflow: auto;
	}
}

/* Theme overrides via data-theme */
:root[data-theme='light'] {
	--page-bg: #f6f6f6;
	--page-fg: #111;
	--accent: rgb(37, 99, 235);
	--accent-text: #ffffff;
	--ruler-bg: rgba(245, 245, 245, 0.9);
	--panel-bg: rgba(245, 245, 245, 0.95);
	--ruler-fg: #222;
	--ruler-tick: #777;
	--ruler-border: #c8c8c8;
	--toast-bg: rgba(0, 0, 0, 0.85);
	--toast-fg: white;
}
:root[data-theme='dark'] {
	--page-bg: #111;
	--page-fg: #eee;
	--ruler-bg: rgba(20, 20, 20, 0.5);
	--panel-bg: rgba(20, 20, 20, 0.85);
	--ruler-fg: #e4e4e4;
	--ruler-tick: #bdbdbd;
	--ruler-border: #333;
}
