/* 생산 가능성 검사(/dfm) — 즉시 견적(/quote)과 같은 머리 · 두 칸. 결과는 공정 탭 → 3D(문제 자리 색) + 문제 목록. */
.dfm-page{max-width:1280px}
.dfm-page .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.dfm-heading{margin:30px 0 36px;max-width:860px}
.dfm-heading h1{font-size:clamp(30px,4vw,48px);letter-spacing:-.045em;margin:8px 0 14px}
.dfm-heading p:last-child{color:var(--muted);font-size:17px}
.dfm-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:26px;align-items:start}
.dfm-main,.dfm-result,.dfm-board>*{min-width:0}
.dfm-form{display:grid;gap:16px}
.dfm-drop{min-height:130px}
.dfm-processes{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0;min-width:0}
.dfm-processes legend{font-size:13px;font-weight:600;margin-bottom:8px}
.dfm-processes label{position:relative}
.dfm-processes input{position:absolute;opacity:0;inset:0;cursor:pointer}
.dfm-processes span{display:inline-block;padding:8px 14px;border:1px solid var(--ui-line-strong);border-radius:var(--ui-pill);font-size:13px;background:var(--paper);cursor:pointer}
.dfm-processes input:checked+span{background:var(--ui-accent);border-color:var(--ui-accent);color:#fff}
.dfm-processes input:focus-visible+span{outline:3px solid var(--ui-focus);outline-offset:2px}
.dfm-processes input:disabled+span{opacity:.55;cursor:default}
.dfm-material{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px}
.dfm-material select{padding:9px;background:var(--paper);border:1px solid var(--line);border-radius:6px;color:var(--ink);font-size:13px}
.dfm-material small{color:var(--muted);width:100%}
.dfm-actions{display:flex;align-items:center;gap:14px}
.dfm-message{font-size:13px;line-height:1.7;margin:0;min-height:1px;overflow-wrap:anywhere}
.dfm-message[role=alert]{color:#a33c2e}
.dfm-result{margin-top:26px}
.dfm-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
.dfm-tab{flex:0 0 auto;display:grid;gap:2px;text-align:left;padding:10px 14px;border:1px solid var(--ui-line);border-radius:var(--ui-radius-s);background:var(--paper);min-width:118px}
.dfm-tab strong{font-size:13px;font-weight:600}
.dfm-tab small{font-size:12px;color:var(--muted)}
.dfm-tab[aria-selected=true]{border-color:var(--ui-accent);box-shadow:inset 0 0 0 1px var(--ui-accent)}
.dfm-tab.is-ok small{color:#2f6b4a}.dfm-tab.is-warn small{color:#9a5b12}.dfm-tab.is-fail small{color:#a33c2e}.dfm-tab.is-na{opacity:.7}
.dfm-board{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:18px;margin-top:14px;align-items:start}
.dfm-stage-wrap{position:relative;border:1px solid var(--line);border-radius:var(--ui-radius-m);background:var(--ui-surface);overflow:hidden}
.dfm-stage{height:min(62vh,520px);min-height:320px;display:grid;place-items:center}
.dfm-stage canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}
.dfm-legend{position:absolute;left:10px;bottom:10px;display:flex;flex-wrap:wrap;gap:6px 12px;font-size:12px;color:var(--ui-ink-2);pointer-events:none;background:rgba(255,255,255,.86);border-radius:var(--ui-pill);padding:5px 12px}
.dfm-legend span{display:inline-flex;align-items:center;gap:5px}
.dfm-legend span:before{content:'';width:11px;height:11px;border-radius:3px;background:#b5bcc4}
.dfm-legend .lv1:before{background:#f2cf5b}.dfm-legend .lv2:before{background:#ef8a33}.dfm-legend .lv3:before{background:#d9343a}
.dfm-view-tools{position:absolute;right:10px;top:10px;display:flex;gap:6px}
.dfm-view-tools button{font-size:12px;background:rgba(255,255,255,.86);border-radius:var(--ui-pill);padding:5px 12px}
.dfm-view-tools button[aria-pressed=true]{background:var(--ui-accent);color:#fff}
.dfm-panel{min-width:0}
.dfm-panel-title{font-size:18px;letter-spacing:-.02em;margin:0 0 6px}
.dfm-facts{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.dfm-facts span{font-size:12px;padding:4px 9px;border-radius:var(--ui-pill);background:var(--ui-surface-2);color:var(--ui-ink-2)}
.dfm-reason,.dfm-clear{font-size:14px;line-height:1.7;color:var(--ui-ink-2);background:var(--ui-surface);border-radius:var(--ui-radius-s);padding:14px 16px;margin:0}
.dfm-issues{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-height:min(62vh,520px);overflow:auto}
.dfm-issue button{display:grid;gap:4px;width:100%;text-align:left;padding:12px 14px;border:1px solid var(--ui-line);border-left:4px solid #b5bcc4;border-radius:var(--ui-radius-s);background:var(--paper);color:var(--ink)}
.dfm-issue button:disabled{cursor:default;opacity:1}
.dfm-issue.is-error button{border-left-color:#d9343a}.dfm-issue.is-warn button{border-left-color:#ef8a33}.dfm-issue.is-info button{border-left-color:#f2cf5b}
.dfm-issue.is-picked button{box-shadow:0 0 0 2px var(--ui-accent);border-color:var(--ui-accent)}
.dfm-issue strong{font-size:14px}
.dfm-issue p{margin:0;font-size:13px;line-height:1.6;color:var(--ui-ink-2)}
.dfm-issue .dfm-fix{color:var(--ink)}
.dfm-issue .dfm-fix:before{content:'고치기 · ';color:var(--muted)}
.dfm-issue small{font-size:12px;color:var(--muted)}
.dfm-sev{font-size:12px;font-weight:600;color:var(--muted)}
.dfm-issue.is-error .dfm-sev{color:#a33c2e}.dfm-issue.is-warn .dfm-sev{color:#9a5b12}
.dfm-more{margin-top:18px;border-top:1px solid var(--line);padding-top:12px}
.dfm-more summary{font-size:13px;cursor:pointer}
.dfm-more .quote-breakdown{margin-top:10px}
.dfm-aside{position:sticky;top:90px;border:1px solid var(--line);border-radius:var(--ui-radius-m);padding:20px;background:var(--paper);display:grid;gap:12px}
.dfm-aside h2{font-size:18px;margin:0}
.dfm-sum{display:grid;gap:8px;margin:0}
.dfm-sum div{display:flex;justify-content:space-between;gap:12px;font-size:13px}
.dfm-sum dt{color:var(--muted)}
.dfm-sum dd{margin:0;font-weight:600;text-align:right}
.dfm-quote,.dfm-copy{width:100%;text-align:center}
.dfm-notes{margin-top:48px}
.dfm-examples>p{max-width:860px}
.dfm-example-list{list-style:none;margin:20px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.dfm-example{display:grid;grid-template-rows:auto 1fr;border:1px solid var(--line);border-radius:var(--ui-radius-m);overflow:hidden;background:var(--paper)}
.dfm-example-art{display:block;background:var(--ui-surface-2);aspect-ratio:64/42}
.dfm-example-art img{display:block;width:100%;height:100%;object-fit:cover}
.dfm-example-body{display:grid;align-content:start;gap:8px;padding:14px 16px 16px}
.dfm-example-body h3{font-size:16px;margin:0}
.dfm-example-body h3 a{color:inherit}
.dfm-example-body p{margin:0;font-size:13px;line-height:1.6;color:var(--ui-ink-2)}
.dfm-example-body ul{margin:0;padding-left:18px;font-size:13px;line-height:1.6}
.dfm-example-kind{font-size:12px!important;color:var(--muted)!important}
.dfm-example-verdict{display:flex;justify-content:space-between;gap:8px;padding:6px 10px;border-radius:var(--ui-radius-s);background:var(--ui-surface)}
.dfm-example-verdict strong{font-size:13px}
.dfm-example-verdict.is-ok strong{color:#2f6b4a}.dfm-example-verdict.is-warn strong{color:#9a5b12}.dfm-example-verdict.is-fail strong{color:#a33c2e}
.dfm-example-links{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:4px!important}
.dfm-example-links a{font-size:13px}
.dfm-try{display:grid;gap:6px;padding-top:10px;border-top:1px solid var(--line)}
.dfm-try strong{font-size:13px}
.dfm-try ul{margin:0;padding-left:18px;font-size:13px;line-height:1.8}
.dfm-sample{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:12px 16px;border-radius:var(--ui-radius-s);background:var(--ui-accent-soft);font-size:13px;margin:0 0 14px}
.dfm-sample strong{font-size:14px}
.quote-dfm{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;font-size:13px}
.quote-dfm-result{display:grid;gap:6px;margin-top:10px;padding:12px 14px;border-radius:var(--ui-radius-s);background:var(--ui-surface)}
.quote-dfm-result ul{margin:0;padding-left:18px;font-size:13px;line-height:1.6}
.quote-dfm-result .is-fail{color:#a33c2e}.quote-dfm-result .is-warn{color:#9a5b12}.quote-dfm-result .is-ok{color:#2f6b4a}
@media (max-width:980px){.dfm-layout{grid-template-columns:minmax(0,1fr)}.dfm-aside{position:static}.dfm-board{grid-template-columns:minmax(0,1fr)}.dfm-issues{max-height:none}}
@media (max-width:560px){.dfm-heading{margin:18px 0 22px}.dfm-heading p:last-child{font-size:15px}.dfm-stage{height:360px;min-height:280px}.dfm-tab{min-width:104px;padding:9px 11px}}
