/* ═══ EMC Test Tracker — kiss-data 위에 더한 셸·컴포넌트 ═══
   원본 토큰: vendor/kiss-data.css (수정 금지). 여기 쓰는 색은 모두 tokens.css 변수.
   규격은 docs/DESIGN.md 「컴포넌트」표와 1:1. `.et-` = 레이아웃 전용, `.kd-` = 컴포넌트(kiss-data 형식). */
:root{
  --et-font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace; /* 확인필요: kiss-data에 모노 없음 */
  --et-side-w:240px; --et-side-rail:72px; --et-nav-h:50px;
  --et-side-active-bg:var(--b50);           /* 확인필요 */
  --et-status-bg-alpha:1;
}
[data-theme="dark"]{--et-side-active-bg:var(--nd600)}
html,body{margin:0}
body.kd{background:var(--kd-page);min-height:100vh}
a{color:var(--b500)}

/* ── 앱 셸: 사이드바 240 / 레일 72 + 상단 바 50 ── */
.et-app{display:grid;grid-template-columns:var(--et-side-w) 1fr;min-height:100vh;transition:grid-template-columns .18s cubic-bezier(.2,.8,.2,1)}
.et-side{position:sticky;top:0;height:100vh;background:var(--kd-surface);box-shadow:var(--kd-shadow-04);display:flex;flex-direction:column;overflow:hidden;z-index:6}
.et-brand{height:var(--et-nav-h);flex:none;display:flex;align-items:center;gap:10px;padding:0 20px;font:600 15px/1 var(--kd-font-ui);color:var(--kd-heading-focus);white-space:nowrap;border-bottom:1px solid var(--kd-divider)}
.et-brand i{width:24px;height:24px;border-radius:4px;background:var(--kd-3dbar);flex:none}
.et-brand small{font-weight:500;font-size:11px;color:var(--kd-placeholder);margin-left:auto;font-family:var(--et-font-mono)}
.et-nav{flex:1;overflow-y:auto;padding:8px 0 16px}
.et-group{padding:14px 20px 4px;font-size:11px;line-height:16px;font-weight:600;letter-spacing:.6px;color:var(--kd-placeholder);white-space:nowrap}
.et-nav a{position:relative;display:flex;align-items:center;gap:12px;height:36px;padding:0 20px;color:var(--kd-body);text-decoration:none;font-weight:500;white-space:nowrap}
.et-nav a:hover{background:var(--kd-surface-input)}
.et-nav a[aria-current]{background:var(--et-side-active-bg);color:var(--b500)}
.et-nav a[aria-current]::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--b500)}
.et-nav a .ic{width:20px;height:20px;flex:none;display:grid;place-items:center;font-size:18px;color:inherit}
.et-nav a .cnt{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--o500);color:#fff;font:500 11px/20px var(--kd-font-num);text-align:center}
.et-nav a.sub{height:30px;padding-left:52px;font-size:13px;font-weight:400;color:var(--kd-label)}
.et-nav a.sub[aria-current]{color:var(--b500)}
.et-side-ft{flex:none;padding:10px 16px 10px 20px;border-top:1px solid var(--kd-divider);display:flex;align-items:center;gap:10px;font-size:12px;color:var(--kd-label);white-space:nowrap}
.et-collapse{all:unset;cursor:pointer;margin-left:auto;width:28px;height:28px;display:grid;place-items:center;border-radius:4px;color:var(--kd-label);font-size:16px}
.et-collapse:hover{background:var(--kd-surface-input)}
.et-app.rail{grid-template-columns:var(--et-side-rail) 1fr}
.et-app.rail .et-group,.et-app.rail .et-nav a span,.et-app.rail .et-nav a.sub,.et-app.rail .et-brand span,.et-app.rail .et-brand small,.et-app.rail .et-side-ft span{display:none}
.et-app.rail .et-nav a,.et-app.rail .et-brand{justify-content:center;padding:0}
.et-app.rail .et-nav a .cnt{position:absolute;top:2px;right:12px;min-width:16px;height:16px;line-height:16px;padding:0 4px;font-size:10px}
.et-app.rail .et-side-ft{justify-content:center;padding:10px 0}.et-app.rail .et-collapse{margin:0;transform:rotate(180deg)}
@media (max-width:1023px){
  .et-app{grid-template-columns:var(--et-side-rail) 1fr}
  .et-group,.et-nav a span,.et-nav a.sub,.et-brand span,.et-brand small,.et-side-ft span,.et-collapse{display:none}
  .et-nav a,.et-brand{justify-content:center;padding:0}
  .et-nav a .cnt{position:absolute;top:2px;right:12px;min-width:16px;height:16px;line-height:16px;padding:0 4px;font-size:10px}
}
.et-main{min-width:0;display:flex;flex-direction:column}
.et-top{height:var(--et-nav-h);flex:none;background:var(--kd-surface);box-shadow:var(--kd-shadow-02);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:5}
.et-crumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--kd-label);white-space:nowrap;min-width:0;overflow:hidden}
.et-crumb a{color:inherit;text-decoration:none}.et-crumb a:hover{color:var(--kd-title)}.et-crumb b{color:var(--kd-title);font-weight:500}.et-crumb .sep{color:var(--kd-placeholder)}
.et-search{width:300px;flex:none}.et-search .kd-input{height:32px;padding:6px 12px}
.et-top-r{margin-left:auto;display:flex;align-items:center;gap:12px;flex:none}
.et-chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:4px;background:var(--kd-surface-input);color:var(--kd-label);font:500 12px/16px var(--et-font-mono);white-space:nowrap;text-decoration:none}
.et-chip i{width:8px;height:8px;border-radius:50%;background:var(--g500)}
.et-ring{width:22px;height:22px;transform:rotate(-90deg)}.et-ring circle{fill:none;stroke-width:3}.et-ring .bg{stroke:var(--kd-divider)}.et-ring .fg{stroke:var(--b500);stroke-linecap:round}
.et-editor{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--kd-body);white-space:nowrap}
.et-editor .kd-avatar.xs{--s:22px}
.seg{display:inline-flex;gap:2px;padding:3px;border-radius:4px;background:var(--kd-surface-input)}
.seg button{all:unset;height:22px;padding:0 10px;border-radius:2px;color:var(--kd-body);font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.seg button[aria-pressed="true"]{background:var(--kd-surface);color:var(--kd-title);box-shadow:var(--kd-shadow-02)}
.seg.primary button[aria-pressed="true"]{background:var(--b500);color:#fff;box-shadow:none}

/* ── 본문: 제목 줄 + 12단 격자 ── */
.et-body{padding:0 48px 48px;max-width:1920px;width:100%;margin:0 auto;box-sizing:border-box}
.et-titlebar{display:flex;align-items:center;gap:12px;min-height:72px;padding:16px 0 14px;border-bottom:1px solid var(--kd-divider);flex-wrap:wrap}
.et-title{display:flex;flex-direction:column;gap:4px;min-width:0}
.et-title h1{font-size:20px;line-height:28px;font-weight:500;color:var(--kd-title);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.et-title p{font-size:13px;line-height:18px;color:var(--kd-label);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.et-chips{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.et-actions{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.et-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:20px}
.s2{grid-column:span 2}.s3{grid-column:span 3}.s4{grid-column:span 4}.s5{grid-column:span 5}.s6{grid-column:span 6}.s7{grid-column:span 7}.s8{grid-column:span 8}.s9{grid-column:span 9}.s12{grid-column:span 12}
.et-card{background:var(--kd-surface);border-radius:8px;box-shadow:var(--kd-shadow-02);padding:20px 24px;min-width:0;display:flex;flex-direction:column;gap:12px}
.et-card .hd{display:flex;align-items:flex-start;gap:12px}
.et-card .hd h4{font-size:16px;line-height:24px;font-weight:500;color:var(--kd-title)}
.et-card .hd p{font-size:13px;line-height:18px;color:var(--kd-label)}
.et-card .hd .r{margin-left:auto;display:flex;gap:8px;align-items:center;flex:none}
.et-card.pad0{padding:0}.et-card.pad0 .hd{padding:20px 24px 0}.et-card.pad0 .tbl-wrap{padding-bottom:4px}
.et-kpi{cursor:pointer;text-decoration:none;gap:8px}
.et-kpi:hover{box-shadow:var(--kd-shadow-04)}
.et-kpi .foot{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--kd-label)}
.et-kpi.alert .kd-indicator .val{color:var(--r400)}
.tbl-wrap{overflow-x:auto}
.kd-table.sm td,.kd-table.sm th{font-size:13px}
.kd-table td.mono,.mono{font-family:var(--et-font-mono);font-size:13px;letter-spacing:0}
.kd-table tr.is-selected td{background:var(--b50)}[data-theme="dark"] .kd-table tr.is-selected td{background:var(--nd600)}
.kd-table tbody tr[data-href]{cursor:pointer}.kd-table tbody tr[data-href]:hover td{background:var(--nl100)}[data-theme="dark"] .kd-table tbody tr[data-href]:hover td{background:var(--nd600)}
.et-ro{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 8px;border-radius:4px;background:var(--kd-surface-input);color:var(--kd-label);font-size:12px;font-weight:500;white-space:nowrap}
.et-ro .kd-i{width:12px;height:12px}
.et-path{display:inline-flex;align-items:center;gap:8px;font-family:var(--et-font-mono);font-size:12px;color:var(--kd-label);background:var(--kd-surface-input);padding:2px 8px;border-radius:4px;max-width:100%;min-width:0}
.et-path span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.et-path button{all:unset;cursor:pointer;display:grid;place-items:center;color:var(--kd-label)}.et-path button:hover{color:var(--b500)}
.et-divider{height:1px;background:var(--kd-divider);margin:4px 0}
.et-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px 16px}
.et-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.et-field label{font-size:12px;line-height:16px;font-weight:500;letter-spacing:.4px;color:var(--kd-label);display:flex;gap:4px;align-items:center}
.et-field label .req{color:var(--r400)}
.et-field .v{font-size:14px;line-height:20px;color:var(--kd-title);min-height:20px;word-break:keep-all}
.et-field .kd-input{height:32px;padding:6px 12px;font-size:13px}
.et-stack{display:flex;flex-direction:column;gap:12px}
.et-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.et-muted{color:var(--kd-label);font-size:13px}
.et-dist{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--kd-surface-input)}.et-dist i{display:block;height:100%}
.et-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--kd-label)}.et-legend span{display:inline-flex;align-items:center;gap:6px}.et-legend i{width:8px;height:8px;border-radius:2px;background:var(--c)}

