:root { color-scheme: light dark; --bg: #f1ead6; --panel: rgba(255, 248, 232, 0.92); --card: rgba(255, 255, 255, 0.58); --panel-border: rgba(94, 73, 37, 0.25); --ink: #2d2212; --muted: #6e5a37; --accent: #0d6c7d; --accent-strong: #114f59; --overlay-editor: #18849a; --overlay-egg: #c67129; --overlay-roof: #627894; --overlay-helper-fill: rgba(77, 169, 196, 0.16); --overlay-helper-stroke: rgba(108, 201, 228, 0.72); --viewport: #0e1218; --tile-border: rgba(255, 255, 255, 0.04); --shadow: 0 18px 45px rgba(59, 40, 8, 0.16); --font-ui: "Segoe UI Variable Text", "Aptos", "Trebuchet MS", sans-serif; } @media (prefers-color-scheme: dark) { :root { --bg: #12161d; --panel: rgba(22, 28, 38, 0.92); --card: rgba(28, 35, 46, 0.96); --panel-border: rgba(166, 187, 211, 0.16); --ink: #edf2fa; --muted: #aab8cc; --accent: #46a7bc; --accent-strong: #2a7b8d; --viewport: #06080d; --tile-border: rgba(255, 255, 255, 0.03); --shadow: 0 18px 45px rgba(0, 0, 0, 0.35); } } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: var(--font-ui); color: var(--ink); background: radial-gradient(circle at top left, rgba(255, 255, 255, 0.14), transparent 32%), linear-gradient(135deg, var(--bg) 0%, color-mix(in srgb, var(--bg) 75%, #6e8aa3 25%) 100%); } .shell { display: grid; grid-template-columns: 340px minmax(0, 1fr); min-height: 100vh; } .panel { padding: 24px; background: var(--panel); backdrop-filter: blur(16px); border-right: 1px solid var(--panel-border); box-shadow: var(--shadow); } .panel h1 { margin: 0; font-size: 1.6rem; line-height: 1.1; } .lede, .muted { color: var(--muted); } .stack { display: grid; gap: 10px; margin-top: 20px; } label { font-weight: 700; font-size: 0.95rem; } select, .action-link { width: 100%; border-radius: 12px; border: 1px solid rgba(65, 48, 21, 0.18); padding: 12px 14px; font: inherit; } .action-link { cursor: pointer; color: white; background: linear-gradient(180deg, var(--accent) 0%, var(--accent-strong) 100%); text-decoration: none; text-align: center; } select:disabled, .action-link.is-disabled { cursor: not-allowed; opacity: 0.55; } .button-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; } .toggle-grid, .status, .meta-panel { padding: 12px 14px; border-radius: 14px; background: var(--card); border: 1px solid rgba(65, 48, 21, 0.08); overflow-wrap: anywhere; } .toggle-grid { display: grid; gap: 10px; } .toggle { display: flex; align-items: center; gap: 10px; font-weight: 600; font-size: 0.92rem; } .toggle input { width: 18px; height: 18px; margin: 0; } .action-link { display: inline-flex; align-items: center; justify-content: center; font-weight: 700; } .status { min-height: 92px; } .status-row { display: flex; align-items: center; gap: 10px; } .status-text { min-height: 24px; } .spinner { width: 18px; height: 18px; border-radius: 999px; border: 2px solid rgba(255, 255, 255, 0.2); border-top-color: var(--accent); animation: spin 0.8s linear infinite; flex: 0 0 auto; } .progress-wrap { margin-top: 12px; } .progress-track { width: 100%; height: 8px; border-radius: 999px; overflow: hidden; background: rgba(0, 0, 0, 0.08); } .progress-fill { height: 100%; width: 0%; border-radius: inherit; background: linear-gradient(90deg, var(--accent) 0%, var(--accent-strong) 100%); transition: width 180ms ease; } .meta-panel { min-height: 240px; } .meta-empty { margin: 0; color: var(--muted); } .meta-section + .meta-section { margin-top: 14px; padding-top: 14px; border-top: 1px solid color-mix(in srgb, var(--panel-border) 70%, transparent 30%); } .meta-title { margin: 0 0 8px; font-size: 0.84rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); } .meta-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; font-size: 0.92rem; } .meta-grid dt { color: var(--muted); } .meta-grid dd { margin: 0; text-align: right; font-weight: 600; } .workspace { min-width: 0; padding: 18px; } .viewport { position: relative; width: 100%; height: calc(100vh - 36px); overflow: hidden; border-radius: 24px; background: radial-gradient(circle at top left, rgba(255,255,255,0.04), transparent 26%), var(--viewport); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.05), var(--shadow); touch-action: none; cursor: grab; user-select: none; } .scene { position: absolute; left: 0; top: 0; transform-origin: top left; will-change: transform; } .layer { position: absolute; inset: 0 auto auto 0; } .tile { position: absolute; image-rendering: pixelated; image-rendering: crisp-edges; pointer-events: none; } .overlay-root { position: absolute; inset: 0; pointer-events: none; } .overlay-item { position: absolute; pointer-events: auto; border: 0; padding: 0; color: inherit; font: inherit; background: none; cursor: pointer; transition: transform 140ms ease, filter 140ms ease; } .overlay-item:hover, .overlay-item:focus-visible { transform: scale(1.05); filter: drop-shadow(0 10px 18px rgba(0, 0, 0, 0.34)); } .overlay-item--helper { outline: 1px solid var(--overlay-helper-stroke); outline-offset: 1px; background: var(--overlay-helper-fill); } .overlay-sprite { display: block; width: 100%; height: 100%; image-rendering: pixelated; image-rendering: crisp-edges; user-select: none; pointer-events: none; } .overlay-tooltip { position: absolute; z-index: 6; max-width: 290px; padding: 12px 14px; border-radius: 14px; background: rgba(8, 12, 18, 0.9); color: rgba(255, 255, 255, 0.9); border: 1px solid rgba(124, 182, 214, 0.28); box-shadow: 0 18px 34px rgba(0, 0, 0, 0.34); pointer-events: none; backdrop-filter: blur(14px); } .tooltip-eyebrow { font-size: 0.72rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: rgba(138, 202, 221, 0.88); } .tooltip-title { margin-top: 4px; font-size: 0.98rem; font-weight: 700; } .tooltip-grid { display: grid; grid-template-columns: auto 1fr; gap: 6px 10px; margin: 10px 0 0; font-size: 0.84rem; } .tooltip-grid dt { color: rgba(176, 197, 212, 0.76); } .tooltip-grid dd { margin: 0; text-align: right; } .tooltip-notes { margin: 10px 0 0; padding-left: 18px; color: rgba(214, 227, 237, 0.82); font-size: 0.8rem; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .viewport.is-dragging { cursor: grabbing; } .viewport-hint { position: absolute; top: 16px; left: 16px; z-index: 2; padding: 8px 12px; border-radius: 999px; background: rgba(6, 8, 12, 0.66); color: rgba(255, 255, 255, 0.82); font-size: 0.86rem; backdrop-filter: blur(10px); } .empty-state { position: absolute; inset: 0; display: grid; place-items: center; padding: 24px; color: rgba(255,255,255,0.72); text-align: center; } .empty-state.is-hidden { display: none; } @media (max-width: 900px) { .shell { grid-template-columns: 1fr; } .panel { border-right: 0; border-bottom: 1px solid var(--panel-border); } .viewport { height: 70vh; } }