1694 lines
38 KiB
CSS
1694 lines
38 KiB
CSS
/* =====================================================================
|
|
Settings 페이지 전용 스타일 — tokens.css 변수만 참조.
|
|
철칙: border-left·좌측바·이모지·카드덤프·순흑백·과한 라운드 금지.
|
|
원형 예외: dot / 토글 노브 / 아바타만. 카드/버튼 8px, 입력 6px.
|
|
강조 = weight + accent 텍스트 + accent-tint 배경 + kicker(+dot).
|
|
===================================================================== */
|
|
|
|
.vg-set {
|
|
display: grid;
|
|
grid-template-columns: 204px minmax(0, 780px);
|
|
gap: var(--sp-6);
|
|
align-items: start;
|
|
max-width: 1060px;
|
|
}
|
|
|
|
/* 좌측 섹션 내비 */
|
|
.vg-set__nav {
|
|
position: sticky;
|
|
top: calc(var(--topbar-h) + var(--sp-4));
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-lg);
|
|
background: var(--bg-surface);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
.vg-set__nav-kicker {
|
|
font-family: var(--font-num);
|
|
font-size: var(--fs-kicker);
|
|
font-weight: 600;
|
|
letter-spacing: 0.08em;
|
|
color: var(--text-muted);
|
|
padding: var(--sp-1) 10px var(--sp-3);
|
|
}
|
|
.vg-set__nav-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 11px;
|
|
font-size: var(--fs-sm);
|
|
font-weight: 500;
|
|
color: var(--text-body);
|
|
background: transparent;
|
|
border: none;
|
|
text-align: left;
|
|
padding: 10px 12px;
|
|
border-radius: var(--radius);
|
|
cursor: pointer;
|
|
transition: background var(--dur-fast) var(--ease-out),
|
|
color var(--dur-fast) var(--ease-out);
|
|
}
|
|
.vg-set__nav-item:hover {
|
|
background: var(--bg-surface-2);
|
|
color: var(--text-strong);
|
|
}
|
|
.vg-set__nav-item.is-active {
|
|
background: var(--accent-tint);
|
|
color: var(--accent-deep);
|
|
font-weight: 600;
|
|
}
|
|
.vg-set__nav-item svg {
|
|
flex: none;
|
|
opacity: 0.85;
|
|
}
|
|
|
|
/* 우측 폼 컬럼 */
|
|
.vg-set__forms {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-6);
|
|
min-width: 0;
|
|
}
|
|
|
|
/* ── 그룹(섹션 카드) — 헤어라인 + 톤차, 상단 강조선 없음 ── */
|
|
.vg-set__group {
|
|
scroll-margin-top: calc(var(--topbar-h) + var(--sp-4));
|
|
box-shadow: var(--shadow-sm);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__group-head {
|
|
margin-bottom: var(--sp-5);
|
|
}
|
|
.vg-set__group-title {
|
|
font-size: var(--fs-h3);
|
|
font-weight: 600;
|
|
letter-spacing: 0;
|
|
color: var(--text-strong);
|
|
}
|
|
.vg-set__group-desc {
|
|
font-size: var(--fs-sm);
|
|
color: var(--text-body);
|
|
margin-top: 5px;
|
|
max-width: 60ch;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
/* ── 폼 한 줄: 라벨(좌) / 입력(우) ── */
|
|
.vg-set__row {
|
|
display: grid;
|
|
grid-template-columns: 200px 1fr;
|
|
gap: var(--sp-5);
|
|
padding: var(--sp-5) 0;
|
|
border-top: 1px solid var(--bg-surface-2);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__row:first-of-type {
|
|
border-top: none;
|
|
padding-top: var(--sp-2);
|
|
}
|
|
.vg-set__row-label {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 4px;
|
|
min-width: 0;
|
|
}
|
|
.vg-set__row-label .l {
|
|
font-size: var(--fs-sm);
|
|
font-weight: 600;
|
|
color: var(--text-strong);
|
|
}
|
|
.vg-set__row-label .h {
|
|
font-size: var(--fs-xs);
|
|
color: var(--text-muted);
|
|
line-height: 1.5;
|
|
}
|
|
.vg-set__row-field {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-2);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__row-field .vg-input {
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
}
|
|
|
|
/* ── select (입력과 동일 톤, radius 6px) ── */
|
|
.vg-set__select {
|
|
width: 100%;
|
|
font-family: var(--font-sans);
|
|
font-size: var(--fs-sm);
|
|
color: var(--text-strong);
|
|
background: var(--bg-surface-2);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius-sm);
|
|
padding: 10px 38px 10px 12px;
|
|
line-height: 1.5;
|
|
appearance: none;
|
|
-webkit-appearance: none;
|
|
cursor: pointer;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2393A09C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
|
|
background-repeat: no-repeat;
|
|
background-position: right 12px center;
|
|
background-size: 16px;
|
|
transition: border-color var(--dur-fast) var(--ease-out),
|
|
box-shadow var(--dur-fast) var(--ease-out);
|
|
}
|
|
.vg-set__select:focus {
|
|
outline: none;
|
|
border-color: var(--border-focus);
|
|
box-shadow: 0 0 0 3px var(--focus-ring);
|
|
}
|
|
.vg-set__select:disabled {
|
|
opacity: 0.55;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* ── 토글 스위치 (노브만 원형 예외) ── */
|
|
.vg-toggle {
|
|
position: relative;
|
|
width: 42px;
|
|
height: 24px;
|
|
flex: none;
|
|
border: none;
|
|
background: transparent;
|
|
padding: 0;
|
|
cursor: pointer;
|
|
}
|
|
.vg-toggle:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
.vg-toggle__track {
|
|
position: absolute;
|
|
inset: 0;
|
|
background: var(--neutral-200);
|
|
border-radius: 100px;
|
|
transition: background var(--dur-base) var(--ease-out);
|
|
}
|
|
.vg-toggle__knob {
|
|
position: absolute;
|
|
top: 3px;
|
|
left: 3px;
|
|
width: 18px;
|
|
height: 18px;
|
|
border-radius: 50%;
|
|
background: var(--surface);
|
|
box-shadow: var(--shadow-sm);
|
|
transition: transform var(--dur-base) var(--ease-out);
|
|
}
|
|
.vg-toggle.is-on .vg-toggle__track {
|
|
background: var(--accent);
|
|
}
|
|
.vg-toggle.is-on .vg-toggle__knob {
|
|
transform: translateX(18px);
|
|
}
|
|
.vg-toggle:focus-visible {
|
|
outline: none;
|
|
}
|
|
.vg-toggle:focus-visible .vg-toggle__track {
|
|
box-shadow: 0 0 0 3px var(--focus-ring);
|
|
}
|
|
|
|
/* ── 옵션 행: 라벨+설명 / 우측 컨트롤 ── */
|
|
.vg-set__opt {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--sp-4);
|
|
padding: var(--sp-4) 0;
|
|
border-top: 1px solid var(--bg-surface-2);
|
|
}
|
|
.vg-set__opt:first-of-type {
|
|
border-top: none;
|
|
}
|
|
.vg-set__opt-text {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
.vg-set__opt-text .l {
|
|
font-size: var(--fs-sm);
|
|
font-weight: 600;
|
|
color: var(--text-strong);
|
|
}
|
|
.vg-set__opt-text .h {
|
|
font-size: var(--fs-xs);
|
|
color: var(--text-muted);
|
|
margin-top: 3px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* ── 세그먼트 토글(엔진 모드): 백엔드 지원 모드, 둥근 알약 아님(8px) ── */
|
|
.vg-set__seg {
|
|
width: min(100%, 520px);
|
|
max-width: 100%;
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
background: var(--bg-surface-2);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
padding: 3px;
|
|
gap: 3px;
|
|
min-width: 0;
|
|
}
|
|
.vg-set__seg-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
font-family: var(--font-sans);
|
|
font-size: var(--fs-sm);
|
|
font-weight: 500;
|
|
line-height: 1.35;
|
|
color: var(--text-body);
|
|
background: transparent;
|
|
border: none;
|
|
border-radius: var(--radius-sm);
|
|
padding: 8px clamp(10px, 2.5vw, 16px);
|
|
cursor: pointer;
|
|
white-space: normal;
|
|
overflow-wrap: anywhere;
|
|
text-align: center;
|
|
transition: background var(--dur-base) var(--ease-out),
|
|
color var(--dur-base) var(--ease-out);
|
|
}
|
|
.vg-set__seg-btn:hover:not(.is-active) {
|
|
color: var(--text-strong);
|
|
}
|
|
.vg-set__seg-btn.is-active {
|
|
background: var(--surface);
|
|
color: var(--accent-deep);
|
|
font-weight: 600;
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
.vg-set__ops {
|
|
display: grid;
|
|
grid-template-columns: 10px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--sp-3);
|
|
margin-bottom: var(--sp-4);
|
|
padding: var(--sp-4);
|
|
border-radius: var(--radius);
|
|
background: var(--info-tint);
|
|
color: var(--info-text);
|
|
}
|
|
.vg-set__ops--ok {
|
|
background: var(--pos-tint);
|
|
color: var(--pos-text);
|
|
}
|
|
.vg-set__ops--down {
|
|
background: var(--crit-tint);
|
|
color: var(--crit-text);
|
|
}
|
|
.vg-set__ops-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: currentColor;
|
|
}
|
|
.vg-set__ops b {
|
|
display: block;
|
|
font-size: var(--fs-sm);
|
|
line-height: 1.35;
|
|
}
|
|
.vg-set__ops span {
|
|
display: block;
|
|
margin-top: 2px;
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.45;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.vg-set__state {
|
|
display: grid;
|
|
grid-template-columns: 10px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--sp-3);
|
|
padding: var(--sp-4);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface-2);
|
|
color: var(--text-body);
|
|
font-size: var(--fs-sm);
|
|
line-height: 1.5;
|
|
}
|
|
.vg-set__state-dot {
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 50%;
|
|
background: var(--neutral-sig);
|
|
}
|
|
|
|
/* ── 로딩 스켈레톤 — 섹션 형태 윤곽(회색 박스 반복 방지) ── */
|
|
.vg-set__skel {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-3);
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
.vg-set__skel-sr {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
margin: -1px;
|
|
padding: 0;
|
|
overflow: hidden;
|
|
clip: rect(0 0 0 0);
|
|
white-space: nowrap;
|
|
border: 0;
|
|
}
|
|
.vg-set__skel-line,
|
|
.vg-set__skel-bar,
|
|
.vg-set__skel-pill,
|
|
.vg-set__skel-card {
|
|
--skel-base: var(--bg-surface-2);
|
|
--skel-sheen: color-mix(in srgb, var(--bg-surface-2) 55%, var(--surface));
|
|
background: linear-gradient(
|
|
100deg,
|
|
var(--skel-base) 30%,
|
|
var(--skel-sheen) 50%,
|
|
var(--skel-base) 70%
|
|
);
|
|
background-size: 220% 100%;
|
|
border-radius: var(--radius-sm);
|
|
animation: vg-set-skel-shimmer 1.5s var(--ease-out) infinite;
|
|
}
|
|
.vg-set__skel-line {
|
|
height: 12px;
|
|
}
|
|
.vg-set__skel-line--label {
|
|
width: 38%;
|
|
height: 10px;
|
|
margin-bottom: 2px;
|
|
}
|
|
.vg-set__skel-line--short {
|
|
width: 62%;
|
|
}
|
|
.vg-set__skel-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--sp-3);
|
|
}
|
|
.vg-set__skel-bar {
|
|
flex: 1;
|
|
height: 28px;
|
|
}
|
|
.vg-set__skel-pill {
|
|
flex: none;
|
|
width: 42px;
|
|
height: 22px;
|
|
border-radius: 100px;
|
|
}
|
|
.vg-set__skel-card {
|
|
height: 48px;
|
|
}
|
|
|
|
@keyframes vg-set-skel-shimmer {
|
|
from {
|
|
background-position: 180% 0;
|
|
}
|
|
to {
|
|
background-position: -80% 0;
|
|
}
|
|
}
|
|
|
|
/* ── 라디오형 음성 프리셋 행 ── */
|
|
.vg-set__voicelist {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
.vg-set__voice {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--sp-4);
|
|
padding: 13px var(--sp-4);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
cursor: pointer;
|
|
text-align: left;
|
|
width: 100%;
|
|
transition: border-color var(--dur-fast) var(--ease-out),
|
|
background var(--dur-fast) var(--ease-out);
|
|
}
|
|
.vg-set__voice:hover {
|
|
border-color: var(--border-strong);
|
|
}
|
|
.vg-set__voice.is-on {
|
|
border-color: var(--accent);
|
|
background: var(--accent-tint);
|
|
box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 10%, transparent);
|
|
}
|
|
.vg-set__voice-rad {
|
|
width: 18px;
|
|
height: 18px;
|
|
border-radius: 50%;
|
|
border: 2px solid var(--neutral-200);
|
|
flex: none;
|
|
position: relative;
|
|
}
|
|
.vg-set__voice.is-on .vg-set__voice-rad {
|
|
border-color: var(--accent);
|
|
}
|
|
.vg-set__voice.is-on .vg-set__voice-rad::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 3px;
|
|
border-radius: 50%;
|
|
background: var(--accent);
|
|
}
|
|
.vg-set__voice-info {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
.vg-set__voice-info .vn {
|
|
font-size: var(--fs-sm);
|
|
font-weight: 600;
|
|
color: var(--text-strong);
|
|
}
|
|
.vg-set__voice-info .vd {
|
|
font-size: var(--fs-xs);
|
|
color: var(--text-muted);
|
|
margin-top: 2px;
|
|
}
|
|
.vg-set__voice-play {
|
|
width: 34px;
|
|
height: 34px;
|
|
border-radius: 50%;
|
|
flex: none;
|
|
border: 1px solid var(--border-subtle);
|
|
background: var(--bg-surface);
|
|
color: var(--accent);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
cursor: pointer;
|
|
transition: background var(--dur-fast) var(--ease-out);
|
|
}
|
|
.vg-set__voice-play:hover {
|
|
background: var(--accent-tint);
|
|
}
|
|
|
|
/* ── 콜아웃(정보/주의) — 좌측바 없음, 틴트 배경 + 아이콘 ── */
|
|
.vg-set__callout {
|
|
border-radius: var(--radius);
|
|
padding: var(--sp-4) var(--sp-5);
|
|
display: flex;
|
|
gap: 12px;
|
|
margin-bottom: var(--sp-5);
|
|
}
|
|
.vg-set__callout--info {
|
|
background: var(--info-tint);
|
|
color: var(--info-text);
|
|
}
|
|
.vg-set__callout--warn {
|
|
background: var(--warn-tint);
|
|
color: var(--warn-text);
|
|
}
|
|
.vg-set__callout-ico {
|
|
flex: none;
|
|
margin-top: 1px;
|
|
}
|
|
.vg-set__callout--info .vg-set__callout-ico {
|
|
color: var(--info-solid);
|
|
}
|
|
.vg-set__callout--warn .vg-set__callout-ico {
|
|
color: var(--warn-solid);
|
|
}
|
|
.vg-set__callout-text {
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.6;
|
|
}
|
|
.vg-set__callout-text strong {
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* ── 그룹 푸터(저장/취소) ── */
|
|
.vg-set__foot {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
align-items: center;
|
|
gap: 10px;
|
|
margin-top: var(--sp-6);
|
|
padding-top: var(--sp-5);
|
|
border-top: 1px solid var(--bg-surface-2);
|
|
}
|
|
.vg-set__saved {
|
|
margin-right: auto;
|
|
font-size: var(--fs-xs);
|
|
color: var(--pos-text);
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
/* ── 프로필 헤더(아바타 원형 예외) ── */
|
|
.vg-set__profile {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--sp-5);
|
|
margin-bottom: var(--sp-5);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__avatar {
|
|
width: 56px;
|
|
height: 56px;
|
|
border-radius: 50%;
|
|
flex: none;
|
|
background: var(--accent);
|
|
color: var(--text-on-accent);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 22px;
|
|
font-weight: 600;
|
|
}
|
|
.vg-set__profile-meta .n {
|
|
font-size: var(--fs-lead);
|
|
font-weight: 600;
|
|
color: var(--text-strong);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__profile-meta .e {
|
|
font-size: var(--fs-sm);
|
|
color: var(--text-body);
|
|
margin-top: 2px;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__profile-meta {
|
|
min-width: 0;
|
|
}
|
|
.vg-set__profile-meta .badges {
|
|
display: flex;
|
|
gap: 8px;
|
|
margin-top: 8px;
|
|
}
|
|
/* 업로드된 아바타 이미지 — 원형 프레임을 그대로 채운다(이니셜 폴백 대체). */
|
|
.vg-set__avatar img,
|
|
.vg-set__rail-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
display: block;
|
|
}
|
|
/* 아바타 업로드 컨트롤 — 숨은 file input + 버튼(온보딩과 같은 계약). */
|
|
.vg-set__avatar-actions {
|
|
position: relative;
|
|
margin-left: auto;
|
|
flex: none;
|
|
}
|
|
.vg-set__avatar-input {
|
|
position: absolute;
|
|
inline-size: 1px;
|
|
block-size: 1px;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* ── 동의 섹션 — 철회 확인·재동의 안내 블록 ── */
|
|
.vg-set__consent-block {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--sp-3);
|
|
padding: var(--sp-4);
|
|
margin-top: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface-2);
|
|
font-size: var(--fs-sm);
|
|
color: var(--text-body);
|
|
line-height: 1.5;
|
|
}
|
|
.vg-set__consent-block > span {
|
|
min-width: 0;
|
|
flex: 1 1 240px;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__consent-actions {
|
|
display: flex;
|
|
gap: var(--sp-2);
|
|
flex: none;
|
|
}
|
|
|
|
/* ── 모델/엔진 메타 한 줄(읽기전용 상태 표기) ── */
|
|
.vg-set__meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--sp-2) var(--sp-5);
|
|
font-size: var(--fs-xs);
|
|
color: var(--text-muted);
|
|
margin-top: var(--sp-2);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__meta span {
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__meta code {
|
|
font-family: var(--font-num);
|
|
font-size: var(--fs-xs);
|
|
color: var(--text-body);
|
|
background: var(--bg-surface-2);
|
|
padding: 2px 7px;
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
/* ── 반응형: 좁아지면 단일 컬럼 ── */
|
|
@media (max-width: 860px) {
|
|
.vg-set {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.vg-set__nav {
|
|
position: static;
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
padding: var(--sp-2);
|
|
}
|
|
.vg-set__nav-kicker {
|
|
display: none;
|
|
}
|
|
.vg-set__row {
|
|
grid-template-columns: 1fr;
|
|
gap: 10px;
|
|
}
|
|
.vg-set__group,
|
|
.vg-set__foot,
|
|
.vg-set__foot .vg-btn {
|
|
scroll-margin-top: calc(var(--topbar-h) + var(--sp-4));
|
|
scroll-margin-bottom: 104px;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.vg-set__group,
|
|
.vg-set__foot,
|
|
.vg-set__foot .vg-btn {
|
|
scroll-margin-top: calc(var(--topbar-h) + 70px);
|
|
scroll-margin-bottom: var(--sp-7);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.vg-set__engine-catalog {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.vg-set__engine-catalog .vg-btn {
|
|
width: 100%;
|
|
}
|
|
|
|
.vg-set__seg {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.vg-toggle__track,
|
|
.vg-toggle__knob,
|
|
.vg-set__seg-btn,
|
|
.vg-set__nav-item,
|
|
.vg-set__voice,
|
|
.vg-set__select {
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
.vg-set__skel-line,
|
|
.vg-set__skel-bar,
|
|
.vg-set__skel-pill,
|
|
.vg-set__skel-card {
|
|
animation: none !important;
|
|
}
|
|
}
|
|
|
|
/* Density refresh: Settings as a practical control surface. */
|
|
.vg-set__mast {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: var(--sp-4);
|
|
margin: 0 auto var(--sp-5);
|
|
max-width: 1080px;
|
|
}
|
|
.vg-set__mast .vg-sechead {
|
|
margin-bottom: 0;
|
|
}
|
|
.vg-set__mast-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
flex-wrap: wrap;
|
|
gap: var(--sp-2);
|
|
padding-top: 2px;
|
|
}
|
|
.vg-set__pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 28px;
|
|
padding: 4px 10px;
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius-sm);
|
|
background: var(--bg-surface);
|
|
color: var(--text-body);
|
|
font: 600 var(--fs-xs) / 1.25 var(--font-num);
|
|
white-space: nowrap;
|
|
}
|
|
.vg-set__pill--ok {
|
|
color: var(--pos-text);
|
|
background: var(--pos-tint);
|
|
border-color: transparent;
|
|
}
|
|
.vg-set__pill--degraded {
|
|
color: var(--warn-text);
|
|
background: var(--warn-tint);
|
|
border-color: transparent;
|
|
}
|
|
.vg-set__pill--down {
|
|
color: var(--crit-text);
|
|
background: var(--crit-tint);
|
|
border-color: transparent;
|
|
}
|
|
|
|
.vg-set {
|
|
grid-template-columns: 200px minmax(0, 1fr);
|
|
gap: var(--sp-4);
|
|
max-width: 1080px;
|
|
margin: 0 auto;
|
|
}
|
|
.vg-set__rail {
|
|
position: sticky;
|
|
top: calc(var(--topbar-h) + var(--sp-4));
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-3);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__rail-card {
|
|
display: grid;
|
|
grid-template-columns: 42px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--sp-3);
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
.vg-set__rail-avatar {
|
|
width: 42px;
|
|
height: 42px;
|
|
border-radius: 50%;
|
|
display: grid;
|
|
place-items: center;
|
|
background: var(--accent);
|
|
color: var(--text-on-accent);
|
|
font-size: 17px;
|
|
font-weight: 700;
|
|
}
|
|
.vg-set__rail-copy,
|
|
.vg-set__profile-meta {
|
|
min-width: 0;
|
|
}
|
|
.vg-set__rail-name {
|
|
color: var(--text-strong);
|
|
font-size: var(--fs-sm);
|
|
font-weight: 700;
|
|
line-height: 1.35;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__rail-email {
|
|
margin-top: 2px;
|
|
color: var(--text-muted);
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.35;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__rail-badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
margin-top: var(--sp-2);
|
|
}
|
|
|
|
.vg-set__nav {
|
|
position: static;
|
|
gap: 3px;
|
|
padding: var(--sp-2);
|
|
border-radius: var(--radius);
|
|
box-shadow: none;
|
|
}
|
|
.vg-set__nav-kicker {
|
|
padding: 2px 8px var(--sp-2);
|
|
}
|
|
.vg-set__nav-item {
|
|
min-width: 0;
|
|
gap: 9px;
|
|
padding: 9px 10px;
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
.vg-set__nav-item span {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.vg-set__forms {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(300px, 0.76fr);
|
|
gap: var(--sp-4);
|
|
}
|
|
.vg-set__group {
|
|
padding: 20px;
|
|
border-radius: var(--radius);
|
|
box-shadow: none;
|
|
}
|
|
.vg-set__group--wide {
|
|
grid-column: 1 / -1;
|
|
}
|
|
#set-account {
|
|
order: 1;
|
|
}
|
|
#set-engine {
|
|
order: 2;
|
|
}
|
|
#set-appearance {
|
|
order: 3;
|
|
}
|
|
#set-notify {
|
|
order: 4;
|
|
}
|
|
#set-voice {
|
|
order: 5;
|
|
}
|
|
.vg-set__group-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--sp-4);
|
|
margin-bottom: var(--sp-4);
|
|
}
|
|
.vg-set__group-head--split {
|
|
align-items: flex-start;
|
|
}
|
|
.vg-set__group-title {
|
|
font-size: 18px;
|
|
line-height: 1.3;
|
|
}
|
|
.vg-set__group-title--kicker {
|
|
margin-top: 4px;
|
|
}
|
|
.vg-set__group-desc {
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.45;
|
|
margin-top: 3px;
|
|
}
|
|
|
|
.vg-set__profile {
|
|
gap: var(--sp-3);
|
|
margin-bottom: var(--sp-4);
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface-2);
|
|
}
|
|
.vg-set__avatar {
|
|
width: 44px;
|
|
height: 44px;
|
|
font-size: 18px;
|
|
}
|
|
.vg-set__profile-meta .n {
|
|
font-size: var(--fs-body);
|
|
line-height: 1.35;
|
|
}
|
|
.vg-set__profile-meta .e {
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.35;
|
|
}
|
|
.vg-set__profile-meta .badges {
|
|
flex-wrap: wrap;
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.vg-set__field-grid {
|
|
display: grid;
|
|
gap: var(--sp-3);
|
|
min-width: 0;
|
|
}
|
|
.vg-set__field-grid--account {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
.vg-set__field-grid--engine {
|
|
align-content: start;
|
|
}
|
|
.vg-set__field {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-2);
|
|
min-width: 0;
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
.vg-set__field--wide {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.vg-set__field .vg-field,
|
|
.vg-set__field .vg-input {
|
|
min-width: 0;
|
|
}
|
|
.vg-set__field-copy {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 3px;
|
|
min-width: 0;
|
|
}
|
|
.vg-set__field-copy .l,
|
|
.vg-set__opt-text .l {
|
|
color: var(--text-strong);
|
|
font-size: var(--fs-sm);
|
|
font-weight: 700;
|
|
line-height: 1.35;
|
|
}
|
|
.vg-set__field-copy .h,
|
|
.vg-set__opt-text .h {
|
|
color: var(--text-muted);
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.4;
|
|
}
|
|
.vg-set__field .vg-input,
|
|
.vg-set__range-control input[type="range"] {
|
|
width: 100%;
|
|
}
|
|
.vg-set__field .vg-input {
|
|
font-size: var(--fs-sm);
|
|
padding: 8px 10px;
|
|
}
|
|
|
|
.vg-set__engine-catalog {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: var(--sp-3);
|
|
padding: 11px;
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
|
|
.vg-set__engine-catalog.is-ready {
|
|
border-color: color-mix(in srgb, var(--accent) 36%, var(--border-subtle));
|
|
background: var(--accent-tint);
|
|
}
|
|
|
|
.vg-set__engine-catalog.is-unavailable {
|
|
border-color: color-mix(in srgb, var(--crit-solid) 42%, var(--border-subtle));
|
|
background: var(--crit-tint);
|
|
}
|
|
|
|
.vg-set__engine-catalog > div {
|
|
min-width: 0;
|
|
}
|
|
|
|
.vg-set__engine-catalog b,
|
|
.vg-set__engine-catalog span {
|
|
display: block;
|
|
}
|
|
|
|
.vg-set__engine-catalog b {
|
|
color: var(--text-strong);
|
|
font-size: var(--fs-xs);
|
|
}
|
|
|
|
.vg-set__engine-catalog span {
|
|
margin-top: 3px;
|
|
color: var(--text-muted);
|
|
font-size: 11px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.vg-set__engine-catalog .vg-btn {
|
|
flex: 0 0 auto;
|
|
}
|
|
|
|
.vg-set__engine-grid {
|
|
display: grid;
|
|
grid-template-columns: minmax(270px, 0.8fr) minmax(0, 1.2fr);
|
|
gap: var(--sp-3);
|
|
align-items: stretch;
|
|
}
|
|
.vg-set__control-block {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--sp-2);
|
|
min-width: 0;
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
.vg-set__control-block .vg-set__seg {
|
|
flex: 1;
|
|
}
|
|
.vg-set__seg {
|
|
width: 100%;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
grid-auto-rows: 1fr;
|
|
padding: 3px;
|
|
}
|
|
.vg-set__seg-btn {
|
|
min-height: 34px;
|
|
padding: 7px 9px;
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.25;
|
|
}
|
|
.vg-set__ops {
|
|
width: min(360px, 100%);
|
|
margin-bottom: 0;
|
|
padding: var(--sp-3);
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
.vg-set__opt-grid {
|
|
display: grid;
|
|
gap: var(--sp-2);
|
|
}
|
|
.vg-set__opt {
|
|
min-width: 0;
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
.vg-set__toggle-line {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--sp-3);
|
|
color: var(--text-body);
|
|
}
|
|
|
|
.vg-set__voicelist {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
|
gap: var(--sp-2);
|
|
}
|
|
.vg-set__voice {
|
|
min-width: 0;
|
|
gap: var(--sp-3);
|
|
padding: var(--sp-3);
|
|
align-items: flex-start;
|
|
}
|
|
.vg-set__voice-info .vn,
|
|
.vg-set__voice-info .vd {
|
|
display: block;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.vg-set__voice-info .vd {
|
|
display: -webkit-box;
|
|
overflow: hidden;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 2;
|
|
}
|
|
.vg-set__voice-play {
|
|
width: 30px;
|
|
height: 30px;
|
|
}
|
|
.vg-set__range-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(150px, 190px) minmax(0, 1fr);
|
|
gap: var(--sp-3);
|
|
align-items: center;
|
|
margin-top: var(--sp-3);
|
|
padding: var(--sp-3);
|
|
border: 1px solid var(--border-subtle);
|
|
border-radius: var(--radius);
|
|
background: var(--bg-surface);
|
|
}
|
|
.vg-set__range-control {
|
|
min-width: 0;
|
|
}
|
|
/* WCAG 2.2 SC 2.5.8(타깃 최소 24px): 브라우저 기본 range 는 높이 16px 라 미달이다.
|
|
thumb 을 24px 로 잡되 투명 테두리 + background-clip:content-box 로 실제로 칠하는
|
|
원은 16px 로 남긴다. 시각 크기는 그대로, 포인터 적중 영역만 24px 로 넓어진다. */
|
|
.vg-set__range-control input[type="range"] {
|
|
accent-color: var(--accent);
|
|
display: block;
|
|
height: 24px;
|
|
background: transparent;
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
cursor: pointer;
|
|
}
|
|
.vg-set__range-control input[type="range"]::-webkit-slider-runnable-track {
|
|
height: 4px;
|
|
border-radius: 999px;
|
|
background: var(--border-strong);
|
|
}
|
|
.vg-set__range-control input[type="range"]::-moz-range-track {
|
|
height: 4px;
|
|
border-radius: 999px;
|
|
background: var(--border-strong);
|
|
}
|
|
.vg-set__range-control input[type="range"]::-webkit-slider-thumb {
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
box-sizing: border-box;
|
|
width: 24px;
|
|
height: 24px;
|
|
margin-top: -10px;
|
|
border: 4px solid transparent;
|
|
border-radius: 50%;
|
|
background: var(--accent);
|
|
background-clip: content-box;
|
|
}
|
|
.vg-set__range-control input[type="range"]::-moz-range-thumb {
|
|
box-sizing: border-box;
|
|
width: 24px;
|
|
height: 24px;
|
|
border: 4px solid transparent;
|
|
border-radius: 50%;
|
|
background: var(--accent);
|
|
background-clip: content-box;
|
|
}
|
|
.vg-set__meta {
|
|
margin-top: var(--sp-2);
|
|
gap: var(--sp-2) var(--sp-4);
|
|
}
|
|
.vg-set__meta--range {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.vg-set__foot {
|
|
margin-top: var(--sp-3);
|
|
padding-top: var(--sp-3);
|
|
}
|
|
.vg-set__saved {
|
|
min-width: 0;
|
|
}
|
|
.vg-set__state {
|
|
padding: var(--sp-3);
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
@media (max-width: 1080px) {
|
|
.vg-set__mast,
|
|
.vg-set {
|
|
max-width: none;
|
|
}
|
|
.vg-set {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.vg-set__rail {
|
|
position: static;
|
|
display: grid;
|
|
grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
|
|
align-items: start;
|
|
}
|
|
.vg-set__forms {
|
|
grid-template-columns: minmax(0, 1fr) minmax(280px, 0.82fr);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 860px) {
|
|
.vg-set__forms {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.vg-set__group--wide,
|
|
#set-appearance,
|
|
#set-notify,
|
|
#set-voice {
|
|
grid-column: auto;
|
|
}
|
|
.vg-set__field-grid--account,
|
|
.vg-set__engine-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.vg-set__field--wide {
|
|
grid-column: auto;
|
|
}
|
|
.vg-set__group-head--split {
|
|
flex-direction: column;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.vg-set__mast {
|
|
display: block;
|
|
margin-bottom: var(--sp-4);
|
|
}
|
|
.vg-set__mast-meta {
|
|
justify-content: flex-start;
|
|
margin-top: var(--sp-2);
|
|
}
|
|
.vg-set {
|
|
gap: var(--sp-3);
|
|
}
|
|
.vg-set__rail {
|
|
display: block;
|
|
}
|
|
.vg-set__rail-card {
|
|
display: none;
|
|
}
|
|
.vg-set__nav {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: nowrap;
|
|
gap: 6px;
|
|
overflow-x: auto;
|
|
padding: 6px;
|
|
scrollbar-width: thin;
|
|
}
|
|
.vg-set__nav-kicker {
|
|
display: none;
|
|
}
|
|
.vg-set__nav-item {
|
|
flex: 0 0 auto;
|
|
min-height: 36px;
|
|
padding: 0 10px;
|
|
white-space: nowrap;
|
|
}
|
|
.vg-set__forms {
|
|
gap: var(--sp-3);
|
|
}
|
|
.vg-set__group {
|
|
padding: var(--sp-3);
|
|
}
|
|
.vg-set__profile,
|
|
.vg-set__field,
|
|
.vg-set__control-block,
|
|
.vg-set__opt,
|
|
.vg-set__range-row {
|
|
padding: 10px;
|
|
}
|
|
.vg-set__avatar {
|
|
width: 38px;
|
|
height: 38px;
|
|
font-size: 16px;
|
|
}
|
|
.vg-set__engine-grid,
|
|
.vg-set__range-row {
|
|
gap: var(--sp-2);
|
|
}
|
|
.vg-set__range-row {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.vg-set__ops {
|
|
width: 100%;
|
|
}
|
|
.vg-set__foot {
|
|
margin-top: var(--sp-3);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 360px) {
|
|
.vg-set__seg {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.vg-set__opt {
|
|
align-items: flex-start;
|
|
}
|
|
}
|
|
|
|
/* Image-aligned workspace: generated settings concept -> production controls. */
|
|
body[data-page="settings"] .vg-set__callout {
|
|
max-width: 1120px;
|
|
margin: var(--sp-5) auto 0;
|
|
}
|
|
|
|
body[data-page="settings"] .vg-set {
|
|
grid-template-columns: 244px minmax(0, 820px);
|
|
justify-content: center;
|
|
align-items: start;
|
|
gap: 28px;
|
|
max-width: 1168px;
|
|
min-height: 100dvh;
|
|
padding: 30px 24px;
|
|
margin: 0 auto;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail {
|
|
position: sticky;
|
|
top: 24px;
|
|
min-height: calc(100dvh - 60px);
|
|
padding: 24px 16px 18px;
|
|
border-radius: var(--radius);
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
min-width: 0;
|
|
padding: 2px 6px 20px;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-mark {
|
|
width: 34px;
|
|
height: 34px;
|
|
display: grid;
|
|
place-items: center;
|
|
flex: none;
|
|
color: var(--accent-deep);
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title h1 {
|
|
margin: 0;
|
|
color: var(--text-strong);
|
|
font-size: 24px;
|
|
line-height: 1.15;
|
|
letter-spacing: 0;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title p {
|
|
margin: 3px 0 0;
|
|
color: var(--text-muted);
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.35;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-card {
|
|
display: none;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav {
|
|
position: static;
|
|
padding: 0;
|
|
gap: 10px;
|
|
border-radius: var(--radius);
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-kicker {
|
|
display: none;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item {
|
|
min-height: 49px;
|
|
padding: 0 14px;
|
|
border-radius: var(--radius);
|
|
color: var(--accent-deep);
|
|
font-size: 15px;
|
|
font-weight: 650;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item:hover {
|
|
background: var(--accent-tint);
|
|
color: var(--accent-deep);
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item.is-active {
|
|
background: var(--accent);
|
|
color: var(--text-on-accent);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item.is-active svg {
|
|
color: var(--text-on-accent);
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-status {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
margin-top: auto;
|
|
padding: 18px 4px 0;
|
|
}
|
|
|
|
body[data-page="settings"] .vg-set__forms {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: 14px;
|
|
max-width: 820px;
|
|
}
|
|
body[data-page="settings"] #set-account {
|
|
order: 1;
|
|
}
|
|
body[data-page="settings"] #set-support {
|
|
order: 2;
|
|
}
|
|
body[data-page="settings"] #set-engine {
|
|
order: 3;
|
|
}
|
|
body[data-page="settings"] #set-consent {
|
|
order: 4;
|
|
}
|
|
body[data-page="settings"] #set-appearance {
|
|
order: 5;
|
|
}
|
|
body[data-page="settings"] #set-voice {
|
|
order: 6;
|
|
}
|
|
body[data-page="settings"] #set-notify {
|
|
order: 7;
|
|
}
|
|
body[data-page="settings"] .vg-set__group {
|
|
padding: 18px;
|
|
border-radius: var(--radius);
|
|
}
|
|
body[data-page="settings"] .vg-set__group-head {
|
|
align-items: flex-start;
|
|
margin-bottom: 14px;
|
|
}
|
|
body[data-page="settings"] .vg-set__group-title {
|
|
font-size: 18px;
|
|
font-weight: 750;
|
|
}
|
|
body[data-page="settings"] .vg-set__group-desc {
|
|
font-size: 12px;
|
|
color: var(--text-muted);
|
|
}
|
|
body[data-page="settings"] .vg-set__profile {
|
|
margin-bottom: 12px;
|
|
padding: 13px;
|
|
}
|
|
body[data-page="settings"] .vg-set__avatar {
|
|
background: var(--accent);
|
|
}
|
|
body[data-page="settings"] .vg-set__field-grid--account,
|
|
body[data-page="settings"] .vg-set__field-grid--engine {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
body[data-page="settings"] .vg-set__field--wide {
|
|
grid-column: 1 / -1;
|
|
}
|
|
body[data-page="settings"] .vg-set__field,
|
|
body[data-page="settings"] .vg-set__control-block,
|
|
body[data-page="settings"] .vg-set__opt,
|
|
body[data-page="settings"] .vg-set__range-row {
|
|
}
|
|
body[data-page="settings"] .vg-set__engine-grid {
|
|
grid-template-columns: 1fr;
|
|
gap: 10px;
|
|
}
|
|
body[data-page="settings"] .vg-set__seg {
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
background: var(--glass-surface-inset);
|
|
}
|
|
body[data-page="settings"] .vg-set__seg-btn.is-active {
|
|
background: var(--accent);
|
|
color: var(--text-on-accent);
|
|
}
|
|
body[data-page="settings"] .vg-set__ops {
|
|
width: min(300px, 100%);
|
|
min-height: 54px;
|
|
}
|
|
body[data-page="settings"] .vg-set__voicelist {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
body[data-page="settings"] .vg-set__voice {
|
|
min-height: 72px;
|
|
}
|
|
body[data-page="settings"] .vg-set__tickets {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
body[data-page="settings"] .vg-set__ticket {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 8px;
|
|
padding: 12px;
|
|
border-radius: var(--radius);
|
|
}
|
|
body[data-page="settings"] .vg-set__ticket-top,
|
|
body[data-page="settings"] .vg-set__ticket-meta {
|
|
min-width: 0;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: 7px 10px;
|
|
color: var(--text-muted);
|
|
font-size: var(--fs-xs);
|
|
}
|
|
body[data-page="settings"] .vg-set__ticket-title {
|
|
min-width: 0;
|
|
color: var(--text-strong);
|
|
font-size: var(--fs-sm);
|
|
font-weight: 700;
|
|
line-height: 1.4;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
body[data-page="settings"] .vg-set__ticket-note {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 4px;
|
|
padding: 9px 10px;
|
|
border-radius: var(--radius-sm);
|
|
background: var(--glass-surface-inset);
|
|
color: var(--text-body);
|
|
font-size: var(--fs-xs);
|
|
line-height: 1.55;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
body[data-page="settings"] .vg-set__ticket-note b {
|
|
color: var(--text-strong);
|
|
font-size: var(--fs-kicker);
|
|
letter-spacing: 0.04em;
|
|
}
|
|
body[data-page="settings"] .vg-set__ticket-note--empty {
|
|
color: var(--text-muted);
|
|
}
|
|
body[data-page="settings"] .vg-set__foot {
|
|
margin-top: 12px;
|
|
padding-top: 12px;
|
|
}
|
|
body[data-page="settings"] .vg-set__pill {
|
|
background: var(--glass-surface-inset);
|
|
}
|
|
|
|
/* 721~1080px 구간을 상단 가로 탭으로 접는다.
|
|
이 폭에서 좌측 레일 배치가 두 갈래로 깨져 서브네비 라벨 7개가 모두 폭 0 이 됐다.
|
|
(1) 981~1080px: 공용 `@media (max-width:1080px) .vg-set__rail{display:grid;
|
|
grid-template-columns:minmax(220px,280px) minmax(0,1fr)}` 가 이 페이지 레일까지
|
|
덮어썼다. 레일 트랙은 244px 뿐이라 실측상 `220px 0px` 로 풀려 nav 폭 0,
|
|
nav-item 폭 28px 로 찌그러졌다(981·1023~1025·1079~1081 재현).
|
|
(2) 721~980px: 이전 980 미디어쿼리가 레일을 86px 아이콘 전용으로 만들며
|
|
`.vg-set__nav-item span{display:none}` 으로 라벨을 통째로 숨겼다.
|
|
두 경우 모두 라벨이 사라지므로, 이 프로젝트가 선호하는 가로 탭 전환으로 통일한다.
|
|
244px+28px+820px = 1092px 를 요구하는 2열 배치는 1081px 이상에서만 쓴다. */
|
|
@media (max-width: 1080px) {
|
|
body[data-page="settings"] .vg-set__callout {
|
|
margin: var(--sp-4) 24px 0;
|
|
}
|
|
body[data-page="settings"] .vg-set {
|
|
display: block;
|
|
min-height: 100dvh;
|
|
max-width: none;
|
|
padding: 0 24px 28px;
|
|
}
|
|
/* 공용 1080 미디어쿼리의 2열 grid 를 무효화해 레일 전체를 가로 탭 바로 되돌린다.
|
|
이 구간에서는 아래 폼 카드와 같은 폭·라운드로 맞춰 탭이 카드 밖으로 삐져나오지 않게 한다. */
|
|
body[data-page="settings"] .vg-set__rail {
|
|
display: block;
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 20;
|
|
min-height: auto;
|
|
margin: 0 0 14px;
|
|
padding: 14px 16px 10px;
|
|
border-radius: var(--radius);
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title {
|
|
gap: 10px;
|
|
padding: 0 0 12px;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title h1 {
|
|
font-size: 19px;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title p {
|
|
display: none;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-mark {
|
|
width: 26px;
|
|
height: 26px;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-status {
|
|
display: none;
|
|
}
|
|
/* 탭이 많아 폭이 모자라면 가로 스크롤로 흘린다(라벨은 계속 노출). */
|
|
body[data-page="settings"] .vg-set__nav {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: nowrap;
|
|
gap: 6px;
|
|
overflow-x: auto;
|
|
padding: 0 0 2px;
|
|
scrollbar-width: thin;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item {
|
|
flex: 0 0 auto;
|
|
min-height: 38px;
|
|
gap: 7px;
|
|
padding: 0 12px;
|
|
font-size: 13px;
|
|
white-space: nowrap;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item span {
|
|
display: inline;
|
|
}
|
|
body[data-page="settings"] .vg-set__forms {
|
|
max-width: none;
|
|
}
|
|
}
|
|
|
|
/* ≤720px 는 위 1080 가로 탭 배치를 그대로 이어받고 여백·타이포만 더 좁힌다.
|
|
display/position/overflow 같은 배치 선언은 1080 블록에 한 번만 두고 여기선 중복 제거. */
|
|
@media (max-width: 720px) {
|
|
body[data-page="settings"] .vg-set__callout {
|
|
margin: 12px 12px 0;
|
|
}
|
|
body[data-page="settings"] .vg-set {
|
|
padding: 0 16px 28px;
|
|
}
|
|
/* ≤720px 만 full-bleed 상단 바(모바일 헤더 패턴)로 되돌린다. */
|
|
body[data-page="settings"] .vg-set__rail {
|
|
margin: 0 -16px 12px;
|
|
padding: 13px 16px 10px;
|
|
border-radius: 0;
|
|
border-bottom-color: var(--glass-border);
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title {
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 0 0 10px;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-title h1 {
|
|
font-size: 16px;
|
|
}
|
|
body[data-page="settings"] .vg-set__rail-mark {
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav {
|
|
justify-content: center;
|
|
gap: 4px;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item {
|
|
min-height: 34px;
|
|
gap: 5px;
|
|
padding: 0 7px;
|
|
font-size: 11px;
|
|
}
|
|
body[data-page="settings"] .vg-set__nav-item svg {
|
|
width: 14px;
|
|
height: 14px;
|
|
}
|
|
body[data-page="settings"] .vg-set__forms {
|
|
gap: 10px;
|
|
}
|
|
body[data-page="settings"] .vg-set__group {
|
|
padding: 13px;
|
|
}
|
|
body[data-page="settings"] .vg-set__field-grid--account,
|
|
body[data-page="settings"] .vg-set__field-grid--engine,
|
|
body[data-page="settings"] .vg-set__seg,
|
|
body[data-page="settings"] .vg-set__voicelist {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
body[data-page="settings"] .vg-set__field--wide {
|
|
grid-column: auto;
|
|
}
|
|
body[data-page="settings"] .vg-set__group-head--split {
|
|
flex-direction: column;
|
|
}
|
|
body[data-page="settings"] .vg-set__ops {
|
|
width: 100%;
|
|
}
|
|
body[data-page="settings"] .vg-set__voice {
|
|
min-height: 0;
|
|
}
|
|
}
|