Spaces:
Running
Running
File size: 4,685 Bytes
c3e6da9 19158f2 c3e6da9 19158f2 c3e6da9 19158f2 c3e6da9 19158f2 c3e6da9 19158f2 c3e6da9 19158f2 c3e6da9 19158f2 c3e6da9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
: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; }
} |