:host { display: block; } .dx-page { display: flex; flex-direction: column; align-items: center; padding: 40px 0 0; h1 { font-size: 2rem; font-weight: 700; margin-bottom: 6px; color: var(--fg-1a1a2e); text-align: center; } .subtitle { color: var(--fg-666666); margin-bottom: 26px; font-size: 0.95rem; text-align: center; } } .card { background: var(--bg-ffffff); border-radius: 16px; box-shadow: 0 4px 24px rgba(0, 0, 0, .08); padding: 24px; width: 100%; display: flex; flex-direction: column; gap: 14px; min-width: 0; } .alert { padding: 11px 14px; border-radius: 10px; background: var(--bg-fdecea); border: 1px solid var(--bd-f5c6c2); color: var(--fg-a5251d); font-size: .88rem; } .busy { margin: 0; font-size: .86rem; color: var(--fg-5d6888); } .drop-zone { border: 2px dashed var(--bd-c5cae9); border-radius: 12px; padding: 34px 20px; text-align: center; cursor: pointer; background: var(--bg-fafbff); transition: border-color .2s, background .2s; &:hover, &.drag-over { border-color: var(--bd-5c6bc0); background: var(--bg-eef0fb); } svg { margin-bottom: 10px; opacity: .5; } p { font-size: .94rem; color: var(--fg-555555); margin: 0; } .drop-sub { margin-top: 6px; font-size: .79rem; color: var(--fg-5f6880); } span { color: var(--fg-5c6bc0); font-weight: 600; } } .bar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding-bottom: 12px; border-bottom: 1px solid var(--bd-eceff7); .meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; } strong { font-size: .98rem; color: var(--fg-25304e); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } span { font-size: .79rem; color: var(--fg-5f6880); } } .bar-actions { display: flex; gap: 7px; flex-wrap: wrap; } .layout { display: flex; gap: 14px; min-width: 0; } .viewer { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; } .toolbar { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; .group { display: flex; } .group button { border-radius: 0; margin-left: -1px; } .group button:first-child { border-radius: 8px 0 0 8px; margin-left: 0; } .group button:last-child { border-radius: 0 8px 8px 0; } } .stage { width: 100%; height: min(70vh, 680px); min-height: 300px; border-radius: 10px; display: block; touch-action: none; cursor: grab; background: var(--bg-1d1f27); &:active { cursor: grabbing; } &.measuring { cursor: crosshair; } } .measure { margin: 0; padding: 8px 12px; border-radius: 9px; background: var(--bg-fdeef6); color: var(--fg-7d2552); font-size: .84rem; font-variant-numeric: tabular-nums; } .hint { margin: 0; font-size: .76rem; color: var(--fg-5f6880); } .layers { flex: 0 0 230px; display: flex; flex-direction: column; gap: 8px; min-width: 0; ul { list-style: none; margin: 0; padding: 0; max-height: 640px; overflow: auto; display: flex; flex-direction: column; gap: 2px; } label { display: flex; align-items: center; gap: 7px; padding: 3px 4px; border-radius: 6px; cursor: pointer; font-size: .8rem; color: var(--fg-25304e); min-width: 0; &:hover { background: var(--bg-f4f6fc); } &.off { color: var(--fg-5f6880); } input { accent-color: #5c6bc0; flex: none; } } .search { padding: 6px 10px; border: 1px solid var(--bd-d9deef); border-radius: 8px; font-size: .8rem; } } .l-head { display: flex; align-items: center; justify-content: space-between; } .l-all { display: flex; gap: 8px; } .swatch { width: 12px; height: 12px; border-radius: 3px; flex: none; border: 1px solid color-mix(in srgb, var(--bd-000000) 20%, transparent); } .l-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .l-count { font-size: .7rem; color: var(--fg-5f6880); font-variant-numeric: tabular-nums; } .h-key { font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--fg-5f6880); } button { border: 1px solid var(--bd-dfe4f3); background: var(--bg-f7f9ff); color: var(--fg-4a5473); border-radius: 8px; padding: 7px 14px; font-size: .82rem; font-weight: 600; cursor: pointer; transition: background .15s, border-color .15s; &:hover { background: var(--bg-eef1fb); border-color: var(--bd-c9d2ea); } &.ghost { background: var(--bg-eef0fb); border-color: transparent; color: var(--fg-5d6888); } &.on { background: var(--bg-e3e7fb); border-color: var(--bd-9fa8da); color: var(--fg-2f3c8f); } &.icon { padding: 7px 12px; } &.link { border: 0; background: none; padding: 0; color: var(--fg-5c6bc0); font-size: .74rem; } } @media (max-width: 800px) { .card { padding: 16px; } .dx-page h1 { font-size: 1.6rem; } .layout { flex-direction: column; } .layers { flex: none; ul { max-height: 260px; } } .stage { height: 60vh; } }