/* 시트 로직 — 위 가로 다이어그램 */ .m01-sldg { --sldg-in: var(--color-accent); --sldg-out: #c2610c; display: flex; flex-direction: column; gap: var(--spacing-8); min-width: 0; font-size: var(--text-body-sm); outline: none; } :root[data-theme="dark"] .m01-sldg { --sldg-out: #e5a866; } @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .m01-sldg { --sldg-out: #e5a866; } } .m01-sldg__bar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-8); min-height: 2rem; } .m01-sldg__note { color: var(--color-danger); } .m01-sldg__muted { margin: 0; color: var(--color-text-muted); } .m01-sldg__menu { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-4); padding: var(--spacing-8); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-surface); } .m01-sldg__menu[hidden] { display: none; } /* 띠 — 화면 위 3분의 1 안쪽 · 길면 가로로 밀기 */ .m01-sldg__band { max-height: 33vh; overflow: auto; border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: color-mix(in srgb, var(--color-accent) 5%, var(--color-canvas)); } .m01-sldg__inner { position: relative; display: grid; grid-template-columns: repeat(5, minmax(11rem, 1fr)); gap: var(--spacing-24); min-width: max-content; padding: var(--spacing-12) var(--spacing-16); } .m01-sldg__lines { position: absolute; inset: 0 auto auto 0; overflow: visible; pointer-events: none; z-index: 0; } .m01-sldg__col { position: relative; z-index: 1; display: flex; flex-direction: column; gap: var(--spacing-12); min-width: 11rem; } .m01-sldg__col-head { color: var(--color-text-muted); font-size: var(--text-caption); letter-spacing: 0.04em; } /* 상자 */ .m01-sldg__box { display: flex; flex-direction: column; gap: var(--spacing-4); padding: var(--spacing-8); border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-surface); cursor: pointer; } .m01-sldg__box:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } .m01-sldg__box.is-selected { border: 2px solid var(--color-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-accent) 18%, transparent); } .m01-sldg__box-head { display: flex; flex-direction: column; } .m01-sldg__kind { color: var(--color-text-muted); font-size: var(--text-caption); } .m01-sldg__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .m01-sldg__pills { display: flex; justify-content: space-between; gap: var(--spacing-8); } .m01-sldg__ins, .m01-sldg__outs { display: flex; flex-direction: column; gap: var(--spacing-4); min-width: 0; } .m01-sldg__outs { align-items: flex-end; } /* 알약 — 입력 파랑 · 출력 주황 · 빈 자리 회색 */ .m01-sldg__pill { display: inline-flex; align-items: baseline; gap: var(--spacing-4); max-width: 10rem; padding: 0 var(--spacing-8); border: 1px solid var(--sldg-in); border-radius: 999px; background: color-mix(in srgb, var(--sldg-in) 12%, var(--color-surface)); color: var(--sldg-in); font: inherit; font-size: var(--text-caption); cursor: pointer; white-space: nowrap; } .m01-sldg__pill.is-out { border-color: var(--sldg-out); background: color-mix(in srgb, var(--sldg-out) 14%, var(--color-surface)); color: var(--sldg-out); cursor: grab; touch-action: none; } .m01-sldg__pill.is-empty { border-style: dashed; border-color: var(--color-text-muted); background: transparent; color: var(--color-text-muted); } .m01-sldg__pill.is-chosen { box-shadow: 0 0 0 2px currentColor; } .m01-sldg.is-linking .m01-sldg__pill.is-target { box-shadow: 0 0 0 2px var(--sldg-in); animation: m01-sldg-blink 1s ease-in-out infinite alternate; } @keyframes m01-sldg-blink { to { background: color-mix(in srgb, var(--sldg-in) 30%, var(--color-surface)); } } .m01-sldg__pill-name { overflow: hidden; text-overflow: ellipsis; } .m01-sldg__pill-value { color: var(--color-text-secondary); font-variant-numeric: tabular-nums; } .m01-sldg__pill-value:empty { display: none; } /* 선 */ .m01-sldg__edge { pointer-events: auto; cursor: pointer; } .m01-sldg__hit { fill: none; stroke: transparent; stroke-width: 12; } .m01-sldg__wire { fill: none; stroke: var(--color-text-muted); stroke-width: 1.5; } .m01-sldg__edge.is-strong .m01-sldg__wire { stroke: var(--color-accent); stroke-width: 3; } .m01-sldg__edge.is-dim .m01-sldg__wire { opacity: 0.3; } .m01-sldg__drag { fill: none; stroke: var(--sldg-out); stroke-width: 2; stroke-dasharray: 5 4; } @media (prefers-reduced-motion: reduce) { .m01-sldg.is-linking .m01-sldg__pill.is-target { animation: none; } }