Spaces:
Running
Running
| :root{ | |
| --bg: #f7f7f7; | |
| --paper: #ffffff; | |
| --ink: #1b1b1b; | |
| --muted: #666; | |
| --primary: #2563eb; | |
| --danger: #c62828; | |
| --border: #e3e3e3; | |
| --shadow: rgba(0,0,0,0.08); | |
| --grid: #e9e9e9; | |
| --selection: #4f46e5; | |
| } | |
| *{ box-sizing: border-box; } | |
| html,body{ height:100%; } | |
| body{ | |
| margin:0; | |
| background: var(--bg); | |
| color: var(--ink); | |
| font: 14px/1.4 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji"; | |
| } | |
| .topbar{ | |
| display:flex; | |
| align-items:flex-start; | |
| gap:16px; | |
| padding:10px 12px; | |
| border-bottom:1px solid var(--border); | |
| background: #fff; | |
| position: sticky; | |
| top: 0; | |
| z-index: 50; | |
| } | |
| .brand{ display:flex; align-items:center; gap:8px; min-width:180px; } | |
| .brand .logo{ font-size:20px; } | |
| .brand .title{ font-weight:700; letter-spacing:0.2px; } | |
| .toolbar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; } | |
| .tool-group{ display:flex; align-items:center; gap:6px; background:#fff; border:1px solid var(--border); padding:6px; border-radius:8px; } | |
| .tool-group.color-group{ gap:8px; } | |
| .color-label{ font-weight:600; color:var(--muted); margin-right:2px; } | |
| .colors{ display:flex; gap:4px; } | |
| .swatch{ | |
| width:18px; height:18px; border-radius:50%; border:2px solid #fff; box-shadow: 0 0 0 1px var(--border); | |
| cursor:pointer; | |
| } | |
| .swatch.active{ box-shadow: 0 0 0 2px var(--selection); } | |
| .btn{ | |
| display:inline-flex; align-items:center; justify-content:center; gap:6px; | |
| border:1px solid var(--border); background:#fff; color:var(--ink); | |
| padding:6px 10px; border-radius:8px; cursor:pointer; transition:.15s; | |
| text-decoration:none; font-weight:600; | |
| } | |
| .btn:hover{ box-shadow:0 1px 6px var(--shadow); } | |
| .btn.primary{ background: var(--primary); color:#fff; border-color: var(--primary); } | |
| .btn.danger{ background: var(--danger); color:#fff; border-color: var(--danger); } | |
| .btn input{ display:none; } | |
| .tool-btn{ | |
| width:34px; height:34px; display:inline-flex; align-items:center; justify-content:center; | |
| border:1px solid var(--border); border-radius:8px; background:#fff; cursor:pointer; | |
| } | |
| .tool-btn.active{ outline: 2px solid var(--selection); } | |
| .slider{ display:inline-flex; align-items:center; gap:6px; padding:0 4px; } | |
| .slider input[type="range"]{ width:140px; } | |
| .help details{ background:#fff; border:1px solid var(--border); border-radius:8px; padding:6px 10px; } | |
| .help summary{ cursor:pointer; font-weight:600; color:var(--muted); } | |
| .stage{ padding:12px; } | |
| .canvas-wrap{ | |
| position: relative; width: 100%; height: calc(100vh - 220px); | |
| min-height: 420px; background: #fff; border:1px solid var(--border); | |
| border-radius: 10px; box-shadow: 0 2px 10px var(--shadow); overflow: hidden; | |
| } | |
| .map-img{ | |
| position:absolute; inset:0; margin:auto; max-width:none; max-height:none; image-rendering: auto; | |
| user-select:none; pointer-events:none; | |
| } | |
| .overlay-canvas{ | |
| position:absolute; inset:0; width:100%; height:100%; | |
| cursor: crosshair; outline:none; | |
| } | |
| .drop-zone{ | |
| position:absolute; inset:0; display:none; align-items:center; justify-content:center; | |
| color:#555; font-weight:700; background: rgba(37,99,235,0.06); border:2px dashed #9bb6ff; pointer-events:none; | |
| } | |
| .text-editor{ | |
| position:absolute; min-width: 60px; min-height: 28px; resize: none; | |
| border:1px dashed var(--primary); background: rgba(255,255,255,0.9); | |
| padding:4px 6px; border-radius:6px; box-shadow: 0 2px 8px var(--shadow); | |
| font: 600 16px/1.3 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, "Helvetica Neue", Arial; | |
| } | |
| .palette{ | |
| border-top:1px solid var(--border); | |
| background:#fff; position: sticky; bottom:0; z-index: 40; | |
| } | |
| .palette-inner{ display:flex; align-items:center; gap:14px; padding:10px 12px; } | |
| .palette-title{ font-weight:700; color:var(--muted); } | |
| .icons{ display:flex; gap:10px; flex-wrap:wrap; } | |
| .icon-item{ | |
| width:72px; min-height:72px; background:#fafafa; border:1px solid var(--border); border-radius:10px; | |
| display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; padding:6px; cursor:grab; | |
| } | |
| .icon-item:active{ cursor:grabbing; } | |
| .icon-item img{ max-width: 42px; max-height: 42px; image-rendering: auto; } | |
| .icon-item .name{ width:100%; text-align:center; font-size:12px; color:#333; border:none; background:transparent; outline:none; } | |
| .icon-item .name:focus{ background:#fff; border:1px solid var(--border); border-radius:6px; } | |
| .canvas-wrap.pan-mode .overlay-canvas{ cursor: grab; } | |
| .canvas-wrap.pan-mode .overlay-canvas:active{ cursor: grabbing; } | |
| @media (max-width: 980px){ | |
| .toolbar{ gap:6px; } | |
| .tool-group{ padding:4px; } | |
| .tool-btn{ width:32px; height:32px; } | |
| .slider input[type="range"]{ width:100px; } | |
| } |