/* ── StatusBadge ── 글자 필수(색만으로 구분 금지) */
.kd-status{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:4px;font-size:12px;line-height:16px;font-weight:500;letter-spacing:.4px;white-space:nowrap;background:var(--bg);color:var(--fg);border:1px solid transparent}
.kd-status.success{--fg:var(--g600);--bg:var(--g50)}
.kd-status.danger{--fg:var(--r500);--bg:var(--r50)}
.kd-status.warning{--fg:var(--o600);--bg:var(--o50)}
.kd-status.info{--fg:var(--b700);--bg:var(--b50)}
.kd-status.neutral{--fg:var(--nl600);--bg:var(--nl200)}
.kd-status.outline{background:transparent;border-color:var(--fg)}
.kd-status .kd-i,.kd-status iconify-icon{width:12px;height:12px;font-size:12px}
[data-theme="dark"] .kd-status{--bg:var(--nd600)}
[data-theme="dark"] .kd-status.success{--fg:var(--g300)}[data-theme="dark"] .kd-status.danger{--fg:var(--r300)}
[data-theme="dark"] .kd-status.warning{--fg:var(--o300)}[data-theme="dark"] .kd-status.info{--fg:var(--b300)}[data-theme="dark"] .kd-status.neutral{--fg:var(--nd300)}

