:root { color-scheme: dark; --nodedc-component-accent-rgb: 247 248 244; --nodedc-component-on-accent-rgb: 11 17 23; --nodedc-on-accent-rgb: 11 17 23; --launcher-radius-modal: 1.75rem; --launcher-radius-card: 1.35rem; --launcher-radius-control: 1.25rem; --launcher-radius-circle: 999px; --nodedc-shell-padding-x: 1.25rem; --nodedc-shell-padding-top: 1rem; --nodedc-shell-padding-bottom: 0.75rem; --nodedc-shell-frame-gutter-x: 18px; --nodedc-shell-height: 4.25rem; --nodedc-shell-row-height: 3rem; --nodedc-shell-logo-width: 7.25rem; --nodedc-shell-logo-height: 1.79rem; --nodedc-shell-pill-height: 3.45rem; --nodedc-shell-pill-padding: 0.32rem; --nodedc-shell-control-height: 2.78rem; --admin-viewport-gap: 1.5rem; --admin-nav-width: clamp(22.5rem, 21vw, 25rem); --admin-nav-pad: 1.1rem; --admin-panel-gap: 1.25rem; --admin-control-ring: 2.78rem; --admin-control-inset: 5px; --surface-base: rgba(8, 8, 11, 0.78); --surface-strong: rgba(8, 8, 11, 0.9); --surface-soft: rgba(255, 255, 255, 0.08); --field: rgba(255, 255, 255, 0.06); --nodedc-glass-panel-bg: rgba(28, 28, 30, 0.72); --nodedc-glass-panel-bg-strong: rgba(28, 28, 30, 0.84); --nodedc-glass-panel-surface: linear-gradient(180deg, rgba(255, 255, 255, 0.055) 0%, rgba(255, 255, 255, 0.014) 100%), var(--nodedc-glass-panel-bg); --nodedc-glass-panel-surface-strong: linear-gradient(180deg, rgba(255, 255, 255, 0.068) 0%, rgba(255, 255, 255, 0.018) 100%), var(--nodedc-glass-panel-bg-strong); --nodedc-glass-outline: rgba(255, 255, 255, 0.09); --nodedc-glass-panel-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.075), 0 22px 72px rgba(0, 0, 0, 0.42); --nodedc-glass-filter: blur(30px) saturate(1.26) brightness(1.05); --text-primary: #f7f8f4; --text-secondary: rgba(247, 248, 244, 0.72); --text-muted: rgba(247, 248, 244, 0.48); --danger: #ff7474; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } * { box-sizing: border-box; } html, body { min-height: 100%; background: #050506; } body { margin: 0; min-height: 100vh; overflow: hidden; color: var(--text-primary); font-family: inherit; font-synthesis: none; -webkit-font-smoothing: antialiased; } button, input, textarea, select { font: inherit; outline: none; } button { border: 0; cursor: pointer; } a { color: inherit; text-decoration: none; } button:disabled, input:disabled, textarea:disabled { cursor: not-allowed; opacity: 0.42; } h1, h2, h3, p { margin: 0; letter-spacing: 0; } .admin-backdrop { position: fixed; inset: 0; background: #050506; } .nodedc-expanded-toolbar-shell { position: relative; z-index: 80; width: min(100%, calc(100vw - var(--nodedc-shell-frame-gutter-x))); margin-inline: auto; flex-shrink: 0; padding: var(--nodedc-shell-padding-top) var(--nodedc-shell-padding-x) var(--nodedc-shell-padding-bottom); } .nodedc-expanded-toolbar { display: flex; min-height: var(--nodedc-shell-height); width: 100%; flex-direction: column; } .nodedc-expanded-toolbar-top { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); min-height: var(--nodedc-shell-row-height); width: 100%; align-items: center; gap: 1rem; } .nodedc-expanded-toolbar-left, .nodedc-expanded-toolbar-center, .nodedc-expanded-toolbar-right { display: flex; min-width: 0; align-items: center; gap: 0.75rem; } .nodedc-expanded-toolbar-left { justify-content: flex-start; } .nodedc-expanded-toolbar-center { justify-content: center; } .nodedc-expanded-toolbar-right { justify-content: flex-end; } .nodedc-expanded-brand-link { display: inline-flex; width: var(--nodedc-shell-logo-width); height: var(--nodedc-shell-logo-height); flex: 0 0 auto; align-items: center; justify-content: flex-start; line-height: 0; } .nodedc-expanded-brand-logo { display: block; width: 100%; height: 100%; object-fit: contain; } .nodedc-expanded-workspace-button { position: relative; display: flex; width: 3rem; min-width: 3rem; max-width: 3rem; height: 3rem; min-height: 3rem; max-height: 3rem; flex: 0 0 3rem; align-items: center; justify-content: center; overflow: hidden; border-radius: 999px; background: #000; padding: 0; } .nodedc-expanded-workspace-avatar { display: block; width: 100%; height: 100%; border-radius: inherit; object-fit: cover; } .nodedc-expanded-nav-group, .nodedc-expanded-user-group { display: inline-flex; min-height: var(--nodedc-shell-pill-height); align-items: center; gap: 0.18rem; border-radius: 999px; background: rgba(64, 64, 64, 0.48); padding: var(--nodedc-shell-pill-padding); user-select: none; } .nodedc-expanded-user-group { gap: 0.22rem; } .nodedc-expanded-nav-button { position: relative; display: inline-flex; min-height: var(--nodedc-shell-control-height); align-items: center; justify-content: center; border-radius: 999px; background: transparent; color: rgba(255, 255, 255, 0.68); padding: 0.2rem 1.22rem; font-size: 0.74rem; font-weight: 760; line-height: 1; white-space: nowrap; transition: background-color 160ms ease, color 160ms ease, opacity 160ms ease; } .nodedc-expanded-nav-button:hover { background: rgba(255, 255, 255, 0.07); color: rgba(255, 255, 255, 0.96); } .nodedc-expanded-nav-button[data-active="true"] { background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .nodedc-toolbar-icon-button { display: inline-grid; width: var(--nodedc-shell-control-height); height: var(--nodedc-shell-control-height); place-items: center; border-radius: 999px; background: transparent; color: rgba(255, 255, 255, 0.72); font-size: 0.82rem; } .nodedc-expanded-profile-trigger { display: inline-flex; align-items: center; gap: 0.22rem; border-radius: 999px; } .nodedc-expanded-user-avatar-button, .nodedc-expanded-user-avatar { display: grid; width: var(--nodedc-shell-control-height); height: var(--nodedc-shell-control-height); place-items: center; border-radius: 999px; } .nodedc-expanded-user-avatar { background: radial-gradient(circle at 70% 18%, rgba(255, 255, 255, 0.8), transparent 24%), linear-gradient(135deg, #c8c9cb, #8d8f96 55%, #f1f1f1); color: rgba(8, 8, 10, 0.96); font-size: 0.74rem; font-weight: 850; } .admin-shell { position: relative; z-index: 1; display: grid; grid-template-columns: var(--admin-nav-width) minmax(0, 1fr); gap: var(--admin-panel-gap); width: calc(100vw - (var(--admin-viewport-gap) * 2)); height: calc( 100vh - var(--nodedc-shell-height) - var(--nodedc-shell-padding-top) - var(--nodedc-shell-padding-bottom) - var(--admin-viewport-gap) ); margin: 0 auto var(--admin-viewport-gap); overflow: visible; } .sidebar, .editor { min-width: 0; min-height: 0; border-radius: var(--launcher-radius-card); background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012)), rgba(10, 10, 13, 0.88); box-shadow: 0 34px 110px rgba(0, 0, 0, 0.52); backdrop-filter: blur(28px); -webkit-backdrop-filter: blur(28px); } body[data-file-picker-active="true"] .editor { transform: translateZ(0); } .sidebar { position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 1.05rem; overflow: hidden; padding: var(--admin-nav-pad); } .sidebar-head { position: relative; display: grid; gap: 1.05rem; padding: 0.42rem 0 0; } .sidebar-head h1 { margin-top: 0.35rem; font-size: 1.15rem; line-height: 1.1; } .admin-panel-close { position: absolute; top: var(--admin-control-inset); right: var(--admin-control-inset); display: grid; width: var(--admin-control-ring); height: var(--admin-control-ring); place-items: center; border: 1px solid rgba(255, 255, 255, 0.22); border-radius: var(--launcher-radius-circle); background: transparent; color: rgba(255, 255, 255, 0.8); font-size: 1.25rem; line-height: 1; } .add-block-button { width: calc(var(--admin-control-ring) * 0.85); height: calc(var(--admin-control-ring) * 0.85); font-size: 1.32rem; font-weight: 520; } .project-settings-button { right: calc(var(--admin-control-inset) + (var(--admin-control-ring) * 0.9) + 0.45rem); width: calc(var(--admin-control-ring) * 0.85); height: calc(var(--admin-control-ring) * 0.85); } .project-settings-button svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; } .workspace-card-actions { display: inline-flex; margin-left: auto; align-items: center; gap: 0.34rem; } .workspace-action-button { display: grid; width: 2rem; height: 2rem; place-items: center; flex: 0 0 auto; border: 1px solid rgba(255, 255, 255, 0.16); border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.055); color: rgba(255, 255, 255, 0.8); font-size: 1.04rem; line-height: 1; } .workspace-action-button svg { width: 0.92rem; height: 0.92rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; } .workspace-action-button--plus { font-size: 1.18rem; font-weight: 650; } .workspace-action-button:hover { border-color: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.1); color: var(--text-primary); } .admin-panel-close:hover { border-color: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.07); color: var(--text-primary); } .workspace-card, .admin-panel-client-select { position: relative; display: flex; width: calc(100% + (var(--admin-nav-pad) * 2)); min-height: calc(var(--admin-control-ring) + (var(--admin-control-inset) * 2)); margin-inline: calc(var(--admin-nav-pad) * -1); align-items: center; gap: 0.65rem; overflow: hidden; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.04); padding: var(--admin-control-inset); color: rgba(255, 255, 255, 0.66); opacity: 0.82; } .workspace-logo, .empty-icon, .admin-panel-client-select__icon, .block-icon { display: grid; width: var(--admin-control-ring); height: var(--admin-control-ring); place-items: center; flex: 0 0 auto; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.055); color: rgba(255, 255, 255, 0.58); font-size: 0.7rem; font-weight: 850; } .workspace-name { overflow: hidden; color: var(--text-primary); font-size: 0.92rem; font-weight: 820; text-overflow: ellipsis; white-space: nowrap; } .workspace-role, .breadcrumb, .panel-note, .field-path, .media-upload-hint, .block-meta, .group-desc, .status, .empty-state p { color: var(--text-muted); } .workspace-role { margin-top: 0.12rem; font-size: 0.72rem; font-weight: 750; } .regions { display: grid; align-content: start; gap: 1.2rem; width: calc(100% + (var(--admin-nav-pad) * 2)); min-height: 0; margin-inline: calc(var(--admin-nav-pad) * -1); overflow-x: hidden; overflow-y: auto; padding-bottom: 1rem; } .region-title { margin: 0 0 0.48rem; padding-inline: calc(var(--admin-nav-pad) + 0.35rem); color: var(--text-muted); font-size: 0.68rem; font-weight: 850; letter-spacing: 0.12em; text-transform: uppercase; } .block-list { display: grid; width: 100%; gap: 0.22rem; } .block-btn { position: relative; display: grid; grid-template-columns: var(--admin-control-ring) minmax(0, 1fr); width: 100%; min-height: calc(var(--admin-control-ring) + (var(--admin-control-inset) * 2)); align-items: center; gap: 0.86rem; border: 0; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.04); color: rgba(255, 255, 255, 0.66); cursor: pointer; opacity: 0.66; padding: var(--admin-control-inset) 0.9rem var(--admin-control-inset) var(--admin-control-inset); text-align: left; transition: background 160ms ease, color 160ms ease, opacity 160ms ease, transform 160ms ease, box-shadow 160ms ease; } .block-btn.has-drag-handle { grid-template-columns: var(--admin-control-ring) minmax(0, 1fr) 1.35rem; } .block-btn:hover { background: rgba(255, 255, 255, 0.085); color: var(--text-primary); opacity: 0.92; transform: translateY(-1px); } .block-btn.active { background: rgba(255, 255, 255, 0.115); color: var(--text-primary); opacity: 1; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.048), 0 10px 22px rgba(0, 0, 0, 0.12); } .block-btn.active .block-icon { background: rgba(247, 248, 244, 0.96); color: rgb(var(--nodedc-on-accent-rgb)); } .block-btn.disabled { opacity: 0.3; } .block-btn.dragging { opacity: 0.16; } .sorting-source { display: none !important; } .block-btn.drag-over { background: rgba(255, 255, 255, 0.16); } .block-list.sorting-active .block-btn { transition: background 160ms ease, color 160ms ease, opacity 160ms ease, transform 180ms ease, box-shadow 160ms ease; } .sortable-placeholder { border: 1px dashed rgba(255, 255, 255, 0.32); border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.07); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 12px 34px rgba(0, 0, 0, 0.22); } .collection-list .sortable-placeholder { border-radius: var(--launcher-radius-control); } .sortable-ghost { position: fixed; z-index: 300; pointer-events: none; opacity: 0.94; transform: scale(1.015); box-shadow: 0 24px 70px rgba(0, 0, 0, 0.45); } .block-copy { display: grid; min-width: 0; gap: 0.12rem; } .block-name { overflow: hidden; font-size: 0.88rem; font-weight: 760; line-height: 1.16; text-overflow: ellipsis; white-space: nowrap; } .block-meta { overflow: hidden; font-size: 0.68rem; font-weight: 650; line-height: 1.15; text-overflow: ellipsis; white-space: nowrap; } .block-drag-handle { display: grid; width: 1.35rem; height: 2.2rem; place-items: center; border-radius: var(--launcher-radius-circle); color: rgba(255, 255, 255, 0.38); cursor: grab; font-size: 1rem; letter-spacing: -0.12em; line-height: 1; touch-action: none; user-select: none; } .block-drag-handle:active { cursor: grabbing; } .block-drag-handle:hover { background: rgba(255, 255, 255, 0.06); color: rgba(255, 255, 255, 0.78); } .editor { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; overflow: hidden; padding: 1rem; font-size: 0.875rem; } .editor-head, .actions, .button-row, .toggle-row, .card-head, .panel-head, .group-head { display: flex; align-items: center; } .editor-head { justify-content: space-between; gap: 1rem; padding: 0.35rem 0.35rem 0.95rem; } .editor-head h1 { color: var(--text-muted); font-size: 0.72rem; font-weight: 850; letter-spacing: 0.12em; line-height: 1.2; text-transform: uppercase; } .breadcrumb { margin-top: 0.34rem; font-size: 0.74rem; line-height: 1.35; } .editor-head h2 { margin-top: 0.68rem; font-size: 1.15rem; font-weight: 850; line-height: 1.12; } .actions, .button-row { gap: 0.55rem; flex-wrap: wrap; justify-content: flex-end; } .dirty-state { display: inline-flex; min-width: 13.5rem; min-height: 2rem; align-items: center; justify-content: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.055); color: var(--text-muted); padding: 0 0.75rem; font-size: 0.68rem; font-weight: 820; white-space: nowrap; } .dirty-state[data-dirty="true"] { background: rgba(255, 255, 255, 0.12); color: var(--text-primary); } .structure-card { padding-block: 0.78rem; } .structure-head { min-height: var(--nodedc-shell-control-height); } .icon-action-row { gap: 0.42rem; } .primary-btn, .ghost-btn, .danger-btn, .icon-btn, .icon-action-btn { display: inline-flex; min-height: var(--nodedc-shell-control-height); align-items: center; justify-content: center; gap: 0.45rem; border-radius: var(--launcher-radius-circle); padding: 0 1.05rem; font-size: 0.78rem; font-weight: 850; transition: background 160ms ease, color 160ms ease, transform 160ms ease, opacity 160ms ease; } .icon-action-btn { width: var(--nodedc-shell-control-height); min-width: var(--nodedc-shell-control-height); padding: 0; background: rgba(255, 255, 255, 0.075); color: var(--text-primary); font-size: 1rem; } .icon-action-btn:hover { background: rgba(255, 255, 255, 0.13); } .trash-can-icon { display: block; width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.65; } .danger-action-btn { background: transparent; color: rgba(255, 255, 255, 0.82); } .operation-extra { display: none; } .primary-btn { min-width: 9rem; background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .ghost-btn, .icon-btn { background: rgba(255, 255, 255, 0.075); color: var(--text-primary); } .danger-btn { background: transparent; color: var(--text-primary); } .primary-btn:hover, .ghost-btn:hover, .danger-btn:hover, .icon-btn:hover { transform: translateY(-1px); } .ghost-btn:hover, .icon-btn:hover, .danger-btn:hover { background: rgba(255, 255, 255, 0.12); } .icon-btn { width: var(--nodedc-shell-control-height); padding: 0; } .empty-state { display: grid; grid-template-columns: 3rem minmax(0, 1fr); align-self: start; gap: 1rem; margin: 1.4rem 0.35rem 0; padding: 1.15rem; border-radius: var(--launcher-radius-card); background: rgba(255, 255, 255, 0.045); } .empty-state h3 { font-size: 1.02rem; line-height: 1.25; } .empty-state p { margin-top: 0.35rem; font-size: 0.84rem; font-weight: 650; line-height: 1.45; } .block-form { display: grid; min-height: 0; overflow: auto; gap: 1rem; padding: 0 0.2rem 5rem; scrollbar-color: rgba(255, 255, 255, 0.25) transparent; } body[data-admin-mode="seo"] #add-block, body[data-admin-mode="seo"] .block-meta-card, body[data-admin-mode="seo"] .structure-card, body[data-admin-mode="seo"] .json-details { display: none; } body[data-admin-mode="knowledge"] #block-form, body[data-admin-mode="knowledge"] #empty-state { display: none !important; } body:not([data-admin-mode="knowledge"]) #knowledge-form { display: none !important; } .hidden { display: none !important; } .settings-card, .content-panel, .json-details, .content-group, .seo-diagnostics { border-radius: var(--launcher-radius-card); background: rgba(255, 255, 255, 0.045); } .settings-card { padding: 1rem; } .card-head, .panel-head, .group-head { justify-content: space-between; gap: 1rem; } .card-head h3, .panel-head h3, .group-head h3 { color: var(--text-primary); font-size: 1rem; font-weight: 850; line-height: 1.2; } .section-kicker { margin-bottom: 0.32rem; color: var(--text-muted); font-size: 0.72rem; font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; } .field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; margin-top: 1rem; } .content-panel { display: grid; gap: 1rem; padding: 1rem; } .panel-note { max-width: 24rem; font-size: 0.8rem; font-weight: 650; line-height: 1.35; text-align: right; } .content-fields { display: grid; gap: 1rem; } .content-group { display: grid; gap: 1rem; padding: 1rem; } .group-desc { margin-top: 0.22rem; font-size: 0.78rem; font-weight: 650; line-height: 1.35; } .group-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; } .field-control { display: grid; min-width: 0; gap: 0.38rem; color: var(--text-muted); font-size: 0.72rem; font-weight: 800; text-transform: uppercase; } .field-control.wide { grid-column: 1 / -1; } .project-archive-field { grid-column: 1 / -1; } .project-archive-control { display: flex; min-height: 2.72rem; align-items: center; gap: 1rem; flex-wrap: wrap; } .project-archive-button { min-width: 13rem; } .project-archive-backup-toggle { min-height: 2.72rem; text-transform: none; } .secret-input-wrap { position: relative; display: grid; min-width: 0; } .secret-input-wrap input { padding-right: 3rem; } .secret-toggle-button { position: absolute; top: 50%; right: 0.42rem; display: grid; width: 2.1rem; height: 2.1rem; place-items: center; border: 0; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.065); color: rgba(255, 255, 255, 0.72); transform: translateY(-50%); } .secret-toggle-button:hover { background: rgba(255, 255, 255, 0.12); color: var(--text-primary); } .secret-toggle-button svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; } .field-label-row { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 0.75rem; } .field-label-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .field-kind { flex: 0 0 auto; border-radius: 999px; background: rgba(255, 255, 255, 0.07); color: var(--text-muted); font-size: 0.64rem; font-weight: 820; letter-spacing: 0.04em; padding: 0.18rem 0.42rem; text-transform: uppercase; } .field-path { overflow: hidden; font-size: 0.68rem; font-weight: 600; text-overflow: ellipsis; text-transform: none; white-space: nowrap; } .seo-diagnostics { display: grid; gap: 1rem; padding: 1rem; } .seo-metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.75rem; } .seo-metric { display: grid; gap: 0.35rem; min-width: 0; border-radius: 1rem; background: rgba(255, 255, 255, 0.055); padding: 0.82rem; } .seo-metric span { overflow: hidden; color: var(--text-muted); font-size: 0.68rem; font-weight: 850; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .seo-metric strong { overflow: hidden; color: var(--text-primary); font-size: 0.88rem; font-weight: 850; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .seo-metric[data-status="good"] strong, .seo-field-meter[data-status="good"] { color: #bcf4d1; } .seo-metric[data-status="warn"] strong, .seo-field-meter[data-status="warn"] { color: #f3d28b; } .seo-metric[data-status="bad"] strong, .seo-field-meter[data-status="bad"] { color: #ffb7b7; } .seo-field-meter { overflow: hidden; color: var(--text-muted); font-size: 0.68rem; font-weight: 720; text-overflow: ellipsis; text-transform: none; white-space: nowrap; } .boolean-field { align-content: start; } .range-field { gap: 0.46rem; } .range-control { display: flex; min-height: 2.72rem; align-items: center; gap: 0.85rem; border-radius: var(--launcher-radius-control); background: var(--field); padding: 0 0.86rem; } .range-control input[type="range"] { height: 1.5rem; min-width: 0; flex: 1 1 auto; appearance: none; border: 0; border-radius: 0; background: transparent; padding: 0; accent-color: #f7f8f4; } .range-control input[type="range"]::-webkit-slider-runnable-track { height: 0.32rem; border-radius: 999px; background: rgba(255, 255, 255, 0.16); } .range-control input[type="range"]::-webkit-slider-thumb { width: 1.08rem; height: 1.08rem; margin-top: -0.38rem; appearance: none; border-radius: 50%; background: #f7f8f4; box-shadow: 0 0 0 0.28rem rgba(255, 255, 255, 0.08); } .range-control input[type="range"]::-moz-range-track { height: 0.32rem; border-radius: 999px; background: rgba(255, 255, 255, 0.16); } .range-control input[type="range"]::-moz-range-thumb { width: 1.08rem; height: 1.08rem; border: 0; border-radius: 50%; background: #f7f8f4; box-shadow: 0 0 0 0.28rem rgba(255, 255, 255, 0.08); } .range-value { min-width: 3.4rem; color: var(--text-secondary); font-size: 0.78rem; font-weight: 850; text-align: right; white-space: nowrap; } .number-control { display: flex; min-height: 2.72rem; align-items: center; gap: 0.52rem; border-radius: var(--launcher-radius-control); background: var(--field); padding: 0 0.86rem; } .number-control input[type="number"] { width: 100%; min-width: 0; border: 0; background: transparent; color: var(--text-primary); font-size: 0.86rem; font-weight: 820; padding: 0; } .number-suffix { flex: 0 0 auto; color: var(--text-muted); font-size: 0.72rem; font-weight: 850; } .link-mode-field { gap: 0.48rem; } .link-mode-grid { display: grid; gap: 0.48rem; } .link-mode-row { display: grid; grid-template-columns: auto minmax(4.5rem, 0.22fr) minmax(0, 1fr); min-width: 0; align-items: center; gap: 0.55rem; border-radius: var(--launcher-radius-control); background: var(--field); padding: 0.42rem 0.6rem; color: var(--text-secondary); } .link-mode-row input[type="checkbox"] { width: 1.18rem; height: 1.18rem; margin: 0; appearance: none; border: 0.18rem solid rgba(255, 255, 255, 0.84); border-radius: 50%; background: transparent; } .link-mode-row input[type="checkbox"]:checked { box-shadow: inset 0 0 0 0.22rem #050506; background: rgba(255, 255, 255, 0.94); } .link-mode-row span { overflow: hidden; color: var(--text-muted); font-size: 0.68rem; font-weight: 850; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .link-mode-row input[type="text"] { min-width: 0; min-height: 2rem; border-radius: 0.78rem; background: rgba(255, 255, 255, 0.04); padding: 0 0.72rem; } .boolean-field input, .group-head-toggle input, .collection-visibility-toggle input { width: 2.42rem; height: 1.32rem; margin: 0; appearance: none; border-radius: 999px; background: rgba(255, 255, 255, 0.16); padding: 0.16rem; } .boolean-field input::before, .group-head-toggle input::before, .collection-visibility-toggle input::before { display: block; width: 1rem; aspect-ratio: 1; border-radius: 50%; background: rgba(255, 255, 255, 0.82); content: ""; transition: transform 0.16s ease; } .boolean-field input:checked, .group-head-toggle input:checked, .collection-visibility-toggle input:checked { background: rgba(255, 255, 255, 0.9); } .boolean-field input:checked::before, .group-head-toggle input:checked::before, .collection-visibility-toggle input:checked::before { background: #050506; transform: translateX(1.1rem); } .group-head-toggle { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 0.52rem; color: var(--text-secondary); font-size: 0.78rem; font-weight: 850; white-space: nowrap; } .collection-field { display: grid; grid-column: 1 / -1; gap: 0.75rem; min-width: 0; } .collection-head, .collection-summary, .collection-item-actions { display: flex; align-items: center; } .collection-head, .collection-summary { justify-content: space-between; gap: 0.75rem; } .collection-title { color: var(--text-primary); font-size: 0.88rem; font-weight: 850; text-transform: none; } .collection-add-btn { display: grid; width: 2.05rem; height: 2.05rem; min-height: 2.05rem; place-items: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.9); color: rgba(8, 8, 10, 0.96); padding: 0; font-size: 1.05rem; font-weight: 850; line-height: 1; } .collection-list { display: grid; gap: 0.5rem; } .collection-item-card { overflow: hidden; border-radius: var(--launcher-radius-control); background: rgba(255, 255, 255, 0.045); transition: background 160ms ease, opacity 160ms ease, transform 180ms ease; } .collection-item-card[open] { background: rgba(255, 255, 255, 0.065); } .collection-item-card.dragging { opacity: 0.16; } .collection-item-card.is-hidden { opacity: 0.55; } .collection-summary { min-height: 3rem; cursor: pointer; list-style: none; padding: 0.42rem 0.55rem 0.42rem 0.85rem; } .collection-summary::-webkit-details-marker { display: none; } .collection-summary-title { min-width: 0; flex: 1 1 auto; overflow: hidden; color: var(--text-secondary); font-size: 0.82rem; font-weight: 820; text-overflow: ellipsis; text-transform: none; white-space: nowrap; } .collection-item-actions { flex: 0 0 auto; gap: 0.22rem; } .collection-visibility-toggle { display: inline-flex; height: 2.2rem; align-items: center; gap: 0.38rem; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.07); padding: 0 0.52rem; color: var(--text-secondary); cursor: pointer; } .collection-visibility-toggle:hover { background: rgba(255, 255, 255, 0.14); color: var(--text-primary); } .collection-visibility-toggle span { font-size: 0.68rem; font-weight: 850; line-height: 1; text-transform: uppercase; } .collection-visibility-toggle input { width: 2rem; height: 1.12rem; flex: 0 0 auto; padding: 0.13rem; } .collection-visibility-toggle input::before { width: 0.86rem; } .collection-visibility-toggle input:checked::before { transform: translateX(0.88rem); } .collection-drag-handle, .collection-icon-btn { display: grid; width: 2.2rem; height: 2.2rem; place-items: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.07); color: var(--text-secondary); font-size: 0.84rem; } .collection-drag-handle { cursor: grab; touch-action: none; user-select: none; } .collection-drag-handle svg { display: block; width: 0.75rem; height: 1.125rem; fill: currentColor; opacity: 0.78; } .collection-icon-btn .trash-can-icon { width: 0.95rem; height: 0.95rem; opacity: 0.82; } .collection-drag-handle:active { cursor: grabbing; } .collection-drag-handle:hover, .collection-icon-btn:hover { background: rgba(255, 255, 255, 0.14); color: var(--text-primary); } .collection-item-body { padding: 0 0.75rem 0.85rem; } input, textarea, select { width: 100%; border: 0; border-radius: 1rem; background: var(--field); color: var(--text-primary); padding: 0.75rem 0.85rem; } input:focus, textarea:focus, select:focus { background: rgba(255, 255, 255, 0.1); box-shadow: none; } textarea { min-height: 8rem; resize: vertical; } select { appearance: none; } .toggle-row { justify-content: flex-start; gap: 0.65rem; color: var(--text-secondary); font-size: 0.82rem; font-weight: 800; } .toggle-row input { width: 2.7rem; height: 1.45rem; margin: 0; appearance: none; border-radius: 999px; background: rgba(255, 255, 255, 0.14); padding: 0.18rem; } .toggle-row input::before { display: block; width: 1.08rem; aspect-ratio: 1; border-radius: 50%; background: rgba(255, 255, 255, 0.82); content: ""; transition: transform 0.16s ease; } .toggle-row input:checked { background: rgba(255, 255, 255, 0.92); } .toggle-row input:checked::before { background: #050506; transform: translateX(1.22rem); } .empty-note { color: var(--text-muted); font-size: 0.86rem; font-weight: 650; line-height: 1.42; } .editor-error-note { border-radius: var(--launcher-radius-control); background: rgba(255, 116, 116, 0.09); color: #ffd8d8; padding: 1rem; } .service-media-field { min-width: 0; } .service-media-control { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; min-height: 3.35rem; gap: 0.22rem; overflow: hidden; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.06); padding: 0.25rem; } .service-media-file-control { display: flex; min-width: 0; height: 100%; align-items: center; gap: 0.7rem; padding-left: 0.15rem; } .admin-file-picker-input, .service-media-hidden-input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; } .service-media-file-button { display: inline-flex; min-height: 2.78rem; align-items: center; justify-content: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); padding: 0 1rem; font-size: 0.78rem; font-weight: 850; text-transform: none; white-space: nowrap; cursor: pointer; } .service-media-file-button:hover { background: #fff; } .service-media-file-name { min-width: 0; overflow: hidden; color: var(--text-muted); font-size: 0.78rem; font-weight: 650; text-overflow: ellipsis; text-transform: none; white-space: nowrap; } .service-media-url-input { min-width: 0; height: 100%; border-radius: var(--launcher-radius-circle); background: transparent; padding: 0 0.82rem; } .service-media-source-switch { display: inline-flex; align-items: center; gap: 0.12rem; } .service-media-source-button { display: grid; width: 2.78rem; height: 2.78rem; place-items: center; border: 1px solid rgba(255, 255, 255, 0.18); border-radius: var(--launcher-radius-circle); background: transparent; color: rgba(255, 255, 255, 0.66); } .service-media-source-button:hover { background: rgba(255, 255, 255, 0.07); color: var(--text-primary); } .service-media-source-button[data-active="true"] { border-color: rgba(255, 255, 255, 0.92); background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .service-media-preview { position: relative; display: grid; width: 2.78rem; min-width: 2.78rem; height: 2.78rem; place-items: center; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.16); border-radius: var(--launcher-radius-circle); background: linear-gradient(45deg, rgba(255, 255, 255, 0.18) 25%, transparent 25% 75%, rgba(255, 255, 255, 0.18) 75%), linear-gradient(45deg, rgba(255, 255, 255, 0.18) 25%, transparent 25% 75%, rgba(255, 255, 255, 0.18) 75%), rgba(18, 18, 20, 0.92); background-position: 0 0, 6px 6px, 0 0; background-size: 12px 12px, 12px 12px, auto; color: rgba(255, 255, 255, 0.62); font-size: 0.78rem; text-transform: none; } .service-media-preview img { position: absolute; inset: 0.28rem; display: block; width: calc(100% - 0.56rem); height: calc(100% - 0.56rem); border-radius: inherit; object-fit: contain; } .service-media-preview video { position: absolute; inset: 0; display: block; width: 100%; height: 100%; border-radius: inherit; object-fit: cover; } .service-media-preview.is-solid-dark { border-color: rgba(255, 255, 255, 0.34); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08), 0 0 0 1px rgba(255, 255, 255, 0.08); } .media-upload-hint { font-size: 0.72rem; font-weight: 720; line-height: 1.32; text-transform: none; } .media-upload-hint:empty { display: none; } .media-upload-hint:not(:empty) { color: rgba(255, 228, 170, 0.9); } .media-upload-error { color: #ffd2d2; font-size: 0.72rem; font-weight: 750; text-transform: none; } .json-details { padding: 1rem; } .json-details summary { cursor: pointer; color: var(--text-secondary); font-size: 0.86rem; font-weight: 800; } .json-field { display: grid; gap: 0.7rem; margin-top: 1rem; color: var(--text-muted); font-size: 0.82rem; font-weight: 720; } .json-field textarea { min-height: 24rem; font-family: "SFMono-Regular", Consolas, monospace; font-size: 0.8rem; line-height: 1.45; } .knowledge-editor { display: grid; min-height: 0; overflow: auto; gap: 1rem; padding: 0 0.2rem 5rem; scrollbar-color: rgba(255, 255, 255, 0.25) transparent; } .project-settings-editor { display: grid; min-height: 0; overflow: auto; gap: 1rem; padding: 0 0.2rem 5rem; scrollbar-color: rgba(255, 255, 255, 0.25) transparent; } .project-settings-hint { margin: 0; max-width: 58rem; color: var(--text-muted); font-size: 0.85rem; line-height: 1.45; } .project-settings-actions { display: flex; flex-wrap: wrap; gap: 0.65rem; justify-content: flex-end; } .project-settings-runtime { display: grid; gap: 0.45rem; color: var(--text-muted); font-size: 0.76rem; line-height: 1.35; } .project-settings-runtime code { display: inline-block; max-width: 100%; overflow: hidden; padding: 0.18rem 0.38rem; border-radius: 0.42rem; background: rgba(255, 255, 255, 0.06); color: rgba(255, 255, 255, 0.76); text-overflow: ellipsis; vertical-align: bottom; } .publish-progress-card { display: grid; gap: 0.9rem; } .publish-progress-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; } .publish-progress-head h3 { font-size: 1rem; line-height: 1.2; } .publish-progress-head strong { color: var(--text-primary); font-size: 1.25rem; line-height: 1; } .publish-progress-track { position: relative; height: 0.65rem; overflow: hidden; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.09); } .publish-progress-track span { display: block; width: 0; height: 100%; border-radius: inherit; background: rgba(255, 255, 255, 0.9); transition: width 180ms linear; } .publish-progress-card[data-state="failed"] .publish-progress-track span { background: rgba(255, 120, 120, 0.86); } .publish-progress-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.65rem; color: var(--text-muted); font-size: 0.75rem; font-weight: 720; } .publish-progress-current, .publish-progress-error { min-width: 0; overflow: hidden; color: var(--text-muted); font-size: 0.76rem; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; } .publish-progress-error { color: #ffd2d2; white-space: normal; } @media (max-width: 760px) { .publish-progress-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } } .knowledge-tree { display: grid; gap: 0.28rem; padding-inline: 0.35rem; } .knowledge-tree-item, .knowledge-tree-children { display: grid; gap: 0.22rem; } .knowledge-tree-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; min-height: 3.1rem; align-items: center; gap: 0.28rem; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.035); padding: 0.24rem 0.34rem 0.24rem calc(0.34rem + (var(--depth, 0) * 0.82rem)); opacity: 0.86; } .knowledge-tree-row[data-active="true"] { background: rgba(255, 255, 255, 0.14); opacity: 1; } .knowledge-tree-row[data-disabled="true"] { opacity: 0.42; } .knowledge-tree-select { display: grid; grid-template-columns: 2.2rem minmax(0, 1fr); min-width: 0; min-height: 2.55rem; align-items: center; gap: 0.5rem; border-radius: var(--launcher-radius-circle); background: transparent; color: var(--text-secondary); padding: 0; text-align: left; } .knowledge-tree-icon { display: grid; width: 2.2rem; height: 2.2rem; place-items: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.055); color: var(--text-muted); font-size: 0.72rem; font-weight: 850; } .knowledge-tree-copy { display: grid; min-width: 0; gap: 0.1rem; } .knowledge-tree-title, .knowledge-tree-meta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .knowledge-tree-title { color: var(--text-primary); font-size: 0.82rem; font-weight: 850; } .knowledge-tree-meta { color: var(--text-muted); font-size: 0.68rem; font-weight: 720; } .knowledge-tree-actions { display: inline-flex; gap: 0.18rem; opacity: 0; transition: opacity 160ms ease; } .knowledge-tree-row:hover .knowledge-tree-actions, .knowledge-tree-row[data-active="true"] .knowledge-tree-actions { opacity: 1; } .knowledge-tree-action { display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.07); color: var(--text-secondary); padding: 0; font-size: 0.82rem; } .knowledge-tree-action:hover { background: rgba(255, 255, 255, 0.14); color: var(--text-primary); } .knowledge-tree-action .trash-can-icon { width: 0.92rem; height: 0.92rem; } .knowledge-empty-tree { margin-inline: calc(var(--admin-nav-pad) + 0.35rem); } .knowledge-rich-panel { gap: 0.8rem; } .knowledge-rich-toolbar { display: flex; flex-wrap: wrap; gap: 0.35rem; } .knowledge-rich-toolbar button { min-height: 2.15rem; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.075); color: var(--text-secondary); padding: 0 0.72rem; font-size: 0.72rem; font-weight: 850; } .knowledge-rich-toolbar button:hover { background: rgba(255, 255, 255, 0.14); color: var(--text-primary); } .knowledge-rich-editor { min-height: 28rem; overflow: auto; border-radius: var(--launcher-radius-card); background: rgba(255, 255, 255, 0.04); color: var(--text-secondary); padding: 1.1rem; font-size: 1rem; line-height: 1.55; outline: none; } .knowledge-rich-editor:focus { background: rgba(255, 255, 255, 0.06); } .knowledge-rich-editor h2, .knowledge-rich-editor h3, .knowledge-rich-editor strong { color: var(--text-primary); } .knowledge-rich-editor h2 { margin: 1.4rem 0 0.6rem; font-size: 1.85rem; line-height: 1.1; } .knowledge-rich-editor h3 { margin: 1.2rem 0 0.55rem; font-size: 1.25rem; } .knowledge-rich-editor p { margin: 0 0 1rem; } .knowledge-rich-editor img { display: block; max-width: 100%; height: auto; border-radius: 0.65rem; margin: 1rem 0; } .knowledge-rich-editor .knowledge-button { display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center; border-radius: 999px; background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); padding: 0 1.25rem; font-size: 0.88rem; font-weight: 850; text-decoration: none; } .status { min-height: 1.25rem; margin: 0.8rem 0.35rem 0; overflow: hidden; font-size: 0.78rem; font-weight: 650; line-height: 1.35; text-overflow: ellipsis; white-space: pre-wrap; } .template-modal-layer { position: fixed; z-index: 200; inset: 0; display: grid; place-items: center; background: rgba(0, 0, 0, 0.38); padding: 1.4rem; backdrop-filter: blur(22px) saturate(1.08); -webkit-backdrop-filter: blur(22px) saturate(1.08); } .template-modal { position: relative; display: grid; width: min(58rem, calc(100vw - 2.8rem)); max-height: min(46rem, calc(100vh - 2.8rem)); overflow: hidden; border: 1px solid var(--nodedc-glass-outline); border-radius: var(--launcher-radius-modal); background: var(--nodedc-glass-panel-surface-strong); box-shadow: var(--nodedc-glass-panel-shadow), 0 46px 140px rgba(0, 0, 0, 0.62); backdrop-filter: var(--nodedc-glass-filter); -webkit-backdrop-filter: var(--nodedc-glass-filter); } .template-modal::before { position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(circle at 22% 0%, rgba(255, 255, 255, 0.14), transparent 32%), linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.01)); content: ""; pointer-events: none; } .template-modal > * { position: relative; z-index: 1; } .template-modal-head, .template-modal-foot { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.25rem; } .template-modal-head { padding-right: 4.5rem; } .template-modal-head h2 { font-size: 1.18rem; line-height: 1.1; } .template-modal-head p { margin-top: 0.4rem; color: var(--text-muted); font-size: 0.82rem; font-weight: 650; line-height: 1.38; } .modal-close-button { top: 1.05rem; right: 1.05rem; } .template-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; min-height: 0; overflow: auto; padding: 0 1.25rem 1.25rem; } .template-card { display: grid; grid-template-columns: var(--admin-control-ring) minmax(0, 1fr); align-items: center; gap: 0.86rem; min-height: 4.8rem; border-radius: var(--launcher-radius-card); background: rgba(255, 255, 255, 0.055); padding: 0.7rem; color: var(--text-secondary); text-align: left; } .template-card:hover { background: rgba(255, 255, 255, 0.095); color: var(--text-primary); transform: translateY(-1px); } .template-card-icon { display: grid; width: var(--admin-control-ring); height: var(--admin-control-ring); place-items: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); font-size: 0.72rem; font-weight: 850; } .template-card-copy { display: grid; min-width: 0; gap: 0.18rem; } .template-card-title { overflow: hidden; font-size: 0.9rem; font-weight: 820; text-overflow: ellipsis; white-space: nowrap; } .template-card-meta, .template-card-region { overflow: hidden; color: var(--text-muted); font-size: 0.72rem; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; } .template-modal-foot { justify-content: flex-start; padding-top: 0; } .delete-modal-layer { z-index: 240; } .delete-modal { width: min(30rem, calc(100vw - 2.8rem)); } .delete-modal-head { padding-right: 1.25rem; } .delete-modal-foot { justify-content: flex-end; } .delete-confirm-btn { min-width: 4.4rem; background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .delete-confirm-btn:hover { background: #fff; color: rgba(8, 8, 10, 1); } .media-modal-layer { z-index: 230; } .media-modal { width: min(82rem, calc(100vw - 2.8rem)); height: min(52rem, calc(100vh - 2.8rem)); grid-template-rows: auto auto minmax(0, 1fr) auto; } .media-modal-head { padding-bottom: 0.85rem; } .media-modal-actions { position: absolute; top: 1.05rem; right: 1.05rem; display: flex; align-items: center; gap: 0.5rem; } .media-site-size { display: inline-flex; min-height: 2.8rem; align-items: center; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.045); color: var(--text-muted); padding: 0 0.9rem; font-size: 0.68rem; font-weight: 850; letter-spacing: 0.04em; text-transform: uppercase; white-space: nowrap; } .media-header-action { position: static; } .media-header-action svg, .media-delete-btn svg { width: 1.05rem; height: 1.05rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.65; } .media-trash-toggle[data-active="true"] { border-color: rgba(255, 255, 255, 0.92); background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .media-toolbar { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(15rem, 1fr) auto auto auto; gap: 0.7rem; align-items: end; padding: 0 1.25rem 1rem; } .media-search { display: grid; gap: 0.38rem; color: var(--text-muted); font-size: 0.68rem; font-weight: 850; letter-spacing: 0.04em; text-transform: uppercase; } .media-search input { min-height: var(--nodedc-shell-control-height); border-radius: var(--launcher-radius-circle); padding-inline: 1rem; } .media-filter-row { display: inline-flex; max-width: 24rem; align-items: center; gap: 0.25rem; overflow-x: auto; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.055); padding: 0.24rem; scrollbar-width: none; } .media-filter-row::-webkit-scrollbar { display: none; } .media-filter-button { display: inline-flex; min-height: 2.3rem; align-items: center; justify-content: center; border-radius: var(--launcher-radius-circle); background: transparent; color: var(--text-muted); padding: 0 0.78rem; font-size: 0.72rem; font-weight: 850; white-space: nowrap; } .media-filter-button:disabled { opacity: 0.45; pointer-events: none; } .media-filter-button:hover { background: rgba(255, 255, 255, 0.07); color: var(--text-primary); } .media-filter-button[data-active="true"] { background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .media-upload-btn { white-space: nowrap; } .media-browser { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1fr) minmax(19rem, 0.32fr); gap: 1rem; min-height: 0; padding: 0 1.25rem 1rem; } .media-browser[data-drag-active="true"]::after { position: absolute; inset: 0 1.25rem 1rem; display: grid; place-items: center; border: 1px dashed rgba(255, 255, 255, 0.38); border-radius: var(--launcher-radius-card); background: rgba(8, 8, 10, 0.72); color: var(--text-primary); content: "Отпустите файл, чтобы загрузить"; font-size: 1rem; font-weight: 850; pointer-events: none; } .media-main, .media-preview-panel { min-width: 0; min-height: 0; border-radius: var(--launcher-radius-card); background: rgba(255, 255, 255, 0.04); } .media-main { position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; } .media-breadcrumbs { display: flex; min-width: 0; align-items: center; gap: 0.25rem; overflow-x: auto; border-bottom: 1px solid rgba(255, 255, 255, 0.06); padding: 0.62rem 0.78rem; scrollbar-width: none; } .media-breadcrumbs::-webkit-scrollbar { display: none; } .media-breadcrumb-button { display: inline-flex; min-height: 2rem; align-items: center; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.06); color: var(--text-muted); padding: 0 0.68rem; font-size: 0.7rem; font-weight: 850; white-space: nowrap; } .media-breadcrumb-button::after { margin-left: 0.5rem; color: rgba(255, 255, 255, 0.28); content: "›"; } .media-breadcrumb-button[data-active="true"] { background: rgba(255, 255, 255, 0.92); color: rgba(8, 8, 10, 0.96); } .media-breadcrumb-button[data-active="true"]::after { content: ""; margin: 0; } .media-columns { display: flex; min-height: 0; overflow: auto; padding: 0.72rem; scroll-padding-inline: 0.72rem; } .media-column { display: grid; grid-template-rows: auto minmax(0, 1fr); width: clamp(14rem, 24vw, 19rem); min-width: clamp(14rem, 24vw, 19rem); min-height: 0; overflow: hidden; border-right: 1px solid rgba(255, 255, 255, 0.06); padding-right: 0.62rem; margin-right: 0.62rem; } .media-column:last-child { border-right: 0; margin-right: 0; } .media-column-head { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 0.65rem; padding: 0.18rem 0.1rem 0.58rem; } .media-column-title { overflow: hidden; color: var(--text-primary); font-size: 0.78rem; font-weight: 850; text-overflow: ellipsis; white-space: nowrap; } .media-column-count { display: inline-grid; min-width: 1.65rem; height: 1.65rem; place-items: center; border-radius: 999px; background: rgba(255, 255, 255, 0.07); color: var(--text-muted); font-size: 0.68rem; font-weight: 850; } .media-column-list { display: grid; align-content: start; gap: 0.22rem; min-height: 0; overflow: auto; padding-right: 0.12rem; padding-bottom: 0.45rem; scroll-padding-block: 0.5rem; scrollbar-width: thin; } .media-column-list[data-drop-active="true"] { border-radius: var(--launcher-radius-control); outline: 1px solid rgba(255, 255, 255, 0.34); outline-offset: -1px; } .media-column-empty { color: var(--text-muted); font-size: 0.76rem; font-weight: 720; padding: 0.8rem 0.25rem; } .media-empty { position: absolute; inset: 0; display: grid; place-items: center; color: var(--text-muted); font-size: 0.92rem; font-weight: 720; } .media-entry { display: grid; grid-template-columns: 3rem minmax(0, 1fr) auto auto; min-width: 0; min-height: 3.35rem; align-items: center; gap: 0.58rem; border: 0; border-radius: var(--launcher-radius-control); background: rgba(255, 255, 255, 0.038); padding: 0.28rem 0.5rem 0.28rem 0.28rem; color: var(--text-secondary); text-align: left; } .media-entry:hover { background: rgba(255, 255, 255, 0.075); color: var(--text-primary); } .media-entry[data-active="true"] { background: rgba(255, 255, 255, 0.14); color: var(--text-primary); } .media-entry[data-dragging="true"] { opacity: 0.48; } .media-entry[data-drop-active="true"] { background: rgba(255, 255, 255, 0.16); outline: 1px solid rgba(255, 255, 255, 0.38); outline-offset: -1px; } .media-entry-icon { display: grid; width: 3rem; height: 3rem; place-items: center; border-radius: 0.82rem; background: rgba(255, 255, 255, 0.07); color: rgba(255, 255, 255, 0.52); font-size: 0.64rem; font-weight: 850; overflow: hidden; } .media-entry[data-type="directory"] .media-entry-icon { background: rgba(255, 255, 255, 0.12); color: rgba(255, 255, 255, 0.76); } .media-entry-icon.is-preview { background: rgba(255, 255, 255, 0.1); } .media-entry-icon.is-preview img, .media-entry-icon.is-preview video { display: block; width: 100%; height: 100%; object-fit: cover; } .media-entry-copy { display: grid; min-width: 0; gap: 0.1rem; } .media-entry-name, .media-entry-meta { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .media-entry-name { color: var(--text-primary); font-size: 0.78rem; font-weight: 820; } .media-entry-meta { color: var(--text-muted); font-size: 0.64rem; font-weight: 680; } .media-entry-status { position: static; flex: 0 0 auto; } .media-entry-arrow { color: var(--text-muted); font-size: 1.25rem; line-height: 1; } .media-preview img, .media-preview video { display: block; width: 100%; height: 100%; object-fit: contain; } .media-preview video { object-fit: cover; } .media-status-dot, .media-usage-dot { display: block; width: 0.58rem; height: 0.58rem; border-radius: 50%; background: rgba(255, 255, 255, 0.36); box-shadow: 0 0 0 0.22rem rgba(255, 255, 255, 0.06); } .media-status-dot { position: absolute; top: 0.48rem; right: 0.48rem; } .media-status-dot.media-entry-status { position: static; top: auto; right: auto; } .media-status-dot[data-status="rendered"], .media-usage-pill[data-status="rendered"] .media-usage-dot { background: #58d77a; box-shadow: 0 0 0 0.22rem rgba(88, 215, 122, 0.16); } .media-status-dot[data-status="referenced"], .media-usage-pill[data-status="referenced"] .media-usage-dot { background: #ffd36a; box-shadow: 0 0 0 0.22rem rgba(255, 211, 106, 0.16); } .media-status-dot[data-status="unused"], .media-usage-pill[data-status="unused"] .media-usage-dot { background: rgba(255, 255, 255, 0.34); } .media-status-dot[data-status="trash"], .media-usage-pill[data-status="trash"] .media-usage-dot { background: #8aa4ff; box-shadow: 0 0 0 0.22rem rgba(138, 164, 255, 0.16); } .media-preview-name, .media-preview-path, .media-preview-meta { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .media-preview-panel { position: relative; display: grid; grid-template-rows: auto auto auto 1fr; align-content: stretch; gap: 0.9rem; padding: 0.8rem; padding-bottom: calc(var(--nodedc-shell-control-height) + 1rem); } .media-preview { display: grid; aspect-ratio: 1.25; width: 100%; place-items: center; overflow: hidden; border-radius: var(--launcher-radius-control); background: rgba(255, 255, 255, 0.05); color: var(--text-muted); font-size: 0.86rem; font-weight: 850; } .media-preview-copy { display: grid; gap: 0.22rem; min-width: 0; } .media-preview-name { color: var(--text-primary); font-size: 0.92rem; font-weight: 850; } .media-preview-path, .media-preview-meta { color: var(--text-muted); font-size: 0.72rem; font-weight: 680; } .media-usage-pill { display: inline-flex; width: fit-content; max-width: 100%; align-items: center; gap: 0.48rem; border-radius: var(--launcher-radius-circle); background: rgba(255, 255, 255, 0.07); color: var(--text-secondary); padding: 0.48rem 0.68rem; font-size: 0.72rem; font-weight: 850; } .media-preview-actions { display: flex; align-items: end; gap: 0.55rem; align-self: end; flex-wrap: wrap; padding-right: calc(var(--admin-control-ring) + 0.65rem); } .media-delete-btn { position: absolute; right: 0.8rem; bottom: 0.8rem; display: inline-grid; width: var(--admin-control-ring); min-width: var(--admin-control-ring); height: var(--admin-control-ring); place-items: center; border: 1px solid rgba(255, 255, 255, 0.22); border-radius: var(--launcher-radius-circle); background: transparent; color: rgba(255, 255, 255, 0.8); padding: 0; line-height: 1; } .media-delete-btn:hover { border-color: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.07); color: var(--text-primary); } .media-delete-btn:disabled { display: none; } .media-context-menu { position: fixed; z-index: 320; display: grid; min-width: 12rem; overflow: hidden; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: var(--launcher-radius-control); background: rgba(34, 34, 38, 0.94); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.42); padding: 0.35rem; backdrop-filter: blur(22px) saturate(1.15); -webkit-backdrop-filter: blur(22px) saturate(1.15); } .media-context-menu.hidden { display: none; } .media-context-menu button { display: flex; min-height: 2.25rem; align-items: center; border-radius: calc(var(--launcher-radius-control) - 0.18rem); background: transparent; color: var(--text-secondary); padding: 0 0.72rem; font-size: 0.76rem; font-weight: 780; text-align: left; } .media-context-menu button:hover { background: rgba(255, 255, 255, 0.09); color: var(--text-primary); } .media-context-menu button:disabled { opacity: 0.38; pointer-events: none; } .media-action-modal-layer { z-index: 300; } .media-action-modal { width: min(28rem, calc(100vw - 2.8rem)); } .knowledge-button-modal-layer { z-index: 300; } .knowledge-button-modal { width: min(34rem, calc(100vw - 2.8rem)); } .media-action-head { padding-right: 1.25rem; } .knowledge-button-head { padding-right: 4.5rem; } .media-action-body { padding: 0 1.25rem 1.25rem; } .knowledge-button-body { display: grid; gap: 0.9rem; padding: 0 1.25rem 1.25rem; } .knowledge-button-hint, .knowledge-button-error { margin: 0; font-size: 0.78rem; font-weight: 650; line-height: 1.4; } .knowledge-button-hint { color: var(--text-muted); } .knowledge-button-error { min-height: 1.1rem; color: rgba(255, 123, 108, 0.95); } .media-action-foot { justify-content: flex-end; } .knowledge-button-foot { justify-content: flex-end; } .media-modal-foot { justify-content: space-between; } @media (max-width: 1100px) { body { overflow: auto; } .nodedc-expanded-toolbar-top { grid-template-columns: 1fr; justify-items: center; } .nodedc-expanded-toolbar-center { width: 100%; justify-content: flex-start; justify-self: stretch; overflow-x: auto; } .nodedc-expanded-nav-group { max-width: 100%; overflow-x: auto; } .nodedc-expanded-toolbar-left, .nodedc-expanded-toolbar-right { display: none; } .admin-shell { grid-template-columns: 1fr; width: min(100vw - 1.5rem, 58rem); height: auto; min-height: calc(100vh - 6rem); } .sidebar { max-height: 38vh; } .editor { min-height: 62vh; } .editor-head { align-items: flex-start; flex-direction: column; } .actions { justify-content: flex-start; } .template-list { grid-template-columns: 1fr; } .media-toolbar { grid-template-columns: 1fr; align-items: stretch; } .media-filter-row { max-width: 100%; } .media-browser { grid-template-columns: 1fr; } .seo-metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .media-preview-panel { grid-template-columns: 9rem minmax(0, 1fr); grid-template-rows: auto auto; } .media-preview-actions, .media-usage-pill { grid-column: 2; } } @media (max-width: 720px) { .nodedc-expanded-toolbar-shell { width: 100%; padding-inline: 0.75rem; } .nodedc-expanded-toolbar-center { display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: 0.55rem; overflow: visible; } .nodedc-expanded-nav-group { display: grid; width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; } .nodedc-expanded-nav-button { min-width: 0; padding: 0.2rem 0.45rem; font-size: 0.66rem; } .admin-shell { width: 100vw; min-height: calc(100vh - 5.25rem); margin: 0; gap: 0.75rem; padding: 0 0.75rem 0.75rem; } .field-grid, .group-grid, .seo-metric-grid { grid-template-columns: 1fr; } .panel-head, .card-head, .group-head { align-items: flex-start; flex-direction: column; } .structure-head { align-items: flex-start; } .icon-action-row { justify-content: flex-start; } .panel-note { text-align: left; } .service-media-control { grid-template-columns: minmax(0, 1fr) auto; } .service-media-preview { display: none; } .media-modal { width: 100vw; height: 100vh; max-height: 100vh; border-radius: 0; } .media-columns { padding: 0.55rem; } .media-preview-panel { grid-template-columns: 1fr; } .media-preview-actions, .media-usage-pill { grid-column: auto; } } @media (max-width: 480px) { .nodedc-expanded-toolbar-center { grid-template-columns: 1fr; } .nodedc-expanded-workspace-button { display: none; } .nodedc-expanded-nav-button { padding-inline: 0.24rem; font-size: 0.61rem; } }