/* =========================================== Config Page - Carbon Design System =========================================== */ /* Layout Container */ .config-layout { display: grid; grid-template-columns: 1fr; gap: 0; height: calc(100vh - var(--shell-topbar-height, 52px)); margin: -12px -14px -24px; border-radius: 0; border: none; border-top: 1px solid var(--border); background: var(--panel); overflow: hidden; /* fallback for older browsers */ overflow: clip; } /* Mobile: adjust margins to match mobile .content padding (4px 4px 16px) */ @media (max-width: 600px) { .config-layout { margin: 0; /* safest: no negative margin cancellation on mobile */ } } /* Small mobile: even smaller padding */ @media (max-width: 400px) { .config-layout { margin: 0; } } /* =========================================== Sidebar =========================================== */ .config-sidebar { display: flex; flex-direction: column; background: var(--bg-accent); border-right: 1px solid var(--border); min-height: 0; overflow: hidden; } .config-sidebar__header { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; min-height: 55px; border-bottom: 1px solid var(--border); } .config-sidebar__title { font-weight: 600; font-size: 15px; letter-spacing: -0.01em; } .config-sidebar__header-right { display: flex; align-items: center; gap: 8px; } .config-sidebar__collapse-btn { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border: none; border-radius: var(--radius-md); background: transparent; color: var(--muted); cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease; } .config-sidebar__collapse-btn svg { width: 16px; height: 16px; flex-shrink: 0; } .config-sidebar__collapse-btn:hover { background: var(--bg-hover); color: var(--text); } .config-sidebar__version { padding: 8px 18px; border-top: 1px solid var(--border); text-align: center; } .config-sidebar__version-text { font-size: 11px; font-weight: 500; color: var(--muted); font-family: var(--mono); letter-spacing: 0.01em; } .config-sidebar__footer { margin-top: auto; padding: 14px; border-top: 1px solid var(--border); } /* Search */ .config-search { position: relative; padding: 14px; min-height: 70px; border-bottom: 1px solid var(--border); } .config-search__icon { position: absolute; left: 28px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--muted); pointer-events: none; } .config-search__input { width: 100%; padding: 11px 36px 11px 42px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg-elevated); font-size: 14px; outline: none; transition: border-color var(--duration-fast) ease, box-shadow var(--duration-fast) ease, background var(--duration-fast) ease; } .config-search__input::placeholder { color: var(--muted); } .config-search__input:focus { border-color: var(--accent); box-shadow: var(--focus-ring); background: var(--bg-hover); } .config-search__clear { position: absolute; right: 22px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; border: none; border-radius: var(--radius-full); background: var(--bg-hover); color: var(--muted); font-size: 14px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background var(--duration-fast) ease, color var(--duration-fast) ease; } .config-search__clear:hover { background: var(--border-strong); color: var(--text); } /* Navigation */ .config-nav { flex: 1; overflow-y: auto; padding: 10px; } .config-nav__item { display: flex; align-items: center; gap: 12px; width: 100%; padding: 11px 14px; border: none; border-radius: var(--radius-md); background: transparent; color: var(--muted); font-size: 14px; font-weight: 500; text-align: left; cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease; } .config-nav__item:hover { background: var(--bg-hover); color: var(--text); } .config-nav__item.active { background: var(--accent-subtle); color: var(--accent); } .config-nav__icon { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 15px; opacity: 0.7; } .config-nav__item:hover .config-nav__icon, .config-nav__item.active .config-nav__icon { opacity: 1; } .config-nav__icon svg { width: 18px; height: 18px; stroke: currentColor; fill: none; } .config-nav__label { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Category groups */ .config-nav__category { margin-top: 4px; } .config-nav__category:first-of-type { margin-top: 2px; } .config-nav__category-header { display: flex; align-items: center; gap: 6px; width: 100%; padding: 6px 14px; border: none; background: color-mix(in srgb, var(--panel) 50%, transparent); color: var(--muted); font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; text-align: left; cursor: pointer; user-select: none; transition: color var(--duration-fast) ease, background var(--duration-fast) ease; } .config-nav__category-header:hover { color: var(--text); background: color-mix(in srgb, var(--panel) 75%, transparent); } .config-nav__category-chevron { width: 12px; height: 12px; flex-shrink: 0; transition: transform var(--duration-fast) ease; } .config-nav__category.collapsed .config-nav__category-chevron { transform: rotate(-90deg); } .config-nav__category.collapsed .config-nav__category-items { display: none; } /* Mode Toggle */ .config-mode-toggle { display: flex; padding: 4px; background: var(--bg-elevated); border-radius: var(--radius-md); border: 1px solid var(--border); } .config-mode-toggle__btn { flex: 1; padding: 9px 14px; border: none; border-radius: var(--radius-sm); background: transparent; color: var(--muted); font-size: 12px; font-weight: 600; cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease, box-shadow var(--duration-fast) ease; } .config-mode-toggle__btn:hover { color: var(--text); } .config-mode-toggle__btn.active { background: var(--accent); color: var(--accent-foreground); box-shadow: var(--shadow-sm); } /* =========================================== Main Content =========================================== */ .config-main { display: flex; flex-direction: column; min-height: 0; min-width: 0; background: var(--panel); overflow: hidden; /* fallback for older browsers */ overflow: clip; } /* Actions Bar */ .config-actions { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 22px; min-height: 55px; background: var(--bg-accent); border-bottom: 1px solid var(--border); flex-shrink: 0; position: relative; z-index: 2; } .config-actions__left, .config-actions__right { display: flex; align-items: center; gap: 10px; } .config-top-tabs { display: flex; align-items: center; gap: 14px; padding: 10px 22px; background: var(--bg-accent); border-bottom: 1px solid var(--border); min-height: 56px; } .config-top-tabs__scroller { display: flex; gap: 16px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; flex: 1; min-width: 0; } .config-top-tabs__scroller::-webkit-scrollbar { display: none; } .config-top-tabs__tab { border: none; background: transparent; cursor: pointer; color: var(--muted); font-size: 13px; font-weight: 600; padding: 10px 2px; border-bottom: 2px solid transparent; white-space: nowrap; transition: color var(--duration-fast) ease, border-color var(--duration-fast) ease; } .config-top-tabs__tab:hover { color: var(--text); } .config-top-tabs__tab.active { color: var(--text-strong); border-bottom-color: var(--accent); } .config-top-tabs__right { display: flex; align-items: center; gap: 12px; flex-shrink: 0; } .config-top-tabs__version { font-size: 11px; font-weight: 500; color: var(--muted); font-family: var(--mono); letter-spacing: 0.01em; white-space: nowrap; } .config-search--top { padding: 0; min-height: 0; border-bottom: none; width: min(360px, 42vw); flex: 0 0 auto; } .config-search--top .config-search__icon { left: 14px; } .config-search--top .config-search__input { padding: 9px 34px 9px 38px; font-size: 12px; font-weight: 600; cursor: text; background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius-md); } .config-search--top .config-search__input:focus-visible { outline: none; border-color: var(--ring); box-shadow: var(--focus-ring); } .config-search--top .config-search__clear { right: 10px; } .config-changes-badge { padding: 6px 14px; border-radius: var(--radius-full); background: var(--accent-subtle); border: 1px solid color-mix(in srgb, var(--danger) 30%, transparent); color: var(--accent); font-size: 12px; font-weight: 600; } .config-status { font-size: 13px; color: var(--muted); } /* Validity Warning */ .config-validity-warning { display: flex; align-items: center; gap: 10px; margin: 0; padding: 10px 22px; background: color-mix(in srgb, var(--warning, #f59e0b) 12%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--warning, #f59e0b) 30%, transparent); color: var(--warning, #f59e0b); font-size: 13px; font-weight: 500; } .config-validity-warning__icon { flex-shrink: 0; } .config-validity-warning__text { flex: 1; } /* Diff Panel */ .config-diff { margin: 18px 22px 0; border: 1px solid color-mix(in srgb, var(--danger) 25%, transparent); border-radius: var(--radius-lg); background: var(--accent-subtle); overflow: hidden; } .config-diff__summary { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; cursor: pointer; font-size: 13px; font-weight: 600; color: var(--accent); list-style: none; } .config-diff__summary::-webkit-details-marker { display: none; } .config-diff__chevron { width: 16px; height: 16px; transition: transform var(--duration-normal) var(--ease-out); } .config-diff__chevron svg { width: 100%; height: 100%; } .config-diff[open] .config-diff__chevron { transform: rotate(180deg); } .config-diff__content { padding: 0 18px 18px; display: grid; gap: 10px; } .config-diff__item { display: flex; align-items: baseline; gap: 14px; padding: 10px 14px; border-radius: var(--radius-md); background: var(--bg-elevated); font-size: 12px; font-family: var(--mono); } .config-diff__path { font-weight: 600; color: var(--text); flex-shrink: 0; } .config-diff__values { display: flex; align-items: baseline; gap: 10px; min-width: 0; flex-wrap: wrap; } .config-diff__from { color: var(--danger); opacity: 0.85; } .config-diff__arrow { color: var(--muted); } .config-diff__to { color: var(--ok); } /* Section Hero */ .config-section-hero { display: flex; align-items: center; gap: 16px; padding: 14px 22px; min-height: 70px; border-bottom: 1px solid var(--border); background: var(--bg-accent); } .config-section-hero__icon { width: 30px; height: 30px; color: var(--accent); display: flex; align-items: center; justify-content: center; } .config-section-hero__icon svg { width: 100%; height: 100%; stroke: currentColor; fill: none; } .config-section-hero__text { display: grid; gap: 3px; min-width: 0; } .config-section-hero__title { font-size: 17px; font-weight: 600; letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .config-section-hero__desc { font-size: 14px; color: var(--muted); } /* Subsection Nav */ .config-subnav { display: flex; gap: 8px; padding: 12px 22px 14px; border-bottom: 1px solid var(--border); background: var(--bg-accent); overflow-x: auto; } .config-subnav__item { border: 1px solid transparent; border-radius: var(--radius-full); padding: 7px 14px; font-size: 12px; font-weight: 600; color: var(--muted); background: var(--bg-elevated); cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease, border-color var(--duration-fast) ease; white-space: nowrap; } .config-subnav__item:hover { color: var(--text); border-color: var(--border); } .config-subnav__item.active { color: var(--accent); border-color: rgba(255, 77, 77, 0.4); background: var(--accent-subtle); } /* Content Area */ .config-content { flex: 1; overflow-y: auto; padding: 22px; display: flex; flex-direction: column; } .config-raw-field { flex: 1; display: flex; flex-direction: column; } .config-raw-field textarea { flex: 1; font-family: var(--mono); font-size: 13px; line-height: 1.55; } /* Loading State */ .config-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: 80px 24px; color: var(--muted); } .config-loading__spinner { width: 40px; height: 40px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: var(--radius-full); animation: spin 0.75s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Empty State */ .config-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: 80px 24px; text-align: center; } .config-empty__icon { font-size: 56px; opacity: 0.35; } .config-empty__text { color: var(--muted); font-size: 15px; } /* =========================================== Section Cards =========================================== */ .config-form--modern { display: grid; gap: 26px; } .config-section-card { border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg-elevated); overflow: hidden; transition: border-color var(--duration-fast) ease; } .config-section-card:hover { border-color: var(--border-strong); } .config-section-card__header { display: flex; align-items: flex-start; gap: 16px; padding: 20px 22px; background: var(--bg-accent); border-bottom: 1px solid var(--border); } .config-section-card__icon { width: 34px; height: 34px; color: var(--accent); flex-shrink: 0; } .config-section-card__icon svg { width: 100%; height: 100%; } .config-section-card__titles { flex: 1; min-width: 0; } .config-section-card__title { margin: 0; font-size: 18px; font-weight: 600; letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .config-section-card__desc { margin: 5px 0 0; font-size: 14px; color: var(--muted); line-height: 1.45; } .config-section-card__content { padding: 22px; } /* =========================================== Form Fields =========================================== */ .cfg-fields { display: grid; gap: 22px; } .cfg-field { display: grid; gap: 8px; } .cfg-field--error { padding: 14px; border-radius: var(--radius-md); background: var(--danger-subtle); border: 1px solid color-mix(in srgb, var(--danger) 30%, transparent); } .cfg-field__label { font-size: 14px; font-weight: 600; color: var(--text); } .cfg-field__help { font-size: 13px; color: var(--muted); line-height: 1.45; } .cfg-field__error { font-size: 13px; color: var(--danger); } /* Text Input */ .cfg-input-wrap { display: flex; gap: 10px; } .cfg-input { flex: 1; padding: 11px 14px; border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: var(--bg-accent); font-size: 14px; outline: none; transition: border-color var(--duration-fast) ease, box-shadow var(--duration-fast) ease, background var(--duration-fast) ease; } .cfg-input::placeholder { color: var(--muted); opacity: 0.7; } .cfg-input:focus { border-color: var(--accent); box-shadow: var(--focus-ring); background: var(--bg-hover); } .cfg-input--sm { padding: 9px 12px; font-size: 13px; } .cfg-input__reset { padding: 10px 14px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg-elevated); color: var(--muted); font-size: 14px; cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease; } .cfg-input__reset:hover:not(:disabled) { background: var(--bg-hover); color: var(--text); } .cfg-input__reset:disabled { opacity: 0.5; cursor: not-allowed; } /* Textarea */ .cfg-textarea { width: 100%; padding: 12px 14px; border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: var(--bg-accent); font-family: var(--mono); font-size: 13px; line-height: 1.55; resize: vertical; outline: none; transition: border-color var(--duration-fast) ease, box-shadow var(--duration-fast) ease; } .cfg-textarea:focus { border-color: var(--accent); box-shadow: var(--focus-ring); } .cfg-textarea--sm { padding: 10px 12px; font-size: 12px; } /* Number Input */ .cfg-number { display: inline-flex; border: 1px solid var(--border-strong); border-radius: var(--radius-md); overflow: hidden; background: var(--bg-accent); } .cfg-number__btn { width: 44px; border: none; background: var(--bg-elevated); color: var(--text); font-size: 18px; font-weight: 300; cursor: pointer; transition: background var(--duration-fast) ease; } .cfg-number__btn:hover:not(:disabled) { background: var(--bg-hover); } .cfg-number__btn:disabled { opacity: 0.4; cursor: not-allowed; } .cfg-number__input { width: 85px; padding: 11px; border: none; border-left: 1px solid var(--border); border-right: 1px solid var(--border); background: transparent; font-size: 14px; text-align: center; outline: none; -moz-appearance: textfield; } .cfg-number__input::-webkit-outer-spin-button, .cfg-number__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } /* Select */ .cfg-select { padding: 11px 40px 11px 14px; border: 1px solid var(--border-strong); border-radius: var(--radius-md); background-color: var(--bg-accent); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; font-size: 14px; cursor: pointer; outline: none; appearance: none; transition: border-color var(--duration-fast) ease, box-shadow var(--duration-fast) ease; } .cfg-select:focus { border-color: var(--accent); box-shadow: var(--focus-ring); } /* Segmented Control */ .cfg-segmented { display: inline-flex; padding: 4px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg-accent); } .cfg-segmented__btn { padding: 9px 18px; border: none; border-radius: var(--radius-sm); background: transparent; color: var(--muted); font-size: 14px; font-weight: 500; cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease, box-shadow var(--duration-fast) ease; } .cfg-segmented__btn:hover:not(:disabled):not(.active) { color: var(--text); } .cfg-segmented__btn.active { background: var(--accent); color: var(--accent-foreground); box-shadow: var(--shadow-sm); } .cfg-segmented__btn:disabled { opacity: 0.5; cursor: not-allowed; } /* Toggle Row */ .cfg-toggle-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 16px 18px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg-accent); cursor: pointer; transition: background var(--duration-fast) ease, border-color var(--duration-fast) ease; } .cfg-toggle-row:hover:not(.disabled) { background: var(--bg-hover); border-color: var(--border-strong); } .cfg-toggle-row.disabled { opacity: 0.55; cursor: not-allowed; } .cfg-toggle-row__content { flex: 1; min-width: 0; } .cfg-toggle-row__label { display: block; font-size: 15px; font-weight: 500; color: var(--text); } .cfg-toggle-row__help { display: block; margin-top: 3px; font-size: 13px; color: var(--muted); line-height: 1.45; } /* Toggle Switch */ .cfg-toggle { position: relative; flex-shrink: 0; } .cfg-toggle input { position: absolute; opacity: 0; width: 0; height: 0; } .cfg-toggle__track { display: block; width: 50px; height: 28px; background: var(--bg-elevated); border: 1px solid var(--border-strong); border-radius: var(--radius-full); position: relative; transition: background var(--duration-normal) ease, border-color var(--duration-normal) ease; } .cfg-toggle__track::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; background: var(--text); border-radius: var(--radius-full); box-shadow: var(--shadow-sm); transition: transform var(--duration-normal) var(--ease-out), background var(--duration-normal) ease; } .cfg-toggle input:checked + .cfg-toggle__track { background: var(--ok-subtle); border-color: color-mix(in srgb, var(--ok) 40%, transparent); } .cfg-toggle input:checked + .cfg-toggle__track::after { transform: translateX(22px); background: var(--ok); } .cfg-toggle input:focus + .cfg-toggle__track { box-shadow: var(--focus-ring); } /* Object (collapsible) */ .cfg-object { border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg-accent); overflow: hidden; } .cfg-object__header { display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; cursor: pointer; list-style: none; transition: background var(--duration-fast) ease; } .cfg-object__header:hover { background: var(--bg-hover); } .cfg-object__header::-webkit-details-marker { display: none; } .cfg-object__title { font-size: 14px; font-weight: 600; color: var(--text); } .cfg-object__chevron { width: 18px; height: 18px; color: var(--muted); transition: transform var(--duration-normal) var(--ease-out); } .cfg-object__chevron svg { width: 100%; height: 100%; } .cfg-object[open] .cfg-object__chevron { transform: rotate(180deg); } .cfg-object__help { padding: 0 18px 14px; font-size: 12px; color: var(--muted); border-bottom: 1px solid var(--border); } .cfg-object__content { padding: 18px; display: grid; gap: 18px; } /* Array */ .cfg-array { border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; } .cfg-array__header { display: flex; align-items: center; gap: 14px; padding: 14px 18px; background: var(--bg-accent); border-bottom: 1px solid var(--border); } .cfg-array__label { flex: 1; font-size: 14px; font-weight: 600; color: var(--text); } .cfg-array__count { font-size: 12px; color: var(--muted); padding: 4px 10px; background: var(--bg-elevated); border-radius: var(--radius-full); } .cfg-array__add { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg-elevated); color: var(--text); font-size: 12px; font-weight: 500; cursor: pointer; transition: background var(--duration-fast) ease; } .cfg-array__add:hover:not(:disabled) { background: var(--bg-hover); } .cfg-array__add:disabled { opacity: 0.5; cursor: not-allowed; } .cfg-array__add-icon { width: 14px; height: 14px; } .cfg-array__add-icon svg { width: 100%; height: 100%; } .cfg-array__help { padding: 12px 18px; font-size: 12px; color: var(--muted); border-bottom: 1px solid var(--border); } .cfg-array__empty { padding: 36px 18px; text-align: center; color: var(--muted); font-size: 13px; } .cfg-array__items { display: grid; gap: 1px; background: var(--border); } .cfg-array__item { background: var(--panel); } .cfg-array__item-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 18px; background: var(--bg-accent); border-bottom: 1px solid var(--border); } .cfg-array__item-index { font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.05em; } .cfg-array__item-remove { width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border: none; border-radius: var(--radius-md); background: transparent; color: var(--muted); cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease; } .cfg-array__item-remove svg { width: 16px; height: 16px; } .cfg-array__item-remove:hover:not(:disabled) { background: var(--danger-subtle); color: var(--danger); } .cfg-array__item-remove:disabled { opacity: 0.4; cursor: not-allowed; } .cfg-array__item-content { padding: 18px; } /* Map (custom entries) */ .cfg-map { border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; } .cfg-map__header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; background: var(--bg-accent); border-bottom: 1px solid var(--border); } .cfg-map__label { font-size: 13px; font-weight: 600; color: var(--muted); } .cfg-map__add { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg-elevated); color: var(--text); font-size: 12px; font-weight: 500; cursor: pointer; transition: background var(--duration-fast) ease; } .cfg-map__add:hover:not(:disabled) { background: var(--bg-hover); } .cfg-map__add-icon { width: 14px; height: 14px; } .cfg-map__add-icon svg { width: 100%; height: 100%; } .cfg-map__empty { padding: 28px 18px; text-align: center; color: var(--muted); font-size: 13px; } .cfg-map__items { display: grid; gap: 10px; padding: 14px; } .cfg-map__item { display: grid; grid-template-columns: 150px 1fr auto; gap: 10px; align-items: start; } .cfg-map__item-key { min-width: 0; } .cfg-map__item-value { min-width: 0; } .cfg-map__item-remove { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border: none; border-radius: var(--radius-md); background: transparent; color: var(--muted); cursor: pointer; transition: background var(--duration-fast) ease, color var(--duration-fast) ease; } .cfg-map__item-remove svg { width: 16px; height: 16px; } .cfg-map__item-remove:hover:not(:disabled) { background: var(--danger-subtle); color: var(--danger); } /* Pill variants */ .pill--sm { padding: 5px 12px; font-size: 11px; } .pill--ok { border-color: color-mix(in srgb, var(--ok) 35%, transparent); color: var(--ok); } .pill--danger { border-color: rgba(239, 68, 68, 0.35); color: var(--danger); } /* =========================================== Collapsed Sidebar =========================================== */ .config-layout--sidebar-collapsed { grid-template-columns: 48px minmax(0, 1fr); } .config-layout--sidebar-collapsed .config-sidebar__title, .config-layout--sidebar-collapsed .config-sidebar__header-right .pill, .config-layout--sidebar-collapsed .config-search, .config-layout--sidebar-collapsed .config-nav__label, .config-layout--sidebar-collapsed .config-nav__category-header, .config-layout--sidebar-collapsed .config-sidebar__footer { display: none; } .config-layout--sidebar-collapsed .config-sidebar__version { padding: 6px 4px; } .config-layout--sidebar-collapsed .config-sidebar__version-text { font-size: 10px; } .config-layout--sidebar-collapsed .config-sidebar__header { justify-content: center; padding: 10px 4px; } .config-layout--sidebar-collapsed .config-sidebar__header-right { gap: 0; } .config-layout--sidebar-collapsed .config-nav { padding: 4px; align-items: center; } .config-layout--sidebar-collapsed .config-nav__item { justify-content: center; padding: 8px; gap: 0; border-bottom: 1px solid var(--border); } .config-layout--sidebar-collapsed .config-nav__item:last-child { border-bottom: none; } .config-layout--sidebar-collapsed .config-nav__icon { width: 20px; height: 20px; } .config-layout { transition: grid-template-columns var(--duration-normal) var(--ease-out); } .config-sidebar { transition: width var(--duration-normal) var(--ease-out); } /* Mobile back button (hidden on desktop) */ .config-mobile-back { display: none; } /* =========================================== Mobile Responsiveness =========================================== */ @media (max-width: 768px) { .config-layout { grid-template-columns: 1fr; } .config-top-tabs { flex-wrap: wrap; padding: 10px 16px; gap: 10px; min-height: auto; } .config-search--top { width: 100%; } .config-actions { flex-wrap: wrap; padding: 14px 16px; } .config-actions__left, .config-actions__right { width: 100%; justify-content: center; } .config-section-hero { padding: 14px 16px; } .config-subnav { padding: 10px 16px 12px; } .config-content { padding: 18px; } .config-section-card__header { padding: 16px 18px; } .config-section-card__content { padding: 18px; } .cfg-toggle-row { padding: 14px 16px; } .cfg-map__item { grid-template-columns: 1fr; gap: 10px; } .cfg-map__item-remove { justify-self: end; } } @media (max-width: 480px) { .config-nav__icon { width: 26px; height: 26px; font-size: 17px; } .config-nav__label { display: none; } .config-section-card__icon { width: 30px; height: 30px; } .config-section-card__title { font-size: 16px; } .cfg-segmented { flex-wrap: wrap; } .cfg-segmented__btn { flex: 1 0 auto; min-width: 70px; } } /* =========================================== Environment Values Blur + Peek Toggle =========================================== */ .config-env-values--blurred .cfg-input, .config-env-values--blurred .cfg-number__input, .config-env-values--blurred textarea { color: transparent; text-shadow: 0 0 8px var(--text); } .config-env-values--blurred .cfg-input::placeholder, .config-env-values--blurred textarea::placeholder { text-shadow: none; color: var(--muted); opacity: 0.7; } .config-env-values--blurred .cfg-input:focus, .config-env-values--blurred .cfg-number__input:focus, .config-env-values--blurred textarea:focus { color: transparent; text-shadow: 0 0 8px var(--text); } .config-env-values--visible.config-env-values--blurred .cfg-input, .config-env-values--visible.config-env-values--blurred .cfg-number__input, .config-env-values--visible.config-env-values--blurred textarea { color: var(--text); text-shadow: none; } .config-env-values--visible.config-env-values--blurred .cfg-input:focus, .config-env-values--visible.config-env-values--blurred .cfg-number__input:focus, .config-env-values--visible.config-env-values--blurred textarea:focus { color: var(--text); text-shadow: none; } .config-env-peek-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: var(--radius-md); border: 1px solid var(--border); background: transparent; color: var(--muted); font-size: 13px; font-weight: 500; cursor: pointer; transition: all var(--duration-fast) ease; flex-shrink: 0; margin-left: auto; } .config-env-peek-btn:hover { color: var(--text); border-color: var(--border-strong); background: var(--bg-hover); } .config-env-peek-btn--active { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 40%, transparent); background: color-mix(in srgb, var(--accent) 8%, transparent); } .config-env-peek-btn svg { flex-shrink: 0; } /* Raw JSON redaction blur */ .config-raw-redacted { color: transparent !important; text-shadow: 0 0 8px var(--text); transition: color var(--duration-normal, 250ms) ease, text-shadow var(--duration-normal, 250ms) ease; } /* ============================ Appearance / Settings section ============================ */ .settings-appearance { display: flex; flex-direction: column; gap: 32px; padding: 8px 0; } .settings-appearance__section { display: flex; flex-direction: column; gap: 12px; } .settings-appearance__heading { font-size: 14px; font-weight: 600; color: var(--text); margin: 0; letter-spacing: 0.01em; } .settings-appearance__hint { font-size: 12px; color: var(--muted); margin: 0; line-height: 1.4; } /* Theme card grid */ .settings-theme-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .settings-theme-card { position: relative; display: flex; flex-direction: row; align-items: center; gap: 10px; padding: 10px 12px; min-height: 44px; border-radius: var(--radius-md, 10px); border: 1px solid var(--border); background: var(--panel); cursor: pointer; transition: border-color var(--duration-fast, 120ms) ease, box-shadow var(--duration-fast, 120ms) ease, transform var(--duration-fast, 120ms) ease; } .settings-theme-card:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); } .settings-theme-card--active { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 6%, var(--panel)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 25%, transparent); } .settings-theme-card__icon { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; color: var(--muted); flex: 0 0 auto; } .settings-theme-card__icon svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.7px; stroke-linecap: round; stroke-linejoin: round; } .settings-theme-card--active .settings-theme-card__icon { color: var(--accent); } .settings-theme-card__label { font-size: 13px; font-weight: 600; color: var(--text); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .settings-theme-card__desc { display: none; } .settings-theme-card__check { margin-left: auto; width: 16px; height: 16px; color: var(--accent); flex: 0 0 auto; } .settings-theme-card__check svg { width: 16px; height: 16px; } .settings-theme-card:focus-visible { outline: none; box-shadow: var(--focus-ring); } @media (max-width: 900px) { .settings-theme-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 520px) { .settings-theme-grid { grid-template-columns: 1fr; } } /* Connection info grid */ .settings-info-grid { display: flex; flex-direction: column; gap: 0; border: 1px solid var(--border); border-radius: var(--radius-md, 8px); overflow: hidden; } .settings-info-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; font-size: 13px; border-bottom: 1px solid var(--border); } .settings-info-row:last-child { border-bottom: none; } .settings-info-row__label { color: var(--muted); font-weight: 500; } .settings-info-row__value { color: var(--text); display: flex; align-items: center; gap: 6px; } .settings-info-row__value.mono { font-family: var(--font-mono, monospace); font-size: 12px; } .settings-status-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--muted); flex-shrink: 0; } .settings-status-dot--ok { background: var(--green, #22c55e); box-shadow: 0 0 6px color-mix(in srgb, var(--green, #22c55e) 50%, transparent); }