/* ── CategoryChip CE/CS/RE/RS · MarkerChip A/L/S/- ── */
.kd-cat{display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:4px;font:600 12px/16px var(--et-font-mono);letter-spacing:.2px;color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent);white-space:nowrap}
.kd-cat.ce{--c:var(--g500)}.kd-cat.cs{--c:var(--o500)}.kd-cat.re{--c:var(--b400)}.kd-cat.rs{--c:var(--r400)}.kd-cat.etc{--c:var(--nl500)}
[data-theme="dark"] .kd-cat{background:color-mix(in srgb,var(--c) 22%,transparent)}
.kd-mk{width:20px;height:20px;border-radius:50%;display:inline-grid;place-items:center;font:600 11px/1 var(--kd-font-num);color:#fff;background:var(--c);flex:none}
.kd-mk.a{--c:var(--g500)}.kd-mk.l{--c:var(--o500)}.kd-mk.s{--c:var(--b400)}.kd-mk.n{--c:var(--nl400)}

/* ── FolderTokenChips ── CE102_M#01_S#DC25V_P#HOT_T#01 */
.kd-folder{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}
.kd-folder .tk{display:inline-flex;align-items:center;height:20px;padding:0 6px;border-radius:4px;background:var(--kd-surface-input);color:var(--kd-body);font:500 12px/16px var(--et-font-mono);white-space:nowrap}
.kd-folder .tk b{color:var(--kd-placeholder);font-weight:500;margin-right:1px}
.kd-folder .tk.sfx{color:var(--kd-label);font-style:italic}

/* ── MarginValue · FrequencyValue ── 마진 = limit − measured, 음수 = 초과 */
.kd-margin{display:inline-flex;align-items:center;gap:4px;font-family:var(--et-font-mono);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500;white-space:nowrap}
.kd-margin.over{color:var(--r400)}.kd-margin.near{color:var(--o500)}.kd-margin.ok{color:var(--g500)}
.kd-margin .kd-i{width:14px;height:14px}
.kd-freq{font-family:var(--et-font-mono);font-variant-numeric:tabular-nums;font-size:13px;white-space:nowrap}
.kd-freq small{color:var(--kd-label);font-size:12px;margin-left:2px}

/* ── SystemField / SnapshotField / ProvenanceTag ── */
.kd-sysfield,.kd-snapfield{display:flex;align-items:center;gap:8px;min-height:32px;padding:6px 12px;border-radius:4px;background:var(--kd-surface-input);color:var(--kd-body);font-size:13px;line-height:20px}
.kd-sysfield .mark,.kd-snapfield .mark{margin-left:auto;display:inline-flex;align-items:center;gap:4px;height:18px;padding:0 6px;font-size:11px;color:var(--kd-placeholder);border:1px dashed var(--kd-line);border-radius:3px;white-space:nowrap;flex:none}
.kd-sysfield .mark iconify-icon,.kd-snapfield .mark iconify-icon{font-size:12px}
.kd-prov{display:inline-flex;align-items:center;gap:4px;height:18px;padding:0 6px;border-radius:3px;background:var(--kd-surface-input);color:var(--kd-label);font-size:11px;line-height:16px;font-weight:500;white-space:nowrap}
.kd-prov iconify-icon{font-size:12px}
.kd-prov.auto{color:var(--b600)}[data-theme="dark"] .kd-prov.auto{color:var(--b300)}

/* ── Kanban ── */
.kd-kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:16px;overflow-x:auto;padding-bottom:8px}
.kd-kanban .col{display:flex;flex-direction:column;gap:8px;min-width:0}
.kd-kanban .col>.hd{display:flex;align-items:center;gap:8px;padding:4px 4px 8px;border-bottom:1px solid var(--kd-divider);font-size:13px;color:var(--kd-label)}
.kd-kanban .col>.hd .n{margin-left:auto;font-family:var(--kd-font-num);color:var(--kd-body)}
.kd-kanban .card{background:var(--kd-surface);border-radius:8px;box-shadow:var(--kd-shadow-02);padding:12px;display:flex;flex-direction:column;gap:6px;cursor:pointer;border:1px solid transparent;text-align:left}
.kd-kanban .card:hover{border-color:var(--b300)}
.kd-kanban .card.is-selected{border-color:var(--b500);box-shadow:0 0 0 2px var(--b100)}[data-theme="dark"] .kd-kanban .card.is-selected{box-shadow:0 0 0 2px var(--b800)}
.kd-kanban .card .row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--kd-label);flex-wrap:wrap}
.kd-kanban .card .f{font-size:15px;color:var(--kd-title)}
.kd-kanban .col.closed{opacity:.8}
.kd-kanban .col.gap{border-left:1px dashed var(--kd-divider);padding-left:16px}
.kd-kanban .col .empty{padding:16px;text-align:center;font-size:12px;color:var(--kd-placeholder);border:1px dashed var(--kd-divider);border-radius:8px}

