:root { --ink: #243044; --muted: #6f7b91; --paper: #fff7e8; --panel: rgba(255, 248, 232, .94); --panel-solid: #fff8e9; --panel-2: #ffeec9; --line: #2d3c50; --line-soft: rgba(45, 60, 80, .18); --pink: #ff85b3; --pink-dark: #f05f98; --mint: #73d6a4; --sky: #77c9ff; --sun: #ffd66e; --danger: #ff6b6b; --shadow: 6px 6px 0 rgba(34, 45, 63, .14); --hard-shadow: 4px 4px 0 rgba(34, 45, 63, .22); } * { box-sizing: border-box; } html, body { height: 100%; } body { margin: 0; color: var(--ink); background: #92d8ff; font-family: "3x5 MT Pixel Font", "Press Start 2P", "PixelMplus10", "DotGothic16", "Courier New", "Monaco", "Lucida Console", ui-monospace, monospace; overflow: hidden; } button, input, select, textarea { font: inherit; } button { -webkit-tap-highlight-color: transparent; } .app { position: relative; width: 100vw; height: 100vh; overflow: hidden; } #worldCanvas { display: block; width: 100vw; height: 100vh; image-rendering: pixelated; cursor: grab; background: #8cd4ff; } #worldCanvas.dragging { cursor: grabbing; } #worldCanvas.placeCursor { cursor: copy; } #worldCanvas.eraseCursor { cursor: not-allowed; } .hud { position: absolute; z-index: 5; background: var(--panel); border: 2px solid var(--line); border-radius: 0; box-shadow: var(--shadow); backdrop-filter: blur(8px); } .topHud { top: 14px; left: 14px; right: 14px; min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 14px; pointer-events: none; } .logo { font-weight: 900; letter-spacing: .04em; font-size: 20px; } .logo span { display: inline-block; background: var(--pink); border: 2px solid var(--line); padding: 1px 6px; margin-left: 6px; font-size: 12px; transform: rotate(-2deg); } .subline { margin-top: 3px; color: var(--muted); font-size: 12px; } .authorCard { width: 190px; border: 2px solid var(--line); background: #fffdf5; padding: 6px 8px; pointer-events: auto; } .authorCard span { display: block; font-size: 10px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); } .authorCard input { margin-top: 3px; padding: 5px 6px; border-width: 2px; background: #fffaf0; } .clockCard { width: 230px; border: 2px solid var(--line); background: #fffdf5; padding: 8px 10px; } .phaseLabel { font-weight: 900; letter-spacing: .06em; text-transform: uppercase; font-size: 13px; } .phaseBar { margin-top: 6px; height: 10px; background: #dfe8f0; border: 2px solid var(--line); overflow: hidden; } .phaseBar span { display: block; width: 0%; height: 100%; background: linear-gradient(90deg, #ffd66e, #77c9ff, #6862e8); } .clockHint { margin-top: 4px; color: var(--muted); font-size: 11px; } .edgeAdd { position: absolute; z-index: 8; left: 0; top: 50%; width: 56px; height: 86px; transform: translateY(-50%); border: 3px solid var(--line); border-left: 0; border-radius: 0 18px 18px 0; background: var(--pink); color: white; font-size: 42px; font-weight: 900; line-height: 1; box-shadow: var(--hard-shadow); cursor: pointer; } .edgeAdd:hover { background: var(--pink-dark); } .edgeAdd:active { transform: translateY(calc(-50% + 2px)); box-shadow: 2px 2px 0 rgba(34,45,63,.22); } .toolHud { right: 14px; top: 116px; display: grid; grid-template-columns: 1fr; gap: 7px; padding: 9px; } .iconButton, button, .ghostButton, .tab, .tool, .segmented button { border: 2px solid var(--line); border-radius: 0; background: #fffdf5; color: var(--ink); padding: 8px 11px; font-weight: 850; cursor: pointer; box-shadow: 3px 3px 0 rgba(36, 48, 68, .16); transition: transform .05s, box-shadow .05s, background .12s; } button:hover, .ghostButton:hover, .tab:hover, .tool:hover, .segmented button:hover { background: #fff1c8; } button:active, .ghostButton:active, .tab:active, .tool:active, .segmented button:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 rgba(36, 48, 68, .16); } button.active, .tab.active, .tool.active, .segmented button.active { background: var(--sun); box-shadow: inset 0 0 0 2px rgba(255,255,255,.4), 3px 3px 0 rgba(36,48,68,.18); } button.primary { background: var(--mint); color: #163a2a; } button.secondary { background: var(--panel-2); } button.danger, .tool.danger, .iconButton.danger { background: #ffe4e4; color: #833232; } button.danger.active, .iconButton.danger.active { background: var(--danger); color: #fffdf5; } .divider { height: 2px; background: var(--line); opacity: .22; margin: 2px 0; } .infoHud { right: 14px; bottom: 14px; width: min(360px, calc(100vw - 28px)); padding: 12px; } .selectedAsset { font-weight: 900; padding-bottom: 8px; border-bottom: 2px dashed rgba(45,60,80,.25); } .tileInfo { white-space: pre-wrap; color: var(--muted); font-size: 12px; line-height: 1.45; margin-top: 8px; } .studioDrawer { position: absolute; z-index: 7; top: 0; left: 0; width: min(500px, calc(100vw - 20px)); height: 100vh; background: var(--panel-solid); border-right: 3px solid var(--line); box-shadow: 10px 0 0 rgba(36, 48, 68, .12); transform: translateX(-104%); transition: transform .18s ease-out; display: grid; grid-template-rows: auto auto 1fr; } .studioDrawer.open { transform: translateX(0); } .drawerHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 10px 12px 8px; border-bottom: 3px solid var(--line); background: #ffe6f0; } .drawerHead h1 { margin: 0; font-size: 24px; font-weight: 950; } .drawerHead p { margin: 3px 0 0; color: var(--muted); font-size: 12px; } .ghostButton { width: 36px; height: 36px; padding: 0; font-size: 24px; line-height: 1; } .tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: 8px; background: #fff2d0; border-bottom: 3px solid var(--line); } .tab { padding: 8px 5px; font-size: 13px; } .drawerBody { overflow-y: auto; padding: 8px; background: linear-gradient(45deg, rgba(255,255,255,.4) 25%, transparent 25%) 0 0/18px 18px, var(--panel-solid); } .tabPanel { display: none; } .tabPanel.active { display: block; } .compactNameField { margin-bottom: 5px; } .roleHintInline { margin: 0 0 10px; } .card { background: #fffdf5; border: 2px solid var(--line); box-shadow: 4px 4px 0 rgba(36,48,68,.12); padding: 9px; margin-bottom: 8px; } .stack > * + * { margin-top: 10px; } .cardTitle { font-weight: 950; text-transform: uppercase; letter-spacing: .06em; font-size: 12px; color: #3c4b60; } .field { display: block; color: var(--muted); font-size: 12px; font-weight: 800; } input, select, textarea { display: block; width: 100%; margin-top: 5px; border: 2px solid var(--line); border-radius: 0; background: #fffaf0; color: var(--ink); padding: 9px 10px; outline: none; } input:focus, select:focus, textarea:focus { background: #fff; box-shadow: 0 0 0 3px rgba(119,201,255,.35); } textarea { resize: vertical; } input[type="color"] { height: 39px; padding: 3px; } input[type="checkbox"] { width: auto; margin: 0 8px 0 0; } .twoCols { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .segmented { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; } .segmented button { font-size: 12px; padding: 8px 5px; } .hint { color: var(--muted); font-size: 12px; line-height: 1.5; margin: 0; } .editorCard { padding-bottom: 10px; } .editorTop { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 9px; } .sideSwitcher { display: flex; gap: 5px; align-items: center; } .sideSwitcher button { padding: 6px 7px; font-size: 11px; } .toolRow { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; align-items: center; margin-bottom: 8px; } .editorToolRow { grid-template-columns: repeat(5, minmax(0, 1fr)); } .editorHistoryRow { grid-template-columns: repeat(5, minmax(0, 1fr)); } .editorMoveRow { grid-template-columns: repeat(5, minmax(0, 1fr)); } .editorFileRow { grid-template-columns: repeat(2, minmax(0, 1fr)); } .toolRow input { margin: 0; } .tool { padding: 7px 5px; font-size: 11px; } button:disabled, .tool:disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; } #paintCanvas { display: block; width: min(100%, 330px); margin: 0 auto; aspect-ratio: 1 / 1; image-rendering: pixelated; border: 3px solid var(--line); background: linear-gradient(45deg, #f4ebdc 25%, transparent 25%) 0 0/16px 16px, linear-gradient(45deg, transparent 75%, #f4ebdc 75%) 0 0/16px 16px, #fffaf0; cursor: crosshair; user-select: none; touch-action: none; } .compactSettings .twoCols { align-items: center; } .toggleLine { color: var(--ink); font-size: 13px; font-weight: 850; display: flex; align-items: center; } .behaviorNote { border: 2px dashed rgba(45,60,80,.22); padding: 8px; color: var(--muted); font-size: 12px; line-height: 1.45; } .actionRow { display: flex; gap: 9px; margin: 12px 0; } .actionRow.wrap { flex-wrap: wrap; } .actionRow button { flex: 1; } .lineageNote { min-height: 18px; color: var(--muted); font-size: 12px; } .assetList { display: grid; gap: 10px; } .assetCard { display: grid; grid-template-columns: 68px 1fr; gap: 10px; border: 2px solid var(--line); background: #fff9e8; padding: 8px; box-shadow: 3px 3px 0 rgba(36,48,68,.12); } .assetCard.selected { background: #e6ffef; } .assetPreview { width: 64px; height: 64px; image-rendering: pixelated; background: #fff3d9; border: 2px solid var(--line); } .assetMeta strong { display: block; font-size: 14px; } .assetMeta span { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.3; } .assetActions { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; } .assetActions button { padding: 5px 7px; font-size: 11px; } .modeGrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .modeGrid button { padding: 8px 5px; font-size: 12px; } .legend { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; font-size: 12px; color: var(--muted); } .legend span { display: flex; align-items: center; gap: 6px; } .legend i { display: inline-block; width: 18px; height: 18px; border: 2px solid var(--line); } .legend .water { background: #67b5d9; } .legend .sand { background: #ead493; } .legend .grass { background: #8bce76; } .legend .highland { background: #a7be80; } #dataBox { min-height: 160px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 11px; } .toast { position: absolute; z-index: 20; left: 50%; bottom: 22px; transform: translateX(-50%); background: #fffdf5; border: 3px solid var(--line); box-shadow: var(--hard-shadow); padding: 10px 14px; font-weight: 900; } [hidden] { display: none !important; } @media (max-width: 760px) { .topHud { align-items: flex-start; flex-direction: column; right: 70px; } .clockCard, .authorCard { width: 100%; } .toolHud { top: auto; bottom: 122px; right: 10px; } .infoHud { left: 10px; right: 10px; width: auto; } .studioDrawer { width: calc(100vw - 18px); } .toolRow { grid-template-columns: 44px repeat(3, minmax(0, 1fr)); } } /* refinements */ .toolHud { top: 142px; right: 18px; } .edgeAdd { top: calc(50% + 24px); width: 62px; height: 92px; background: linear-gradient(180deg, #ff97c2, #ff75aa); } .studioDrawer { width: min(520px, calc(100vw - 28px)); } .drawerHead { background: #ffe1ef; } .drawerBody { background: linear-gradient(90deg, rgba(255,255,255,.42) 0 1px, transparent 1px) 0 0/20px 20px, linear-gradient(0deg, rgba(255,255,255,.42) 0 1px, transparent 1px) 0 0/20px 20px, #fff8e9; } .card { border-width: 3px; box-shadow: 5px 5px 0 rgba(36,48,68,.13); } .heroEditor { background: #fffdf7; border-color: #26364c; } #paintCanvas { margin-bottom: 10px; max-height: min(42vh, 330px); } .toolRow { grid-template-columns: repeat(5, minmax(0, 1fr)); margin-top: 0; } .paletteGrid { display: grid; grid-template-columns: repeat(13, 1fr); gap: 3px; margin: 6px 0 6px; padding: 6px; border: 2px solid rgba(36,48,68,.28); background: #fff6df; } .paletteSwatch { position: relative; aspect-ratio: 1 / 1; min-height: 18px; border: 2px solid rgba(36,48,68,.38); box-shadow: 2px 2px 0 rgba(36,48,68,.13); cursor: pointer; } .paletteSwatch.active { outline: 3px solid #ff7aad; outline-offset: 1px; border-color: #26364c; } .paletteSwatch::after { content: attr(data-code); position: absolute; right: 2px; bottom: 0; color: rgba(20,26,38,.52); font-size: 7px; font-weight: 900; text-shadow: 0 1px 0 rgba(255,255,255,.7); } .quickSetupBar { margin-bottom: 6px; } .settingsCard .segmented { margin-top: 2px; } .markerRow { display: grid; gap: 6px; } .markerChip { border: 2px dashed rgba(36,48,68,.25); background: #fff6df; padding: 8px; font-size: 12px; color: var(--muted); font-weight: 800; } .summonCard { background: linear-gradient(180deg, #fffdf5, #fff2d7); } .finishActions { display: grid; grid-template-columns: 1.35fr .8fr .6fr; } .bigPrimary { min-height: 48px; font-size: 14px; background: linear-gradient(180deg, #89e4ae, #65d596) !important; } .sideSwitcher button:first-child.active::after, .sideSwitcher button:nth-child(2).active::after { content: ""; display: inline-block; width: 6px; } .spawnPop { pointer-events: none; } .selectedAsset { font-weight: 900; padding-bottom: 8px; border-bottom: 2px dashed rgba(45,60,80,.25); } @media (max-width: 720px) { .toolHud { top: auto; bottom: 126px; right: 10px; } .finishActions { grid-template-columns: 1fr; } .paletteGrid { grid-template-columns: repeat(8, 1fr); } } .paletteGrid button { width: 100%; aspect-ratio: 1 / 1; padding: 0; min-height: 22px; } .sideSwitcher button { white-space: nowrap; } .heroEditor .hint { line-height: 1.35; } .compactEditorTop { margin-bottom: 4px; min-height: 0; } body, button, input, select, textarea { font-smooth: never; -webkit-font-smoothing: none; } /* latest layout fixes */ .studioDrawer { width: min(600px, calc(100vw - 24px)); } .paintLayout { display: grid; grid-template-columns: minmax(220px, 360px) 1fr; align-items: start; gap: 10px; margin: 4px 0 8px; } #paintCanvas { width: 100%; max-width: 360px; max-height: none; margin: 0; } .paletteGrid { margin: 0; grid-template-columns: repeat(6, 1fr); align-content: start; gap: 4px; max-height: 360px; overflow: hidden; } .paletteSwatch, .paletteGrid button { min-height: 20px; } .sideSwitcher { justify-content: flex-start; } .authorCard span { white-space: nowrap; } @media (max-width: 720px) { .paintLayout { grid-template-columns: 1fr; } .paletteGrid { grid-template-columns: repeat(10, 1fr); max-height: none; } } /* Selection bubble + outline controls */ .palettePanel { display: grid; gap: 8px; } .selectionBubble { position: absolute; left: 0; top: 0; z-index: 9; min-width: 126px; max-width: 210px; padding: 8px; background: #fffdf5; border: 3px solid var(--line); box-shadow: 4px 4px 0 rgba(36,48,68,.20); pointer-events: auto; text-align: center; } .selectionBubble::after { content: ""; position: absolute; left: 50%; bottom: -10px; width: 14px; height: 14px; background: #fffdf5; border-right: 3px solid var(--line); border-bottom: 3px solid var(--line); transform: translateX(-50%) rotate(45deg); } .bubbleName { font-size: 12px; font-weight: 950; line-height: 1.2; word-break: break-word; } .bubbleAuthor { margin-top: 2px; font-size: 10px; color: var(--muted); font-weight: 800; } .bubbleVotes { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr auto 1fr; gap: 6px; align-items: center; margin-top: 6px; } .bubbleVotes button { padding: 3px 7px; min-width: 30px; font-size: 11px; } #voteScore { font-weight: 950; font-size: 12px; min-width: 20px; } .bubbleRemixFrom, .bubbleRemixCount { margin-top: 3px; color: var(--muted); font-size: 10px; font-weight: 800; } .bubbleActions { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; margin-top: 6px; } .bubbleActions button { padding: 4px 6px; font-size: 10px; } .bubbleVotes button.mutedVote, .assetActions button.mutedAction { opacity: .45; } .bubbleVotes button.activeVote { background: var(--sun); } /* Pixel-ish UI refinements */ body, button, input, select, textarea { font-family: "Courier New", "Lucida Console", Monaco, monospace; letter-spacing: .02em; } button, .tab, .tool, .iconButton, .cardTitle, .logo { text-transform: uppercase; font-weight: 900; } .libraryHead { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .hiddenAssetPanel { border: 2px dashed rgba(36,48,68,.35); background: #fff3d6; padding: 8px; } .compactAssetList .assetCard { opacity: .82; } .librarySectionTitle { margin: 12px 0 6px; padding: 5px 7px; background: #ffe6f0; border: 2px solid var(--line); box-shadow: 3px 3px 0 rgba(36,48,68,.12); font-size: 12px; font-weight: 900; } .advancedRow { display: grid; grid-template-columns: max-content 1fr; gap: 8px; align-items: center; margin-top: 8px; } .advancedOnly.active { background: #bde9ff; } .depthLegend { font-size: 10px; color: var(--muted); } /* Simplified current UI */ body, button, input, select, textarea { font-family: "MS Gothic", "Osaka-Mono", "DotumChe", "Courier New", ui-monospace, monospace; letter-spacing: .02em; -webkit-font-smoothing: none; text-rendering: geometricPrecision; } .toolRow { grid-template-columns: repeat(6, minmax(0, 1fr)); } .editorHistoryRow { grid-template-columns: repeat(2, minmax(0, 1fr)); } .advancedRow { grid-template-columns: max-content max-content max-content 1fr; gap: 6px; } .librarySectionTitle { display: block; width: 100%; text-align: left; margin: 10px 0 6px; cursor: pointer; } .librarySectionTitle::after { content: " click: genre"; float: right; color: var(--muted); font-size: 10px; } .assetSectionGrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; max-height: 360px; overflow-y: auto; padding-right: 4px; } .libraryEmptyNote { color: var(--muted); font-size: 12px; border: 2px dashed rgba(36,48,68,.2); padding: 8px; background: #fff9e8; } .assetSectionGrid .assetCard { grid-template-columns: 54px 1fr; gap: 8px; } .assetSectionGrid .assetPreview { width: 52px; height: 52px; } .assetSectionGrid .assetActions button { padding: 4px 5px; font-size: 10px; } @media (max-width: 720px) { .assetSectionGrid { grid-template-columns: 1fr; max-height: none; } .toolRow { grid-template-columns: repeat(3, minmax(0, 1fr)); } .editorHistoryRow { grid-template-columns: 1fr 1fr; } .advancedRow { grid-template-columns: 1fr 1fr 1fr; } } .syncStats { padding: 8px 10px; border-radius: 12px; background: rgba(20, 25, 32, 0.06); color: var(--muted); font-size: 12px; line-height: 1.45; } /* Phase 5: keep advanced depth controls inside the drawer. */ .advancedRow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; max-width: 100%; overflow: hidden; } .advancedRow .tool { flex: 0 1 auto; min-width: 0; max-width: 100%; padding: 7px 7px; white-space: nowrap; } #advancedHint { flex: 1 0 100%; min-width: 0; } #guardrailStats { white-space: pre-wrap; } .bubbleActions { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bubbleActions button:only-child, .bubbleActions button:nth-child(3):last-child { grid-column: span 2; } /* Phase 5 follow-up: object hidden list + report dialog + font priority. */ body, button, input, select, textarea { font-family: "3x5 MT Pixel Font", "Press Start 2P", "PixelMplus10", "DotGothic16", "MS Gothic", "Osaka-Mono", "Courier New", ui-monospace, monospace; } .hiddenSectionTitle { margin: 8px 0 6px; padding: 5px 7px; background: #ffe6f0; border: 2px solid var(--line); font-size: 11px; font-weight: 900; text-transform: uppercase; } .reportDialog { position: absolute; z-index: 20; inset: 0; display: grid; place-items: center; background: rgba(20, 25, 34, .34); } .reportDialog[hidden] { display: none; } .reportCard { width: min(360px, calc(100vw - 28px)); background: #fffdf5; border: 3px solid var(--line); box-shadow: 8px 8px 0 rgba(36,48,68,.25); padding: 14px; } .reportCard .hint { margin: 8px 0 10px; } .reportActions button { min-width: 0; } .assetActions button { min-width: 0; } .toggleList { display:flex; flex-direction:column; gap:10px; } .checkRow { display:flex; align-items:center; gap:10px; font-size:13px; color:#243044; } .checkRow input { width:16px; height:16px; } /* Phase 5 UI polish: larger readable controls while keeping palette code labels small. */ body, button, input, select, textarea { font-size: 15px; } .logo { font-size: 24px; } .subline { font-size: 14px; } .authorCard span, .clockHint { font-size: 12px; } .phaseLabel { font-size: 14px; } .iconButton, .tool, .tab, button { font-size: 14px; line-height: 1.15; } .toolHud .iconButton { font-size: 14px; min-width: 74px; padding: 10px 12px; } .cardTitle { font-size: 17px; } .field, .hint, .lineageNote, .syncStats { font-size: 14px; line-height: 1.45; } .toolRow { gap: 8px; } .editorHistoryRow { grid-template-columns: repeat(6, minmax(0, 1fr)); } .advancedRow { grid-template-columns: repeat(6, max-content) 1fr; align-items: start; } .assetMeta strong { font-size: 16px; } .assetMeta span { font-size: 13px; } .assetActions button { font-size: 12px; padding: 6px 7px; } .selectionBubble { font-size: 14px; } .bubbleName { font-size: 15px; } .bubbleAuthor, .bubbleRemixFrom, .bubbleRemixCount { font-size: 12px; } .bubbleActions button, .bubbleVotes button { font-size: 12px; padding: 6px 8px; } .paletteGrid button, .paletteSwatch { font-size: 7px !important; } .checkRow { font-size: 14px; } @media (max-width: 760px) { body, button, input, select, textarea { font-size: 14px; } .toolHud .iconButton { min-width: 68px; } .editorHistoryRow { grid-template-columns: repeat(3, minmax(0, 1fr)); } .advancedRow { grid-template-columns: repeat(3, minmax(0, 1fr)); } } .displayLimitField input { font-size: 16px; min-height: 36px; width: 110px; } .rotationBadge { font-size: 13px; color: #4d5b72; } /* exhibition/account polish */ .authorCard { min-width: 210px; } .authorCard small { display:block; margin-top:6px; font-size:12px; line-height:1.35; opacity:.82; } .miniButton { margin-top:6px; padding:6px 8px; border:2px solid #243044; background:#fff3d9; box-shadow:2px 2px 0 rgba(36,48,68,.22); cursor:pointer; font-size:12px; } .placementPreviewBar { position:fixed; left:50%; bottom:22px; transform:translateX(-50%); z-index:35; display:flex; align-items:center; gap:10px; max-width:min(760px, calc(100vw - 24px)); padding:12px 14px; border:3px solid #243044; background:#fff7de; box-shadow:5px 5px 0 rgba(36,48,68,.25); font-size:15px; } .placementPreviewBar[hidden] { display:none; } .likedCodex { margin:8px 0 14px; padding:10px; border:2px dashed rgba(36,48,68,.35); background:rgba(255,255,255,.45); font-size:14px; } .likedCodexTitle { font-weight:700; margin-bottom:6px; } .likedCodexList { display:flex; gap:8px; flex-wrap:wrap; } .likedCodexItem { display:flex; align-items:center; gap:6px; border:2px solid rgba(36,48,68,.25); background:#fffdf5; padding:4px 6px; max-width:180px; } .likedCodexItem canvas { width:28px; height:28px; image-rendering:pixelated; } .hiddenReasonText { color:#6f2f3b; font-weight:700; } .exhibitionNote { padding:8px 10px; background:#fff3d9; border:2px solid rgba(36,48,68,.2); margin-bottom:8px; font-size:14px; line-height:1.45; } /* compact account bar / remove right-side HUD */ .toolHud { display: none !important; } .topHud { min-height: 50px; padding: 8px 12px; gap: 10px; align-items: center; } .authorCard { width: auto !important; min-width: 0 !important; max-width: min(520px, 48vw); display: flex !important; align-items: center; gap: 8px; padding: 5px 7px !important; white-space: nowrap; } .authorCard span { display:inline !important; margin:0; font-size:11px !important; } .authorCard input { margin-top:0 !important; width:132px; min-height:28px; } .authorCard small { display:inline !important; margin-top:0 !important; line-height:1.15 !important; font-size:11px !important; max-width:240px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .miniButton { margin-top:0 !important; padding:5px 7px !important; font-size:11px !important; white-space:nowrap; } .clockCard { width: 190px; padding: 6px 8px; } .subline { white-space: nowrap; } .advancedRow { grid-template-columns: repeat(5, max-content) 1fr !important; } @media (max-width: 900px) { .topHud { right: 76px; align-items:flex-start; } .authorCard { max-width: calc(100vw - 110px); flex-wrap: wrap; white-space: normal; } .authorCard small { max-width: 100%; } } /* 2026 polish pass: make the island the visual default, keep creation and collection one click away. */ .islandTopBar { top: 12px; left: 50%; right: auto; width: min(560px, calc(100vw - 24px)); min-height: 0 !important; transform: translateX(-50%); display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px !important; background: rgba(255, 253, 245, .78) !important; border: 1px solid rgba(36, 48, 68, .24) !important; box-shadow: 0 6px 18px rgba(22, 31, 46, .12) !important; backdrop-filter: blur(10px); pointer-events: auto; } .brandBlock { min-width: 0; } .islandTopBar .logo { font-size: 18px; line-height: 1; white-space: nowrap; } .islandTopBar .subline { margin-top: 2px; max-width: 300px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 11px; opacity: .72; } .topActions { display: flex; gap: 6px; align-items: center; } .topButton { padding: 7px 10px !important; border-width: 1px !important; box-shadow: none !important; background: rgba(255, 253, 245, .86) !important; font-size: 12px !important; } .topButton.primary { background: var(--mint) !important; } .utilityControl { display: none !important; } .edgeAdd { display: none !important; } .devOnly { display: none !important; } /* Beginner-first editor: show only Pencil/Erase/Fill/Pick + Undo/Redo until Advanced is enabled. */ .advancedTool { display: none !important; } .studioDrawer.advancedTools .advancedTool { display: inline-flex !important; } .studioDrawer.advancedTools .toolRow .advancedTool { display: block !important; } .editorToolRow { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .editorHistoryRow { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .studioDrawer.advancedTools .editorToolRow { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; } .studioDrawer.advancedTools .editorHistoryRow { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; } #editHint { opacity: .78; } #editHint::after { content: " Advanced reveals line, rectangle, selection, flip, light, depth, and particles."; } /* Let the island breathe under the lighter navigation. */ #worldCanvas { background: #8dd7ff; } .selectionBubble { border-width: 2px !important; box-shadow: 0 8px 20px rgba(22,31,46,.16) !important; background: rgba(255,253,245,.94) !important; } @media (max-width: 720px) { .islandTopBar { width: calc(100vw - 16px); top: 8px; } .islandTopBar .subline { display: none; } .topButton { padding: 7px 8px !important; } } /* v8 account, editor, and placement refinements */ .islandClickHint { position: fixed; left: 14px; bottom: 14px; z-index: 24; padding: 6px 8px; border: 1px solid rgba(36,48,68,.22); background: rgba(255,253,245,.72); box-shadow: 0 5px 16px rgba(22,31,46,.10); backdrop-filter: blur(8px); font-size: 11px; color: rgba(36,48,68,.78); pointer-events: none; } .islandTopBar { width: min(960px, calc(100vw - 24px)) !important; } .accountCard.utilityControl { display: flex !important; align-items: center; gap: 7px; max-width: 430px !important; padding: 5px 7px !important; border: 1px solid rgba(36,48,68,.2) !important; background: rgba(255,253,245,.68) !important; box-shadow: none !important; } .accountFields { display: grid; grid-template-columns: 96px 112px 112px; gap: 5px; align-items: end; } .accountField { display: grid; gap: 2px; font-size: 9px !important; line-height: 1; color: rgba(36,48,68,.72); } .accountField input { width: 100% !important; min-height: 24px !important; padding: 3px 5px !important; font-size: 10px !important; border-width: 1px !important; background: rgba(255,255,255,.72); } .accountField input[readonly] { opacity: .72; } .accountCard small { max-width: 118px !important; white-space: normal !important; font-size: 9px !important; line-height: 1.15 !important; opacity: .78; } .accountCard .miniButton { font-size: 9px !important; padding: 4px 5px !important; border-width: 1px !important; box-shadow: none !important; } .clockCard.utilityControl { display: none !important; } .editorToolRow { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .editorHistoryRow { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .studioDrawer.advancedTools .editorToolRow { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .studioDrawer.advancedTools .editorHistoryRow { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .advancedToolGroup { display: grid; gap: 8px; margin: 2px 0 8px; } .advancedToolGroup[hidden] { display: none !important; } .advancedDrawRow { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; } .advancedActionRow { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .studioDrawer.advancedTools .advancedTool { display: block !important; } .toolBrush { background: #e8fff0 !important; } .toolErase { background: #ffe9e2 !important; } .toolFill { background: #e7f0ff !important; } .toolPick { background: #fff0d4 !important; } .toolUndo, .toolRedo { background: #f2ecff !important; } .toolLine { background: #e9f7ff !important; } .toolRect { background: #edf9e3 !important; } .toolSelect { background: #ffe8f3 !important; } .toolDoor { background: #f5ead7 !important; } .toolOutline { background: #fff6d8 !important; } .toolFlipH, .toolFlipV { background: #eaf2ff !important; } .toolClearSel { background: #f7e9ff !important; } .toolAdvanced { background: #f5f1e7 !important; } .toolLight { background: #fff0a8 !important; } .toolDepth { background: #dfeeff !important; } .toolParticle { background: #e8fffb !important; } .tool.active, button.active { outline: 2px solid rgba(36,48,68,.55); outline-offset: -4px; filter: saturate(1.08); } .particleControl { display: inline-flex; align-items: center; gap: 5px; padding: 6px 7px; border: 2px solid var(--line); background: #e8fffb; box-shadow: 3px 3px 0 rgba(36,48,68,.14); font-size: 11px; font-weight: 900; text-transform: uppercase; } .particleControl[hidden] { display: none !important; } .particleControl select { min-height: 26px; padding: 2px 5px; font-size: 11px; } .finishActions { grid-template-columns: 1.4fr 1fr !important; } .placementPreviewBar span::after { content: " Left-click chooses a tile; right-click cancels selection."; } @media (max-width: 980px) { .islandTopBar { width: calc(100vw - 16px) !important; flex-wrap: wrap; justify-content: center; } .accountCard.utilityControl { order: 3; max-width: 100% !important; } .accountFields { grid-template-columns: repeat(3, minmax(72px, 1fr)); } .accountCard small { max-width: 100% !important; } } @media (max-width: 560px) { .accountFields { grid-template-columns: 1fr; } .finishActions { grid-template-columns: 1fr !important; } .advancedDrawRow, .advancedActionRow { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } /* v9 menu and particle-range refinements */ .cuteMenuButton { flex: 0 0 auto; width: 38px; height: 38px; padding: 0 !important; display: grid; place-items: center; border: 2px solid rgba(36,48,68,.72) !important; border-radius: 14px !important; background: linear-gradient(180deg, #ffe3f0, #ffc3dd) !important; box-shadow: 3px 3px 0 rgba(36,48,68,.18) !important; font-size: 19px !important; line-height: 1 !important; cursor: pointer; } .cuteMenuButton:hover { transform: translateY(-1px); filter: saturate(1.08); } .cuteMenuButton:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 rgba(36,48,68,.18) !important; } .islandTopBar .brandBlock { margin-right: auto; } .particleControlGroup { display: grid !important; grid-template-columns: minmax(92px, 120px) auto; align-items: end; gap: 6px 8px; max-width: min(100%, 360px); text-transform: none; } .particleControlGroup label { font-size: 10px; font-weight: 900; color: rgba(36,48,68,.76); } .particleRangeButtons { display: grid; grid-template-columns: repeat(2, minmax(74px, 1fr)); gap: 5px; } .particleRangeButtons .tool { padding: 6px 7px !important; font-size: 11px !important; } #particleRangeStatus { grid-column: 1 / -1; font-size: 10px; color: rgba(36,48,68,.72); line-height: 1.25; } @media (max-width: 560px) { .particleControlGroup { grid-template-columns: 1fr; } .particleRangeButtons { grid-template-columns: 1fr 1fr; } } /* v10 bottom DRAW access and remix bottom sheet */ .drawDockButton { position: fixed; z-index: 28; left: 50%; bottom: 22px; transform: translateX(-50%); min-width: 210px; min-height: 62px; padding: 12px 28px !important; border: 4px solid var(--line) !important; border-radius: 22px !important; background: linear-gradient(180deg, #ffe18f, #ff9dbf 62%, #ff7aa8) !important; color: #253044 !important; box-shadow: 0 8px 0 rgba(36,48,68,.24), 0 14px 26px rgba(22,31,46,.18) !important; font-size: 24px !important; letter-spacing: .06em; line-height: 1 !important; cursor: pointer; } .drawDockButton:hover { filter: saturate(1.08) brightness(1.02); } .drawDockButton:active { transform: translate(-50%, 4px); box-shadow: 0 4px 0 rgba(36,48,68,.24), 0 8px 18px rgba(22,31,46,.16) !important; } .drawDockButton[hidden] { display: none !important; } .islandTopBar .cuteMenuButton { display: none !important; } .islandTopBar .brandBlock { margin-right: 0 !important; } .islandClickHint { bottom: 96px !important; } .selectionBubble { position: absolute !important; left: 0 !important; top: 0 !important; z-index: 36 !important; min-width: 138px !important; max-width: 224px !important; padding: 8px 9px !important; display: block !important; text-align: center !important; border: 3px solid var(--line) !important; border-radius: 14px !important; background: rgba(255,253,245,.98) !important; box-shadow: 0 6px 0 rgba(36,48,68,.18), 0 10px 20px rgba(22,31,46,.15) !important; } .selectionBubble[hidden] { display: none !important; } .selectionBubble::after { display: block !important; content: '' !important; position: absolute; left: 50%; bottom: -10px; width: 14px; height: 14px; background: rgba(255,253,245,.98); border-right: 3px solid var(--line); border-bottom: 3px solid var(--line); transform: translateX(-50%) rotate(45deg); } .bubbleName { font-size: 13px !important; } .bubbleAuthor, .bubbleRemixFrom, .bubbleRemixCount { font-size: 10px !important; margin-top: 2px !important; } .bubbleVotes { margin-top: 6px !important; grid-template-columns: 1fr auto 1fr !important; justify-content: center; } .bubbleActions { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: 5px !important; margin-top: 6px !important; } .bubbleActions button { min-height: 32px; font-size: 10px !important; } .bubbleRemixPrimary { background: linear-gradient(180deg, #ffb3d1, #ff7daf) !important; border-width: 3px !important; } .bubbleMenuButton { margin-top: 6px; min-width: 64px; min-height: 28px; padding: 5px 8px !important; border-radius: 12px !important; background: #fff2d7 !important; font-size: 10px !important; } .bubbleMenuActions { display: flex; justify-content: center; gap: 6px; padding-top: 4px; margin-top: 4px; border-top: 1px dashed rgba(36,48,68,.25); } .bubbleMenuActions[hidden] { display: none !important; } .bubbleMenuActions button { font-size: 10px !important; padding: 5px 8px !important; } @media (max-width: 760px) { .drawDockButton { min-width: 176px; min-height: 56px; font-size: 20px !important; bottom: 16px; } .islandClickHint { display: none; } } /* v15 analog day-night clock */ .analogClock { --clock-rotate: 0deg; position: fixed; top: clamp(104px, 14vh, 158px); right: 18px; z-index: 28; width: 82px; height: 100px; display: grid; place-items: center; gap: 4px; pointer-events: none; } .analogClockDial { position: relative; width: 72px; height: 72px; border: 4px solid var(--line); border-radius: 50%; background: radial-gradient(circle at 50% 50%, rgba(255,255,245,.42) 0 6%, rgba(255,255,245,0) 7%), conic-gradient(from -90deg, #142147 0deg 54deg, #5468aa 70deg, #f5b067 96deg, #8bd8ff 128deg 232deg, #ff9d4f 266deg, #c84f2e 292deg, #1b2a58 326deg 360deg); box-shadow: 0 5px 0 rgba(36,48,68,.20), 0 8px 18px rgba(18,28,44,.18); image-rendering: pixelated; } .analogClockDial::after { content: ''; position: absolute; inset: 8px; border: 1px dashed rgba(36,48,68,.25); border-radius: 50%; } .analogClockHand { position: absolute; left: 50%; top: 50%; width: 4px; height: 28px; transform-origin: 50% 100%; transform: translate(-50%, -100%) rotate(var(--clock-rotate)); background: #243044; border-radius: 6px 6px 2px 2px; box-shadow: 1px 0 0 rgba(255,255,255,.45); } .analogClockHand::after { content: ''; position: absolute; left: 50%; bottom: -5px; width: 10px; height: 10px; transform: translateX(-50%); border: 3px solid var(--line); background: #fff7e8; border-radius: 50%; } .analogClockLabel { min-width: 70px; padding: 2px 7px; border: 2px solid var(--line); border-radius: 999px; background: rgba(255,248,232,.9); box-shadow: 0 3px 0 rgba(36,48,68,.16); text-align: center; font-size: 10px; font-weight: 950; } .analogPhaseBar { display: none !important; } @media (max-width: 760px) { .analogClock { top: 82px; right: 10px; transform: scale(.86); transform-origin: top right; } }