/* G1 치료 동맹 펄스. 기존 Vignette 임상 워크벤치 토큰을 그대로 따른다. */ .ap-card { display: grid; gap: var(--sp-4); padding: var(--sp-5); overflow: hidden; border-color: color-mix(in srgb, var(--accent) 22%, var(--border-subtle)); background: color-mix(in srgb, var(--bg-surface) 94%, var(--accent-tint)); } .ap-card__head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: var(--sp-4); } .ap-card__head h2 { margin: 5px 0 0; color: var(--text-strong); font-size: clamp(1.15rem, 1.7vw, var(--fs-h2)); font-weight: 720; line-height: 1.25; letter-spacing: -0.018em; } .ap-card__status-copy { max-width: 72ch; margin: -6px 0 0; color: var(--text-body); font-size: var(--fs-sm); line-height: 1.6; } .ap-self-form, .ap-waiting, .ap-comparison, .ap-supervisor, .ap-empty, .ap-load-error { border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); background: var(--bg-surface-2); box-shadow: var(--glass-inset-shadow); } .ap-self-form { display: grid; gap: var(--sp-4); padding: var(--sp-4); } .ap-self-form__intro { display: grid; gap: 4px; } .ap-self-form__intro b { color: var(--text-strong); font-size: var(--fs-body); } .ap-self-form__intro p, .ap-empty p, .ap-load-error p, .ap-waiting p, .ap-supervisor__body > p { margin: 0; color: var(--text-body); font-size: var(--fs-sm); line-height: 1.6; } .ap-axis { min-width: 0; display: grid; grid-template-columns: minmax(180px, 0.75fr) minmax(360px, 1.8fr); align-items: center; gap: var(--sp-4); margin: 0; padding: var(--sp-3) 0; border: 0; border-top: 1px solid var(--hair); } .ap-axis legend { display: contents; } .ap-axis legend > span { align-self: end; color: var(--text-strong); font-size: var(--fs-sm); font-weight: 720; } .ap-axis legend > small { grid-column: 1; align-self: start; color: var(--text-muted); font-size: var(--fs-xs); line-height: 1.45; } .ap-scale { grid-column: 2; grid-row: 1 / span 2; display: grid; grid-template-columns: repeat(5, minmax(68px, 1fr)); gap: 6px; } .ap-scale__option { position: relative; min-width: 0; min-height: 62px; display: grid; place-content: center; gap: 3px; padding: 8px 5px; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); color: var(--text-body); background: var(--bg-surface); text-align: center; cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), border-color var(--dur-base) var(--ease-out), background-color var(--dur-base) var(--ease-out); } .ap-scale__option:hover { border-color: color-mix(in srgb, var(--accent) 44%, var(--border-subtle)); transform: translateY(-1px); } .ap-scale__option:active { transform: translateY(1px); } .ap-scale__option.is-selected { border-color: var(--accent); color: var(--text-accent); background: var(--accent-tint); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent); } .ap-scale__option input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; } .ap-scale__option:has(input:focus-visible) { outline: 3px solid var(--focus-ring); outline-offset: 2px; } .ap-scale__option > span { font-family: var(--font-num); font-size: var(--fs-sm); font-weight: 760; } .ap-scale__option > small { overflow: hidden; color: inherit; font-size: 11px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; } .ap-evidence-picker { border: 1px solid var(--border-subtle); border-radius: var(--radius); background: var(--bg-surface); } .ap-evidence-picker > summary, .ap-supervisor > summary, .ap-measurement-evidence > summary { cursor: pointer; color: var(--text-strong); font-size: var(--fs-sm); font-weight: 690; } .ap-evidence-picker > summary { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); padding: 11px 13px; } .ap-evidence-picker > summary span { color: var(--text-muted); font-size: var(--fs-xs); font-weight: 620; } .ap-evidence-picker > summary:focus-visible, .ap-supervisor > summary:focus-visible, .ap-measurement-evidence > summary:focus-visible, .ap-measurement-evidence__turns button:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; } .ap-evidence-picker__list { max-height: 260px; overflow: auto; display: grid; gap: 6px; padding: 0 10px 10px; } .ap-evidence-picker__list label { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: start; gap: 9px; padding: 9px 10px; border-radius: var(--radius-sm); color: var(--text-body); background: var(--bg-surface-2); font-size: var(--fs-xs); line-height: 1.45; cursor: pointer; } .ap-evidence-picker__list label:has(input:checked) { color: var(--text-strong); background: var(--accent-tint); } .ap-evidence-picker__list input { width: 16px; height: 16px; margin: 2px 0 0; accent-color: var(--accent); } .ap-evidence-picker__list b { display: block; margin-bottom: 2px; color: var(--text-strong); } .ap-evidence-picker__time { padding-top: 1px; color: var(--text-muted); font-family: var(--font-num); } .ap-self-form__commit { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4); } .ap-self-form__commit > span { display: inline-flex; align-items: center; gap: 7px; color: var(--text-muted); font-size: var(--fs-xs); line-height: 1.45; } .ap-waiting { display: grid; grid-template-columns: auto minmax(0, 1fr) minmax(170px, 0.45fr); align-items: center; gap: var(--sp-4); padding: var(--sp-4); } .ap-waiting__lock { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; color: var(--text-accent); background: var(--accent-tint); } .ap-waiting b, .ap-empty b { color: var(--text-strong); font-size: var(--fs-body); } .ap-waiting__skeleton, .ap-loading { display: grid; gap: 8px; } .ap-waiting__skeleton span, .ap-loading span { height: 10px; border-radius: var(--radius-sm); background: var(--neutral-150); transform-origin: left center; } .ap-waiting__skeleton span:nth-child(2), .ap-loading span:nth-child(2) { width: 72%; } .ap-waiting__skeleton span:nth-child(3), .ap-loading span:nth-child(3) { width: 86%; } @media (prefers-reduced-motion: no-preference) { .ap-waiting__skeleton span, .ap-loading span { animation: ap-breathe 1.8s var(--ease-in-out) infinite alternate; } } @keyframes ap-breathe { from { opacity: 0.42; transform: scaleX(0.94); } to { opacity: 0.84; transform: scaleX(1); } } .ap-locked-scores { grid-column: 2 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin: 0; overflow: hidden; border: 1px solid var(--border-subtle); border-radius: var(--radius); background: var(--border-subtle); } .ap-locked-scores > div { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 9px 11px; background: var(--bg-surface); } .ap-locked-scores dt { color: var(--text-muted); font-size: var(--fs-xs); } .ap-locked-scores dd { margin: 0; color: var(--text-strong); font-family: var(--font-num); font-size: var(--fs-sm); font-weight: 730; } .ap-comparison { padding: var(--sp-3); } .ap-comparison__head, .ap-comparison__row { display: grid; grid-template-columns: minmax(172px, 0.8fr) repeat(3, minmax(0, 1fr)); gap: 1px; } .ap-comparison__head.has-supervisor, .ap-comparison__row.has-supervisor { grid-template-columns: minmax(172px, 0.8fr) repeat(4, minmax(0, 1fr)); } .ap-comparison__head { margin-bottom: 1px; color: var(--text-muted); background: var(--border-subtle); } .ap-comparison__head > span { display: grid; gap: 2px; padding: 9px 11px; background: var(--bg-surface-2); font-size: var(--fs-xs); } .ap-comparison__head b { color: var(--text-strong); font-size: var(--fs-xs); } .ap-comparison__head small { color: var(--text-muted); font-size: 11px; } .ap-comparison__row { margin-top: 1px; background: var(--border-subtle); } .ap-comparison__axis, .ap-perspective-cell { min-width: 0; padding: 13px 11px; background: var(--bg-surface); } .ap-comparison__axis { display: grid; align-content: start; gap: 4px; background: color-mix(in srgb, var(--bg-surface) 80%, var(--accent-tint)); } .ap-comparison__axis b { color: var(--text-strong); font-size: var(--fs-sm); } .ap-comparison__axis span { color: var(--text-muted); font-size: 11px; line-height: 1.45; } .ap-perspective-cell { display: grid; align-content: start; gap: 3px; } .ap-perspective-cell__label { display: none; gap: 2px; } .ap-perspective-cell__label b { color: var(--text-strong); font-size: var(--fs-xs); } .ap-perspective-cell__label small { color: var(--text-muted); font-size: 11px; } .ap-perspective-cell > strong { color: var(--text-strong); font-family: var(--font-num); font-size: var(--fs-h3); font-weight: 720; } .ap-perspective-cell > span, .ap-perspective-cell > small { color: var(--text-body); font-size: var(--fs-xs); line-height: 1.4; } .ap-perspective-cell.is-unavailable > strong, .ap-perspective-cell.is-unavailable > span { color: var(--text-muted); } .ap-measurement-evidence { margin-top: 8px; } .ap-measurement-evidence > summary { color: var(--text-accent); font-size: var(--fs-xs); } .ap-measurement-evidence > p { margin: 8px 0 0; color: var(--text-body); font-size: var(--fs-xs); line-height: 1.5; } .ap-measurement-evidence__turns { display: grid; gap: 5px; margin-top: 7px; } .ap-measurement-evidence__turns button { min-width: 0; padding: 7px 8px; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); color: var(--text-body); background: var(--bg-surface-2); font: inherit; font-size: 11px; line-height: 1.4; text-align: left; cursor: pointer; transition: transform var(--dur-fast) var(--ease-out), border-color var(--dur-base) var(--ease-out); } .ap-measurement-evidence__turns button:hover { border-color: var(--accent); transform: translateY(-1px); } .ap-measurement-evidence__turns button:active { transform: translateY(1px); } .ap-measurement-evidence__turns button span { display: block; margin-bottom: 2px; color: var(--text-accent); font-family: var(--font-num); } .ap-comparison__note { margin: var(--sp-3) 2px 0; color: var(--text-muted); font-size: var(--fs-xs); line-height: 1.5; } .ap-supervisor { overflow: hidden; } .ap-supervisor > summary { padding: 12px 14px; background: var(--bg-surface-2); } .ap-supervisor[open] > summary { border-bottom: 1px solid var(--border-subtle); } .ap-supervisor__body { display: grid; gap: var(--sp-4); padding: var(--sp-4); background: var(--bg-surface); } .ap-note-field { display: grid; gap: 7px; color: var(--text-strong); font-size: var(--fs-sm); font-weight: 650; } .ap-note-field textarea { width: 100%; resize: vertical; padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-sm); color: var(--text-strong); background: var(--bg-surface-2); font: inherit; font-weight: 450; line-height: 1.55; } .ap-note-field textarea::placeholder { color: var(--neutral-400); } .ap-note-field textarea:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 2px; border-color: var(--border-focus); } .ap-loading { min-height: 130px; align-content: center; padding: var(--sp-5); } .ap-empty, .ap-load-error { display: grid; justify-items: start; gap: 7px; padding: var(--sp-4); } .ap-inline-error, .ap-inline-success { margin: 0; padding: 9px 11px; border-radius: var(--radius-sm); font-size: var(--fs-xs); line-height: 1.5; } .ap-inline-error { color: var(--crit-text); background: var(--crit-tint); } .ap-inline-success { color: var(--pos-text); background: var(--pos-tint); } @media (max-width: 980px) { .ap-axis { grid-template-columns: 1fr; gap: 7px; } .ap-axis legend > small, .ap-scale { grid-column: 1; } .ap-scale { grid-row: auto; margin-top: 4px; } .ap-comparison__head { display: none; } .ap-comparison__row, .ap-comparison__row.has-supervisor { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin-top: var(--sp-3); } .ap-comparison__axis { grid-column: 1 / -1; } .ap-comparison__row.has-supervisor .ap-perspective-cell:last-child { grid-column: 1 / -1; } .ap-perspective-cell__label { display: grid; } } @media (max-width: 720px) { .ap-self-form__commit .vg-btn { min-height: 44px; } } @media (max-width: 680px) { .ap-card { padding: var(--sp-4); } .ap-card__head { grid-template-columns: 1fr; gap: var(--sp-2); } .ap-card__head .vg-badge { justify-self: start; } .ap-self-form { padding: var(--sp-3); } .ap-scale { width: 100%; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; } .ap-scale__option { min-height: 52px; padding: 7px 2px; } .ap-scale__option > small { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); } .ap-self-form__commit { align-items: stretch; flex-direction: column; } .ap-self-form__commit .vg-btn { width: 100%; } .ap-waiting { grid-template-columns: auto minmax(0, 1fr); align-items: start; } .ap-waiting__skeleton { grid-column: 1 / -1; } .ap-locked-scores { grid-column: 1 / -1; } .ap-comparison { padding: var(--sp-2); } .ap-comparison__row, .ap-comparison__row.has-supervisor { grid-template-columns: 1fr; } .ap-comparison__axis, .ap-comparison__row.has-supervisor .ap-perspective-cell:last-child { grid-column: 1; } .ap-perspective-cell { display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr); align-items: baseline; column-gap: var(--sp-3); } .ap-perspective-cell__label { grid-column: 1 / -1; } .ap-perspective-cell > strong { font-size: var(--fs-body); } .ap-perspective-cell .ap-measurement-evidence, .ap-perspective-cell > small { grid-column: 1 / -1; } .ap-evidence-picker__list label { grid-template-columns: auto minmax(0, 1fr); } .ap-evidence-picker__time { display: none; } } @media (max-width: 360px) { .ap-scale { grid-template-columns: repeat(6, minmax(0, 1fr)); } .ap-scale__option { grid-column: span 2; } .ap-scale__option:nth-child(4) { grid-column: 2 / span 2; } .ap-scale__option:nth-child(5) { grid-column: 4 / span 2; } } @media (prefers-reduced-motion: reduce) { .ap-scale__option, .ap-measurement-evidence__turns button { transition: none; } }