/* ── Timeline (변경 이력 · 트러블슈팅) ── */
.kd-timeline{list-style:none;margin:0;padding:0 0 0 20px;position:relative;display:flex;flex-direction:column;gap:14px}
.kd-timeline::before{content:"";position:absolute;left:3px;top:6px;bottom:6px;width:2px;background:var(--kd-divider)}
.kd-timeline li{position:relative;display:flex;flex-direction:column;gap:3px}
.kd-timeline li::before{content:"";position:absolute;left:-20px;top:6px;width:8px;height:8px;border-radius:50%;background:var(--nl400)}
.kd-timeline li.cm::before{background:var(--b500)}.kd-timeline li.dx::before{background:var(--o500)}.kd-timeline li.ok::before{background:var(--g500)}
.kd-timeline .when{font-size:12px;color:var(--kd-label);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.kd-timeline .what{font-size:14px;line-height:20px;color:var(--kd-title)}
.kd-timeline .diff{font-family:var(--et-font-mono);font-size:12px;color:var(--kd-body)}.kd-timeline .diff s{color:var(--kd-placeholder)}

/* ── EmptyState · Skeleton ── */
.kd-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 16px;text-align:center;color:var(--kd-label);font-size:13px}
.kd-empty iconify-icon{font-size:40px;color:var(--nl400)}
.kd-skeleton{height:12px;border-radius:4px;background:var(--kd-surface-input);animation:et-pulse 1.2s ease-in-out infinite}
@keyframes et-pulse{50%{opacity:.5}}

/* ── 판정 패널 · 인라인 알림 · 드로어(도킹) ── */
.et-verdict{display:flex;gap:8px}
.et-verdict button{flex:1;height:40px;border-radius:4px;border:1px solid var(--kd-line);background:transparent;color:var(--kd-body);font-weight:600;letter-spacing:.5px;cursor:pointer;font-size:13px}
.et-verdict button:hover{background:var(--kd-surface-input)}
.et-verdict button.pass[aria-pressed="true"]{background:var(--g50);border-color:var(--g500);color:var(--g600)}
.et-verdict button.fail[aria-pressed="true"]{background:var(--r50);border-color:var(--r400);color:var(--r500)}
.et-verdict button.na[aria-pressed="true"]{background:var(--nl200);border-color:var(--nl500);color:var(--nl700)}
[data-theme="dark"] .et-verdict button[aria-pressed="true"]{background:var(--nd600)}
.kd-notice.inline{width:100%;box-shadow:none;border:1px solid var(--kd-divider);border-bottom:4px solid var(--b400)}
.kd-notice.inline.warning{border-bottom-color:var(--o300)}.kd-notice.inline.error{border-bottom-color:var(--r400)}
.kd-notice.inline .in{padding:12px 16px 10px;row-gap:6px;grid-template-columns:20px 1fr}
.kd-notice.inline .ic,.kd-notice.inline .ic iconify-icon{width:20px;height:20px;font-size:20px}
.kd-notice.inline h4{font-size:13px;line-height:20px}.kd-notice.inline p{font-size:13px;line-height:18px}
[data-theme="dark"] .kd-notice{background:var(--nd600)}[data-theme="dark"] .kd-notice h4,[data-theme="dark"] .kd-notice p{color:var(--nd200)}
.et-split{display:grid;grid-template-columns:minmax(0,1fr) 480px;gap:16px;margin-top:20px;align-items:start}
.kd-drawer.dock{position:sticky;top:66px;height:calc(100vh - 82px);width:auto;min-width:0;max-width:none;box-shadow:var(--kd-shadow-04);border-radius:8px;z-index:1}
.kd-drawer.dock .hd{padding:16px 20px;border-bottom:1px solid var(--kd-divider);gap:10px;flex-wrap:wrap}
.kd-drawer.dock .hd h3{font-size:16px;line-height:24px}
.kd-drawer.dock .bd{padding:0 20px 16px}
.kd-drawer.dock .ft{padding:12px 20px;border-radius:0 0 8px 8px}
.kd-drawer .sec{padding:14px 0;border-bottom:1px solid var(--kd-divider);display:flex;flex-direction:column;gap:8px}
.kd-drawer .sec:last-child{border-bottom:0}
.kd-drawer .sec h5{font-size:12px;line-height:16px;font-weight:600;letter-spacing:.6px;color:var(--kd-label);display:flex;align-items:center;gap:8px}
.kd-drawer .sec h5 .r{margin-left:auto;display:flex;gap:6px}
[data-theme="dark"] .kd-drawer{background:var(--nd700)}[data-theme="dark"] .kd-drawer .hd h3{color:var(--nd50)}[data-theme="dark"] .kd-drawer .ft{background:var(--nd800)}
[data-theme="dark"] .kd-modal .bd,[data-theme="dark"] .et-field .v,[data-theme="dark"] .et-card .hd h4,[data-theme="dark"] .et-title h1{color:var(--nd100)}
[data-theme="dark"] :is(.kd-sysfield,.kd-snapfield,.kd-folder .tk,.kd-prov,.et-chip,.et-ro,.et-path){background:var(--nd800)}

/* ── 화면 전환 · 반응형 ── */
.view{display:none}.view.is-active{display:block}
@media (max-width:1180px){.s8,.s4,.s6,.s7,.s5,.s9{grid-column:span 12}.s3,.s2{grid-column:span 6}.et-split{grid-template-columns:1fr}.kd-drawer.dock{position:static;height:auto}}
@media (max-width:767px){.et-body{padding:0 16px 32px}.et-search,.et-crumb,.et-editor,.et-chip{display:none}.et-grid>*{grid-column:span 12}.et-top{padding:0 12px}.et-titlebar{min-height:0}}
/* 표 안의 폴더 토큰은 한 줄로 */
.kd-table .kd-folder{flex-wrap:nowrap}
/* 상단 바: 경로는 줄여서, 검색은 고정 폭 */
.et-crumb{flex:1 1 auto}.et-crumb b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}
.et-search{width:260px}
/* P12: 드로어 440 · 칸반 열 최소 200 */
.et-split{grid-template-columns:minmax(0,1fr) 440px}
.kd-kanban{grid-auto-columns:minmax(200px,1fr)}
/* hidden 속성이 display:grid 에 지지 않게 */
[hidden]{display:none!important}
@media (max-width:767px){.et-grid>*{grid-column:span 12!important}}

/* ── T6 데이터 수집: 진행 · 변경분 · 검토 큐 · 2단 비교 ── */
.et-progress{height:8px;border-radius:4px;background:var(--kd-surface-input);overflow:hidden}.et-progress i{display:block;height:100%;background:var(--b500);border-radius:4px}
.et-steps{display:flex;gap:4px;flex-wrap:wrap}.et-steps span{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:4px;background:var(--kd-surface-input);font-size:12px;color:var(--kd-label)}
.et-steps span.done{color:var(--g600)}.et-steps span.cur{background:var(--b50);color:var(--b700)}[data-theme="dark"] .et-steps span.cur{background:var(--nd600);color:var(--b300)}
.et-diff details{border-top:1px solid var(--kd-divider)}.et-diff details:first-child{border-top:0}
.et-diff summary{display:flex;align-items:center;gap:10px;height:40px;padding:0 24px;cursor:pointer;list-style:none;font-weight:500;color:var(--kd-title)}
.et-diff summary::-webkit-details-marker{display:none}.et-diff summary .n{font-family:var(--kd-font-num);color:var(--kd-label);font-weight:400}
.et-diff summary .tri{width:0;height:0;border:4px solid transparent;border-left:6px solid var(--kd-placeholder);transition:transform .15s}.et-diff details[open] summary .tri{transform:rotate(90deg)}
.et-diff .row{display:grid;grid-template-columns:minmax(260px,1.4fr) 100px 100px minmax(200px,2fr) 80px;gap:12px;align-items:center;min-height:36px;padding:4px 24px 4px 44px;font-size:13px;border-top:1px solid var(--kd-divider)}
.et-diff .row .rel{font-family:var(--et-font-mono);font-size:12px;color:var(--kd-placeholder)}.et-diff .row .warn{display:flex;align-items:center;gap:6px;color:var(--kd-body)}.et-diff .row .warn iconify-icon{color:var(--o500);flex:none}
.et-diff .row.err .warn iconify-icon{color:var(--r400)}
@media (max-width:900px){.et-diff .row{grid-template-columns:1fr 80px;padding-left:24px}.et-diff .row .rel,.et-diff .row .k{display:none}}
.et-review{display:flex;flex-direction:column}
.et-review .row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1.2fr) minmax(220px,1.4fr) 170px;gap:16px;align-items:start;padding:12px 24px;border-top:1px solid var(--kd-divider);font-size:13px}
.et-review .row:first-child{border-top:0}.et-review .row.done{opacity:.6}
.et-review .raw{font-family:var(--et-font-mono);font-size:12px;color:var(--kd-body);word-break:break-all}.et-review .why{color:var(--kd-label);font-size:12px}
.et-review .cand{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px;cursor:pointer}.et-review .cand:hover{background:var(--kd-surface-input)}
.et-review .cand input{margin:0}.et-review .acts{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}
@media (max-width:1180px){.et-review .row{grid-template-columns:1fr 1fr}.et-review .acts{grid-column:1/-1}}
.et-grade{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:4px;font:600 11px/1 var(--kd-font-num);color:#fff;background:var(--c);flex:none}
.et-grade.a,.et-grade.b{--c:var(--g500)}.et-grade.c{--c:var(--o500)}.et-grade.d{--c:var(--r400)}.et-grade.none{--c:var(--nl400)}
.et-files{display:flex;flex-direction:column}.et-files button{all:unset;display:flex;flex-direction:column;gap:4px;padding:10px 16px;border-top:1px solid var(--kd-divider);cursor:pointer}
.et-files button:first-child{border-top:0}.et-files button:hover{background:var(--kd-surface-input)}.et-files button[aria-current]{background:var(--et-side-active-bg);box-shadow:inset 3px 0 0 var(--b500)}
.et-files .f{font-size:13px;color:var(--kd-title);font-family:var(--et-font-mono);font-size:12px}.et-files .m{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--kd-label)}
.et-compare{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width:1180px){.et-compare{grid-template-columns:1fr}}
.et-raw{display:flex;flex-direction:column;gap:8px}.et-raw .k{font-size:11px;font-weight:600;letter-spacing:.5px;color:var(--kd-label)}.et-raw pre{margin:0;padding:8px 12px;border-radius:4px;background:var(--kd-surface-input);font:400 12px/18px var(--et-font-mono);white-space:pre-wrap;color:var(--kd-body)}
.et-prop{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border-radius:6px;border:1px solid var(--kd-divider)}.et-prop .t{flex:1;font-size:13px;color:var(--kd-title)}.et-prop .k{font-size:11px;color:var(--kd-label);white-space:nowrap}
.et-alias details{border-top:1px solid var(--kd-divider)}.et-alias details:first-child{border-top:0}.et-alias summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:120px 110px 60px 160px 140px 60px minmax(200px,1fr) 150px;gap:12px;align-items:center;padding:10px 24px;font-size:13px}.et-alias summary::-webkit-details-marker{display:none}
.et-alias .sub{padding:4px 24px 12px 24px;font-size:12px;color:var(--kd-label);display:flex;gap:8px;flex-wrap:wrap}
.et-chain{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.et-chain .node{display:inline-flex;flex-direction:column;padding:4px 10px;border-radius:4px;background:var(--kd-surface-input);font-size:12px}.et-chain .node small{font-family:var(--et-font-mono);color:var(--kd-label)}.et-chain .arr{color:var(--kd-placeholder)}

/* ── T7 디버깅: 필터 체인 편집기 · 전후 사진 비교 · 주파수 칩 ── */
.et-fchain{display:flex;align-items:stretch;gap:8px;overflow-x:auto;padding:12px;border:1px dashed var(--kd-divider);border-radius:8px}
.et-fchain .end{display:grid;place-items:center;min-width:64px;padding:8px;border-radius:6px;background:var(--kd-surface-input);font-size:12px;color:var(--kd-label);text-align:center}
.et-fchain .elem{position:relative;display:flex;flex-direction:column;gap:4px;min-width:150px;padding:10px 12px;border-radius:6px;background:var(--kd-surface);box-shadow:var(--kd-shadow-02);border:1px solid var(--kd-divider);cursor:grab}
.et-fchain .elem:hover{border-color:var(--b300)}.et-fchain .elem .kind{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--kd-title)}
.et-fchain .elem .val{font:500 15px/20px var(--et-font-mono);color:var(--kd-title)}.et-fchain .elem .pn{font-size:11px;color:var(--kd-label);font-family:var(--et-font-mono)}
.et-fchain .elem .grip{position:absolute;right:6px;top:6px;color:var(--kd-placeholder);font-size:14px}
.et-fchain .wire{align-self:center;width:24px;height:2px;background:var(--kd-line);flex:none}
.et-fchain .add{align-self:center;min-width:40px;height:40px;border-radius:6px;border:1px dashed var(--kd-line);background:transparent;color:var(--kd-label);cursor:pointer;display:grid;place-items:center}
.et-cmp{position:relative;aspect-ratio:16/9;border-radius:6px;overflow:hidden;background:var(--kd-surface-input)}
.et-cmp .side{position:absolute;inset:0;display:grid;place-items:center;color:var(--kd-placeholder);font-size:13px}
.et-cmp .side.after{clip-path:inset(0 0 0 var(--x,50%));background:color-mix(in srgb,var(--g500) 10%,var(--kd-surface-input))}
.et-cmp .bar{position:absolute;top:0;bottom:0;left:var(--x,50%);width:2px;background:var(--b500);transform:translateX(-1px)}
.et-cmp .bar::after{content:"◀ ▶";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:4px 8px;border-radius:12px;background:var(--b500);color:#fff;font-size:10px;white-space:nowrap}
.et-cmp .tag{position:absolute;top:8px;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;background:rgba(0,0,0,.55);color:#fff}.et-cmp .tag.l{left:8px}.et-cmp .tag.r{right:8px}
.et-cmp input[type=range]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.et-fchip{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 6px;border-radius:4px;background:var(--kd-surface-input);font:500 12px/16px var(--et-font-mono);color:var(--kd-body);text-decoration:none}
.et-fchip:hover{background:var(--b50);color:var(--b700)}
.et-grid-form{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}

/* ── T8 목록: 필터 바 · 결과 매트릭스 · 일괄 동작 · 치수 도식 ── */
.et-filterbar{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-top:16px}
.et-filterbar .kd-field{width:180px}.et-filterbar .kd-field.w{width:260px}.et-filterbar label.cap{font-size:12px;line-height:16px;font-weight:500;letter-spacing:.4px;color:var(--kd-label)}
.et-filterbar .kd-input{height:32px;padding:6px 12px;font-size:13px}.et-filterbar .reset{margin-left:auto;align-self:center}
.et-applied{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.et-bulk{display:flex;align-items:center;gap:12px;padding:8px 24px;background:var(--b50);border-bottom:1px solid var(--kd-divider);font-size:13px;color:var(--b700)}[data-theme="dark"] .et-bulk{background:var(--nd600);color:var(--b300)}
.et-matrix{border-collapse:collapse;font-size:12px}.et-matrix th,.et-matrix td{padding:6px 10px;border:1px solid var(--kd-divider);text-align:center;white-space:nowrap}
.et-matrix th{background:var(--kd-table-head);color:var(--kd-label);font-weight:500}.et-matrix th.row{text-align:left}.et-matrix td{background:var(--kd-surface)}
.et-matrix td a{display:inline-flex;align-items:center;gap:4px;text-decoration:none;color:var(--kd-body);font-family:var(--et-font-mono)}.et-matrix td .na{color:var(--kd-placeholder)}
.et-comp-list{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--kd-body)}.et-comp-list .more{color:var(--kd-placeholder)}
.et-missing{color:var(--kd-placeholder);font-style:italic}
.et-box{width:120px;height:96px}
.et-reprows{display:flex;flex-direction:column;gap:6px}.et-reprows .r{display:grid;grid-template-columns:110px 110px 1fr 1fr 1fr 32px;gap:8px;align-items:center}.et-reprows .r .kd-input{height:32px;padding:6px 10px;font-size:13px}
.et-hams{background:var(--kd-surface-input);border-radius:6px;padding:12px 14px;display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;font-size:13px}.et-hams .k{font-size:11px;color:var(--kd-label);display:block}

/* ── T9 기준 정보 · 도구 · 관리 · 진입 ── */
.et-itemgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.et-item{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:8px;background:var(--kd-surface);box-shadow:var(--kd-shadow-02);border:1px solid transparent;cursor:pointer;text-align:left}
.et-item:hover{border-color:var(--b300)}.et-item .code{display:flex;align-items:center;gap:8px;font:600 14px/20px var(--et-font-mono);color:var(--kd-title)}.et-item .nm{font-size:13px;color:var(--kd-body)}.et-item .rg{font-size:12px;color:var(--kd-label);font-family:var(--et-font-mono)}
.et-cathead{display:flex;align-items:center;gap:10px;margin:20px 0 10px;font-size:13px;color:var(--kd-label)}.et-cathead .n{font-family:var(--kd-font-num)}
.et-matrix td .kd-mk{margin:0 auto}
.et-limitlist{max-height:560px;overflow:auto}.et-limitlist .row{display:grid;grid-template-columns:24px 1fr auto;gap:10px;align-items:center;padding:8px 16px;border-top:1px solid var(--kd-divider);font-size:12px;cursor:pointer}
.et-limitlist .row:hover{background:var(--kd-surface-input)}.et-limitlist .row .nm{color:var(--kd-title);font-size:13px}.et-limitlist .row .meta{color:var(--kd-label)}
.et-limitlist .row i.sw{width:10px;height:10px;border-radius:2px;background:var(--c,transparent);display:inline-block;margin-right:6px}
.et-subnav{display:flex;flex-direction:column;gap:2px}.et-subnav button{all:unset;display:flex;align-items:center;gap:10px;height:36px;padding:0 14px;border-radius:4px;cursor:pointer;color:var(--kd-body);font-size:14px}
.et-subnav button:hover{background:var(--kd-surface-input)}.et-subnav button[aria-current]{background:var(--et-side-active-bg);color:var(--b500);font-weight:500}.et-subnav button .soon{margin-left:auto;font-size:11px;color:var(--kd-placeholder)}
.et-gate{min-height:calc(100vh - 50px);display:grid;place-items:center;padding:24px}
.et-gate .et-card{width:360px;gap:16px}.et-gate .logo{display:flex;align-items:center;gap:10px;font:600 18px/1 var(--kd-font-ui);color:var(--kd-heading-focus)}.et-gate .logo i{width:28px;height:28px;border-radius:6px;background:var(--kd-3dbar)}
.et-tablelist{max-height:520px;overflow:auto}.et-tablelist button{all:unset;display:flex;justify-content:space-between;width:100%;box-sizing:border-box;padding:7px 16px;font-size:13px;cursor:pointer;font-family:var(--et-font-mono)}.et-tablelist button:hover{background:var(--kd-surface-input)}.et-tablelist button[aria-current]{background:var(--et-side-active-bg);color:var(--b500)}.et-tablelist .lay{font-size:11px;color:var(--kd-placeholder);font-family:var(--kd-font-ui)}
.et-kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;font-size:13px}.et-kv dt{color:var(--kd-label)}.et-kv dd{margin:0;color:var(--kd-title)}
