/* CAD → SKP 로컬 작업실 — Astryx(Meta) 중립 테마 토큰을 일반 CSS로 옮긴 스타일시트.
   React 컴포넌트는 쓰지 않고 색·반경·그림자·글자 크기 토큰과 상태 색 규칙만 가져왔다.
   글꼴은 로컬에서 제공하는 Pretendard Variable(OFL)이며 외부 요청이 없다. 선택자 이름은 JS가 쓰므로 유지한다. */
@font-face{font-family:"Pretendard Variable";src:url("/assets/PretendardVariable.woff2") format("woff2-variations");font-weight:45 920;font-style:normal;font-display:swap}
:root{
  --font-family-body:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI","Malgun Gothic",Roboto,sans-serif;
  --font-family-code:ui-monospace,"SF Mono",Consolas,"Liberation Mono",monospace;
  /* 글자 크기: Astryx 기본 스케일(10·12·14·17·20·24·29px)보다 두 단계 키운 값(12·14·16·19·22·27·34px) */
  --font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.1875rem;--font-size-xl:1.375rem;--font-size-2xl:1.6875rem;--font-size-3xl:2.125rem;
  --font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;
  --color-background-body:#f1f1f1;--color-background-surface:#ffffff;--color-background-muted:#f1f1f1;--color-background-soft:#f7f7f7;
  --color-text-primary:#111111;--color-text-secondary:#525252;--color-text-disabled:#9e9e9e;--color-icon-secondary:#777777;
  --color-accent:#262626;--color-accent-hover:#111111;--color-accent-muted:#f1f1f1;--color-on-accent:#ffffff;
  --color-border:#00000014;--color-border-emphasized:#d4d4d4;--color-overlay-hover:#0000000d;--color-overlay-pressed:#0000001a;
  --color-selection:#0074e2;--shadow-inset-hover:inset 0 0 0 2px #0074e24d;--shadow-inset-selected:inset 0 0 0 2px #0074e280;
  --color-success:#237028;--color-text-green:#0b5615;--color-background-green:#bce0bb;--color-border-green:#aad4a9;--color-green-soft:#e6f3e5;
  --color-warning:#745b00;--color-text-yellow:#584400;--color-background-yellow:#fae19e;--color-border-yellow:#e3c36c;--color-yellow-soft:#fdf5d8;
  --color-error:#9e0015;--color-text-red:#8a0011;--color-background-red:#ffc4be;--color-border-red:#ffaea7;--color-red-soft:#fde8e5;
  --color-text-blue:#00458c;--color-background-blue:#b9d7ff;--color-border-blue:#a1caff;--color-blue-soft:#e6f0fd;
  --color-text-gray:#262626;--color-background-gray:#e2e2e2;--color-text-orange:#733100;--color-background-orange:#ffc7a1;
  --radius-inner:0.375rem;--radius-element:0.625rem;--radius-container:0.75rem;--radius-page:1.75rem;--radius-full:9999px;
  --shadow-low:0 2px 4px oklch(0 0 0 / 5%),0 4px 8px oklch(0 0 0 / 10%);--shadow-med:0 2px 4px oklch(0 0 0 / 5%),0 4px 12px oklch(0 0 0 / 10%);
  --spacing-1:4px;--spacing-2:8px;--spacing-3:12px;--spacing-4:16px;--spacing-5:20px;--spacing-6:24px;--spacing-8:32px;
  --duration-fast:125ms;
  /* 이전 이름(기존 규칙·JS 생성 마크업과의 호환) */
  --green:var(--color-accent);--line:var(--color-border-emphasized);--muted:var(--color-text-secondary);
  font-family:var(--font-family-body);font-size:var(--font-size-base);line-height:1.4286;color:var(--color-text-primary);background:var(--color-background-body);
  font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;word-break:keep-all;color-scheme:light}
*{box-sizing:border-box}
body{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea,summary,[tabindex]{outline:0}
:is(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--color-selection);outline-offset:2px;border-radius:var(--radius-inner)}
h1,h2,h3,h4,h5,h6{color:var(--color-text-primary);letter-spacing:-0.01em;margin:0}
h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);line-height:1.3333;margin-bottom:var(--spacing-2)}
h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:1.4;margin-bottom:var(--spacing-3)}
h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);line-height:1.4118;margin-bottom:var(--spacing-3)}
h4{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);line-height:1.4286}
h5{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);line-height:1.6667}
p{margin:0 0 var(--spacing-2)}
small{font-size:var(--font-size-sm);color:var(--color-text-secondary)}
code{font-family:var(--font-family-code);font-size:0.9em}
a{color:var(--color-text-blue)}

/* 버튼 — Astryx Button: 36px, element 반경, 중립 강조색 */
button{cursor:pointer;border:1px solid transparent;border-radius:var(--radius-element);padding:0 var(--spacing-4);min-height:36px;font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);line-height:1.2;background:var(--color-accent-muted);color:var(--color-text-primary);transition:background var(--duration-fast),border-color var(--duration-fast),box-shadow var(--duration-fast)}
button:disabled{opacity:1;cursor:default;background:var(--color-background-muted);color:var(--color-text-disabled);border-color:transparent}
button.primary:disabled{background:var(--color-background-gray);color:var(--color-text-disabled);border-color:var(--color-background-gray)}
button:hover:not(:disabled){background:var(--color-overlay-pressed)}
button:active:not(:disabled){transform:translateY(0.5px)}
button.primary{background:var(--color-accent);color:var(--color-on-accent);border-color:var(--color-accent)}
button.primary:hover:not(:disabled){background:var(--color-accent-hover)}
button.secondary{background:var(--color-background-surface);border-color:var(--color-border-emphasized);color:var(--color-text-primary)}
button.secondary:hover:not(:disabled){background:var(--color-background-soft);border-color:#bdbdbd}
button.danger{background:var(--color-background-surface);color:var(--color-text-red);border-color:var(--color-border-red)}
button.danger:hover:not(:disabled){background:var(--color-red-soft)}
.link-button{background:none;border:0;min-height:0;padding:0 0 0 6px;color:var(--color-text-blue);text-decoration:underline;text-underline-offset:2px;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);border-radius:0}
.link-button:hover:not(:disabled){background:none;color:#003366}

/* 상단바·머리글 */
.topbar{height:64px;background:var(--color-background-surface);border-bottom:1px solid var(--color-border);padding:0 44px;display:flex;align-items:center;position:sticky;top:0;z-index:5}
.language-switch{display:flex;gap:3px;margin-left:auto;padding:3px;border:1px solid var(--color-border);border-radius:var(--radius-element);flex-shrink:0}
.language-switch button{min-width:40px;min-height:30px;padding:0 10px;background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm)}
.language-switch button[aria-pressed="true"]{background:var(--color-accent);color:var(--color-on-accent)}
.translation-status{margin:0;padding:8px 44px;background:var(--color-background-soft);color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:1.5}
html[lang="en"] .work-tabs button{white-space:normal;overflow-wrap:anywhere}
@media(max-width:600px){.topbar{gap:8px}.brand-title{font-size:12px}.brand-divider{margin:0 8px}.language-switch button{min-width:34px;padding:0 7px}.translation-status{padding:8px 20px}}
.brand{width:100%;max-width:1332px;margin:0 auto;display:flex;align-items:center;gap:var(--spacing-3);text-decoration:none;color:var(--color-text-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);letter-spacing:-0.02em}
.brand-logo{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);letter-spacing:-0.02em;color:var(--color-text-primary)}.brand-logo img{display:block;height:28px;width:auto}.brand-divider{width:1px;height:20px;background:var(--color-border-emphasized)}.brand-title{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);letter-spacing:0}
.arrow{font-weight:var(--font-weight-normal);margin:0 4px;color:var(--color-icon-secondary)}
.topright{display:flex;align-items:center;gap:var(--spacing-4);font-size:var(--font-size-sm);color:var(--color-text-secondary)}
.badge{display:inline-flex;align-items:center;border-radius:var(--radius-full);padding:3px 10px;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);line-height:1.5;white-space:nowrap;background:var(--color-background-gray);color:var(--color-text-gray)}
.badge.awaiting_input{background:var(--color-background-yellow);color:var(--color-text-yellow)}
.badge.succeeded{background:var(--color-background-green);color:var(--color-text-green)}
.badge.running,.badge.queued{background:var(--color-background-blue);color:var(--color-text-blue)}
.badge.failed,.badge.cancelled{background:var(--color-background-red);color:var(--color-text-red)}
.badge.neutral{border:1px solid var(--color-border-emphasized);background:var(--color-background-surface);color:var(--color-text-secondary)}
main{max-width:1420px;padding:var(--spacing-8) 44px var(--spacing-5);margin:0 auto}
.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--spacing-4);margin-bottom:var(--spacing-6)}.intro h1{font-size:var(--font-size-3xl);letter-spacing:-0.02em}
.eyebrow{font-size:var(--font-size-xs);letter-spacing:.12em;text-transform:uppercase;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin:0 0 var(--spacing-2)}
.lead{color:var(--color-text-secondary);font-size:var(--font-size-base);margin:0;line-height:1.7}
.scope{display:flex;align-items:flex-start;gap:var(--spacing-3);background:var(--color-background-surface);border:1px solid var(--color-border);border-radius:var(--radius-container);padding:var(--spacing-3) var(--spacing-4);margin-bottom:var(--spacing-6)}
.scope-icon{border-radius:var(--radius-full);height:22px;width:22px;min-width:22px;text-align:center;line-height:22px;background:var(--color-accent);color:var(--color-on-accent);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);margin-top:1px}
.scope p{font-size:var(--font-size-sm);line-height:1.8;color:var(--color-text-secondary);margin:0}
.scope strong{font-size:var(--font-size-base);color:var(--color-text-primary)}
.notice{background:var(--color-red-soft);border:1px solid var(--color-border-red);color:var(--color-text-red);border-radius:var(--radius-element);padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-base);line-height:1.6;margin:0 0 var(--spacing-4)}

/* 레이아웃·카드 */
.workspace{display:grid;grid-template-columns:380px minmax(0,1fr);gap:var(--spacing-5);align-items:start}
.card{background:var(--color-background-surface);border:1px solid var(--color-border);border-radius:var(--radius-container);padding:var(--spacing-6);box-shadow:0 1px 2px oklch(0 0 0 / 3%)}
.upload-card{margin-bottom:var(--spacing-4)}
/* 업로드 — 타입 도면(필수 1개)과 참조 도면(선택) 슬롯. form은 novalidate라 :valid는 "파일 선택됨" 표시에만 쓴다. */
.upload-slot{margin-top:var(--spacing-4)}
.upload-slot+.upload-slot{margin-top:var(--spacing-3)}
.slot-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.slot-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}
.slot-tag{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);background:var(--color-background-muted);border-radius:var(--radius-full);padding:2px 8px}
.drop-area{position:relative;background:var(--color-background-soft);border:1px dashed var(--color-border-emphasized);border-radius:var(--radius-element);min-height:132px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:4px;cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--spacing-4);transition:border-color var(--duration-fast),background var(--duration-fast)}
.drop-area:hover{border-color:var(--color-selection);background:var(--color-blue-soft)}
.drop-area input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}
.drop-area:focus-within{box-shadow:var(--shadow-inset-selected);border-color:var(--color-selection)}
.drop-area strong{color:var(--color-text-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);margin-top:var(--spacing-1)}
.slot-hint{font-size:var(--font-size-xs);color:var(--color-text-secondary)}
.upload-icon{display:inline-flex;align-items:center;justify-content:center;font-size:19px;color:var(--color-text-primary);border-radius:var(--radius-element);background:var(--color-background-surface);border:1px solid var(--color-border-emphasized);width:36px;height:36px;line-height:34px;flex-shrink:0}
.upload-icon.small{width:32px;height:32px;line-height:30px;font-size:17px}
.slot-file{display:block;max-width:100%;overflow-wrap:anywhere;font-size:var(--font-size-xs);color:var(--color-text-disabled);margin-top:var(--spacing-1)}
.drop-area.compact{min-height:0;flex-direction:row;justify-content:flex-start;text-align:left;gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-3)}
.drop-area.compact strong{margin-top:0;font-size:var(--font-size-sm)}
.drop-area.compact .slot-file{margin-top:2px}
.compact-text{display:flex;flex-direction:column;min-width:0}
.upload-slot:has(input:valid) .drop-area{border-style:solid;border-color:var(--color-border-green);background:var(--color-green-soft)}
.upload-slot:has(input:valid) .slot-file{color:var(--color-text-green);font-weight:var(--font-weight-semibold)}
.upload-slot:has(input:valid) .upload-icon{background:var(--color-success);border-color:var(--color-success);color:var(--color-on-accent)}
.upload-slot:has(input:disabled) .drop-area{opacity:.6;cursor:progress}
.upload-note{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.7;margin:var(--spacing-3) 0 0}
.muted,.fine{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.7}
.fine{font-size:var(--font-size-xs);margin-bottom:0;text-align:center}
.upload-card .primary{width:100%;display:flex;align-items:center;justify-content:space-between;margin-top:var(--spacing-3)}
.section-title{display:flex;align-items:center;justify-content:space-between}
.section-title h2{margin-bottom:var(--spacing-3)}
.history{padding:var(--spacing-5) var(--spacing-3)}
.history .section-title{padding:0 var(--spacing-2)}
#jobs{display:grid;gap:var(--spacing-1);max-height:415px;overflow:auto;padding:2px}
.job{display:block;width:100%;text-align:left;background:var(--color-background-surface);border:1px solid transparent;border-radius:var(--radius-element);padding:var(--spacing-3);min-height:0;font-weight:var(--font-weight-normal)}
.job:hover:not(:disabled){background:var(--color-background-soft)}
.job.active{background:var(--color-background-muted);box-shadow:var(--shadow-inset-selected)}
.job-name{font-size:var(--font-size-sm);line-height:1.5;display:block;overflow-wrap:anywhere;margin-bottom:var(--spacing-2);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}
.job-kind{display:block;font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:-4px 0 var(--spacing-2)}
.job-bottom{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:var(--font-size-xs);color:var(--color-text-secondary)}
.detail{min-height:515px;padding:var(--spacing-8)}
.empty{text-align:center;padding:68px 0;color:var(--color-text-secondary)}
.empty-symbol{font-size:56px;color:var(--color-border-emphasized);margin-bottom:var(--spacing-4)}
.empty h2{color:var(--color-text-primary)}
.empty p{font-size:var(--font-size-base);line-height:1.9}
.simple-steps{display:flex;justify-content:center;gap:var(--spacing-6);font-size:var(--font-size-sm);padding-left:18px;margin-top:var(--spacing-8);color:var(--color-text-secondary)}
.detail-head{display:flex;justify-content:space-between;gap:var(--spacing-3);align-items:flex-start}
.detail h2{overflow-wrap:anywhere;line-height:1.5;font-size:var(--font-size-xl)}
.detail-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px var(--spacing-3);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:var(--spacing-1) 0 var(--spacing-3)}.detail-meta>span+span:not(.meta-chip):not(.meta-id)::before{content:'·';margin-right:var(--spacing-3);color:var(--color-border-emphasized)}.meta-chip{display:inline-flex;align-items:center;border-radius:var(--radius-full);padding:2px 9px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);background:var(--color-background-gray);color:var(--color-text-gray)}.meta-chip.walls{background:var(--color-background-blue);color:var(--color-text-blue)}.meta-chip.inspect{background:var(--color-background-yellow);color:var(--color-text-yellow)}.meta-id{font-family:var(--font-family-code);font-size:var(--font-size-xs);background:var(--color-background-muted);border-radius:var(--radius-inner);padding:2px 6px}p#work-timing.detail-meta{display:block;margin:0 0 var(--spacing-5)}
.lineage{display:flex;flex-wrap:wrap;align-items:center;gap:6px var(--spacing-2);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--spacing-3)}.lineage-label{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.lineage .link-button{padding:0}

/* 패널·상태 색 — Astryx Banner/Card 규칙 */
.panel{border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-4) var(--spacing-5);margin:var(--spacing-4) 0;background:var(--color-background-soft)}
.panel p{font-size:var(--font-size-sm);line-height:1.8;margin:var(--spacing-2) 0}
.panel h4{margin:0 0 var(--spacing-2)}
.panel h5,.result-viewer h5{margin:var(--spacing-3) 0 6px;color:var(--color-text-secondary);font-weight:var(--font-weight-semibold)}
.panel.warning{border-color:var(--color-border-yellow);background:var(--color-yellow-soft);color:var(--color-text-yellow)}
.panel.error{background:var(--color-red-soft);border-color:var(--color-border-red);color:var(--color-text-red)}
.panel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-2);margin:var(--spacing-4) 0}
.panel-grid div{background:var(--color-background-surface);border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-sm);color:var(--color-text-secondary)}
.panel-grid strong{display:block;color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin-top:var(--spacing-1)}
.warning-text{color:var(--color-text-yellow)}
.notice-box{border:1px solid var(--color-border-yellow);background:var(--color-yellow-soft);border-radius:var(--radius-element);padding:var(--spacing-3) var(--spacing-4);margin:var(--spacing-3) 0}
.notice-box p{margin:6px 0}

/* 입력 */
.form-row{margin:var(--spacing-5) 0}
input[type=number],input[type=search],input[type=text],select,textarea{width:100%;border:1px solid var(--color-border-emphasized);border-radius:var(--radius-element);padding:9px 12px;background:var(--color-background-surface);color:var(--color-text-primary);font-size:var(--font-size-base);min-height:36px;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:0;border-color:var(--color-selection);box-shadow:var(--shadow-inset-hover)}
input[type=number]{margin-top:6px}
select[multiple]{min-height:150px;margin-top:var(--spacing-2)}
input[type=checkbox],input[type=radio]{accent-color:var(--color-accent)}
.hint{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.7;margin:var(--spacing-2) 0}
details{margin:var(--spacing-4) 0;font-size:var(--font-size-sm)}
summary{cursor:pointer;color:var(--color-text-primary);font-weight:var(--font-weight-medium)}
summary small{font-weight:var(--font-weight-normal)}
pre{background:var(--color-background-muted);padding:var(--spacing-3);border-radius:var(--radius-element);white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--font-size-sm);max-height:240px;overflow:auto;font-family:var(--font-family-code)}
.actions{display:flex;gap:var(--spacing-2);flex-wrap:wrap;margin-top:var(--spacing-5)}
.download-list{display:grid;gap:var(--spacing-2)}
.result-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-3);flex-wrap:wrap;margin-bottom:var(--spacing-3)}
.result-heading h3{margin:0}
.download,a.download{display:flex;align-items:center;justify-content:space-between;text-align:left;background:var(--color-background-surface);border:1px solid var(--color-border-emphasized);border-radius:var(--radius-element);font-size:var(--font-size-sm);color:var(--color-text-primary);text-decoration:none;padding:10px var(--spacing-4);min-height:40px;font-weight:var(--font-weight-semibold)}
.download:hover,a.download:hover{background:var(--color-background-soft)}
.download small{color:var(--color-text-secondary);font-weight:var(--font-weight-normal);margin-left:var(--spacing-3)}
#auth{margin-bottom:var(--spacing-5)}
.file-label{font-size:var(--font-size-base);display:flex;gap:var(--spacing-4);align-items:center;flex-wrap:wrap}
.file-label input{max-width:100%}
.events{padding-left:18px;line-height:2;color:var(--color-text-secondary);font-size:var(--font-size-sm)}
footer{display:flex;justify-content:space-between;gap:var(--spacing-5);padding:var(--spacing-6) 0 0;font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.8}
[hidden]{display:none!important}

/* 작업 단계 탭·태그 선택 */
.work-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--spacing-1);border-bottom:1px solid var(--color-border);margin:var(--spacing-1) 0 var(--spacing-6);padding-bottom:0}
.work-tabs button{background:transparent;color:var(--color-text-secondary);border-radius:0;padding:14px 6px;min-height:0;font-size:var(--font-size-base);border:0;border-bottom:2px solid transparent;font-weight:var(--font-weight-medium)}
.work-tabs button:hover:not(:disabled){background:var(--color-overlay-hover);color:var(--color-text-primary)}
.work-tabs button[aria-selected=true]{color:var(--color-text-primary);border-bottom-color:var(--color-accent);font-weight:var(--font-weight-semibold)}
.work-tabs button:focus-visible{outline-offset:-3px;border-radius:var(--radius-inner)}
#work-panel{min-height:310px}
.tag-toolbar{display:flex;gap:var(--spacing-2);align-items:center;margin:var(--spacing-5) 0 var(--spacing-3)}
.tag-toolbar label{font-size:var(--font-size-sm);white-space:nowrap}
.tag-toolbar input{min-width:0;flex:1}
.tag-toolbar button{white-space:nowrap}
.tag-groups{max-height:470px;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-element);background:var(--color-background-surface)}
.tag-group{border-bottom:1px solid var(--color-border)}
.tag-group:last-child{border-bottom:0}
.tag-group-title{display:flex;align-items:center;gap:var(--spacing-2);background:var(--color-background-soft);padding:12px 14px;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer}
.tag-group-title small{margin-left:auto}
.tag-row{display:flex;align-items:flex-start;gap:var(--spacing-2);padding:12px 14px;border-top:1px solid var(--color-border);cursor:pointer}
.tag-row:hover{background:var(--color-background-soft)}
.tag-row input,.tag-group-title input{width:16px;height:16px;flex-shrink:0;margin:2px 0}
.tag-row>span:nth-child(2){flex:1;min-width:0}
.tag-row strong{font-size:var(--font-size-sm);line-height:1.6;display:block;font-weight:var(--font-weight-semibold)}
.tag-row small{font-size:var(--font-size-xs);display:block;line-height:1.7;margin-top:4px}
.tag-state{font-size:var(--font-size-xs);white-space:nowrap;padding:3px 8px;background:var(--color-background-yellow);color:var(--color-text-yellow);border-radius:var(--radius-full);font-weight:var(--font-weight-semibold)}
.tag-state.ready{background:var(--color-background-green);color:var(--color-text-green)}
.tag-selection-footer{display:flex;align-items:center;gap:var(--spacing-2);padding-top:var(--spacing-4);flex-wrap:wrap}
.tag-selection-footer>span{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-right:auto}
.selected-tags{display:grid;gap:var(--spacing-3);margin-top:var(--spacing-4)}
.selected-tag{border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-4);display:flex;align-items:center;flex-wrap:wrap;gap:var(--spacing-2);background:var(--color-background-surface)}
.selected-tag strong{font-size:var(--font-size-base);margin-right:auto}
.selected-tag p{width:100%;margin:0;font-size:var(--font-size-sm);line-height:1.7;color:var(--color-text-secondary)}
#project-settings label{display:block;font-size:var(--font-size-sm);margin-top:var(--spacing-3)}
#project-settings input[type=text]{margin-top:6px}
#project-settings select{margin-top:6px}

/* 설정 표·칩·목록 */
.settings-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}
.settings-table th,.settings-table td{padding:8px 6px;border-top:1px solid var(--color-border);text-align:left;vertical-align:top}
.settings-table thead th{font-size:var(--font-size-xs);color:var(--color-text-secondary);border-top:0;font-weight:var(--font-weight-semibold);letter-spacing:.04em;text-transform:uppercase}
.settings-table tbody th{font-weight:var(--font-weight-semibold);white-space:nowrap}
.source-chip{display:inline-block;border-radius:var(--radius-inner);padding:2px 7px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);white-space:normal;background:var(--color-background-gray);color:var(--color-text-gray)}
.source-chip.default{background:var(--color-background-yellow);color:var(--color-text-yellow)}
.source-chip.user{background:var(--color-background-green);color:var(--color-text-green)}
.profile-card p{font-size:var(--font-size-sm);line-height:1.7}
.profile-head{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-2);flex-wrap:wrap}
.check-list{font-size:var(--font-size-sm);line-height:1.9;padding-left:18px;margin:6px 0}
.check-list .ok{color:var(--color-text-green)}
.check-list .bad{color:var(--color-text-red)}
.consent{display:flex;gap:var(--spacing-2);align-items:flex-start;font-size:var(--font-size-sm);margin-top:var(--spacing-3);line-height:1.7}
.consent input{width:16px;height:16px;margin-top:2px;flex-shrink:0}
.plan.blocked .profile-head strong{color:var(--color-text-yellow)}
.plan.ready .profile-head strong{color:var(--color-text-green)}
.blocker-list{font-size:var(--font-size-sm);line-height:1.9;padding-left:18px;color:var(--color-text-yellow)}
.order-list{font-size:var(--font-size-sm);line-height:1.7;padding-left:22px;margin:4px 0}
.order-list li span{font-weight:var(--font-weight-semibold);margin-right:var(--spacing-2)}
.tag-chips{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px}
.tag-chips li{font-size:var(--font-size-xs);background:var(--color-background-gray);color:var(--color-text-gray);border-radius:var(--radius-inner);padding:4px 8px;font-weight:var(--font-weight-medium)}
.tag-chips li.extra{background:var(--color-yellow-soft);color:var(--color-text-yellow)}
.tag-chips small{font-size:var(--font-size-xs)}
.result-columns{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-4);margin-top:6px}
.issue-group{border-top:1px solid var(--color-border-yellow);margin:0;padding:6px 0}
.issue-group summary{font-weight:var(--font-weight-semibold);color:var(--color-text-yellow)}
.issue-list{list-style:none;padding:0;margin:6px 0}
.issue-list li{border-top:1px solid var(--color-border);padding:var(--spacing-2) 0;font-size:var(--font-size-sm);color:var(--color-text-primary)}
.issue-list li p{margin:4px 0;color:var(--color-text-secondary)}
.issue-list button{padding:0 10px;min-height:28px;font-size:var(--font-size-xs);margin-left:var(--spacing-2)}
.derived-jobs{display:grid;gap:6px}
.derived-jobs button{text-align:left}

/* CAD 미리보기·후보·레이어 */
.cad-preview{border-top:1px solid var(--color-border);margin-top:var(--spacing-6);padding-top:var(--spacing-5)}
.cad-head{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-3);flex-wrap:wrap}
.cad-head h3{margin:0}
.cad-load-state{font-size:var(--font-size-sm);color:var(--color-text-secondary)}
.cad-mock-banner{background:var(--color-yellow-soft);border:1px solid var(--color-border-yellow);color:var(--color-text-yellow);border-radius:var(--radius-element);padding:10px 12px;font-size:var(--font-size-sm);margin:10px 0}
.cad-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:var(--spacing-4);margin-top:var(--spacing-3)}
.cad-layout:has(.cad-layers:not([open])){grid-template-columns:minmax(0,1fr)}
.cad-layers:not([open]){grid-row:2}
.cad-toolbar,.mv-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--spacing-2);align-items:center}
.cad-toolbar button,.mv-toolbar button,.cad-layer-actions button,.mv-tag-buttons button,.cad-stage-message button{padding:0 11px;min-height:30px;font-size:var(--font-size-sm);background:var(--color-background-surface);border-color:var(--color-border-emphasized)}
.cad-toolbar button[aria-pressed=true]{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}
.cad-stage{position:relative;height:520px;border:1px solid var(--color-border);border-radius:var(--radius-element);background:var(--color-background-muted);overflow:hidden}
.cad-canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.cad-canvas.selecting{cursor:crosshair}
.cad-canvas:focus-visible,.mv-canvas:focus-visible{outline:2px solid var(--color-selection);outline-offset:-3px}
.cad-stage-message{position:absolute;left:12px;right:12px;top:12px;margin:0;background:#fffffff2;border:1px solid var(--color-border);border-radius:var(--radius-element);padding:12px;font-size:var(--font-size-sm);line-height:1.7;box-shadow:var(--shadow-low)}
.cad-layers{border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-3);display:flex;flex-direction:column;gap:var(--spacing-2);min-height:0;max-height:572px;background:var(--color-background-surface);overflow:hidden}
.cad-layers:not([open]){display:block;max-height:none}
.cad-layers:not([open])>:not(summary){display:none!important}
.cad-layer-head h4,.mv-side h4{margin:0 0 4px;font-size:var(--font-size-base)}
.cad-layer-head .hint{margin:0;display:block}
.cad-layer-actions{display:flex;gap:6px}
.cad-layer-scroll{overflow:auto;min-height:120px;max-height:400px;flex:1}
/* Chrome 131+ renders <details> children inside ::details-content, so the flex column must be declared there too. */
.cad-layers[open]::details-content{display:flex;flex-direction:column;gap:var(--spacing-2);min-height:0}
.cad-layer-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}
.cad-layer-table th,.cad-layer-table td{padding:7px 4px;border-top:1px solid var(--color-border);text-align:left;vertical-align:middle}
.cad-layer-table thead th{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-semibold);border-top:0;position:sticky;top:0;background:var(--color-background-surface)}
.cad-layer-table td{text-align:center;width:52px}
.cad-layer-table tbody th{font-weight:var(--font-weight-medium);overflow-wrap:anywhere}
.cad-layer-table small{display:block;font-size:var(--font-size-xs);margin-left:16px}
.cad-layer-table input{width:16px;height:16px}
.cad-swatch{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:baseline}
.cad-save-row{display:flex;align-items:center;gap:var(--spacing-3);margin-top:var(--spacing-3);flex-wrap:wrap}
.cad-save-reason{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-right:auto;line-height:1.7}
.cad-save-reason.warning-text{color:var(--color-text-yellow)}
.cad-blockers{font-size:var(--font-size-sm);line-height:1.9;margin:6px 0 0;padding-left:18px}
.cad-candidates{border-top:1px solid var(--color-border);margin-top:var(--spacing-6);padding-top:var(--spacing-5)}
.cand-tabs{list-style:none;padding:0;margin:var(--spacing-2) 0;display:flex;flex-wrap:wrap;gap:6px}
.cand-tabs li{font-size:var(--font-size-xs);background:var(--color-background-gray);border-radius:var(--radius-full);padding:4px 10px;color:var(--color-text-gray);font-weight:var(--font-weight-medium)}
.cand-group{margin:var(--spacing-3) 0}
.cand-group-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin:0 0 6px}
.cand-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--spacing-2)}
.cand-card{display:grid;grid-template-columns:150px minmax(0,1fr);gap:var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-2);background:var(--color-background-surface);transition:box-shadow var(--duration-fast)}
.cand-card:hover{box-shadow:var(--shadow-inset-hover)}
.cand-card.chosen{border-color:var(--color-selection);box-shadow:var(--shadow-inset-selected)}
.cand-card.disabled{background:var(--color-background-soft)}
.cand-thumb{width:150px;height:110px;border:1px solid var(--color-border);border-radius:var(--radius-inner);background:var(--color-background-surface)}
.cand-body p{margin:4px 0;font-size:var(--font-size-sm)}
.cand-body details{font-size:var(--font-size-sm);margin:4px 0}
.cand-body ul{padding-left:16px;margin:4px 0;line-height:1.6}
.cand-body button{padding:0 10px;min-height:30px;font-size:var(--font-size-sm);margin-top:4px}
.cand-head{display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap}
.cand-head strong{font-size:var(--font-size-sm);line-height:1.5;margin-right:auto;overflow-wrap:anywhere}
.cand-kind{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:var(--radius-inner);padding:2px 6px;background:var(--color-background-gray);color:var(--color-text-gray);white-space:nowrap}
.cand-kind.plan{background:var(--color-background-green);color:var(--color-text-green)}
.cand-kind.unknown{background:var(--color-background-yellow);color:var(--color-text-yellow)}
.cand-kind.dup{background:var(--color-background-red);color:var(--color-text-red)}
.cand-kind.saved{background:var(--color-background-blue);color:var(--color-text-blue)}
.cand-more{margin:10px 0}

/* 치수 근거·공정 옵션·경계 보정 */
.dimension-evidence h5{margin:var(--spacing-4) 0 6px;color:var(--color-text-secondary)}
.dim-links{display:grid;gap:10px}
.dim-link{display:grid;gap:4px;font-size:var(--font-size-sm)}
.dim-link select{max-width:100%}
.dim-quantity{border:1px solid var(--color-border);border-radius:var(--radius-element);padding:10px 12px;margin:var(--spacing-2) 0;background:var(--color-background-surface)}
.dim-quantity legend{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);padding:0 4px}
.dim-option{display:flex;gap:var(--spacing-2);align-items:flex-start;font-size:var(--font-size-sm);padding:5px 0;border-top:1px solid var(--color-border)}
.dim-option input[type=radio]{margin-top:3px;flex-shrink:0}
.dim-option input[type=number]{width:110px;margin:0 4px;padding:5px;min-height:0}
.dim-option input[type=text]{width:220px;padding:5px;margin-left:6px;min-height:0}
.dim-option small{display:block;font-size:var(--font-size-xs)}
.dim-evidence{display:flex;flex-wrap:wrap;gap:2px 10px;margin-top:3px}
.dim-evidence .link-button{padding:0;font-size:var(--font-size-xs);text-align:left}
.dim-derived{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-green);margin:10px 0}
.dim-derived.hint{font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}
.dim-table td{font-size:var(--font-size-xs)}
.dim-table small{display:block}
.dim-table tr.missing td,.dim-table tr.needs_link_choice td{color:var(--color-text-disabled)}
.dim-levels{font-size:var(--font-size-xs);line-height:1.8;padding-left:16px}
.dim-table-scroll{max-width:100%;max-height:65vh;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-element)}
.dim-table{min-width:1180px}
.dim-table thead th{position:sticky;top:0;background:var(--color-background-soft);z-index:1}
.dim-table td label{display:block;margin:6px 0}
.dim-table input[type=number]{width:110px;max-width:100%}
.dim-table select{max-width:245px}
#process-options details{margin:10px 0;padding:var(--spacing-2) var(--spacing-3);border:1px solid var(--color-border);border-radius:var(--radius-element);background:var(--color-background-surface)}
#process-options summary{cursor:pointer;font-weight:var(--font-weight-semibold)}
.boundary-repair-options{display:flex;flex-wrap:wrap;gap:var(--spacing-3);margin:var(--spacing-3) 0}
.boundary-repair-option{display:flex;flex-direction:column;gap:var(--spacing-2);width:240px;padding:10px;border:1px solid var(--color-border-emphasized);border-radius:var(--radius-element);background:var(--color-background-surface)}
.boundary-repair-option small{overflow-wrap:anywhere}
.boundary-repair-option svg{max-width:100%;background:var(--color-background-surface);border-radius:var(--radius-inner)}

/* 3D 뷰어 */
.result-viewer{margin:var(--spacing-5) 0}
.result-viewer .rv-list{font-size:var(--font-size-sm);line-height:1.9;padding-left:18px}
.model-viewer{display:block}
.mv-inline{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}
.mv-inline select{width:auto;padding:4px 8px;font-size:var(--font-size-sm);min-height:30px}
.mv-section-pos{width:140px;accent-color:var(--color-accent)}
.mv-group{display:inline-flex;gap:4px}
.mv-body{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:var(--spacing-3)}
.mv-comparison:not([hidden]){display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-2) var(--spacing-4);margin-bottom:10px}
.mv-comparison label{display:flex;align-items:center;gap:6px;font-size:var(--font-size-sm);margin:0}
.mv-comparison select{width:auto;max-width:100%;padding:6px 10px;min-height:32px}
.mv-comparison input{width:15px;height:15px;margin:0}
.mv-comparison .hint{flex-basis:100%;margin:0}
.mv-stage{position:relative;height:540px;border:1px solid var(--color-border);border-radius:var(--radius-element);background:linear-gradient(#f7f7f7,#e6e6e6);overflow:hidden}
.mv-canvas{display:block;width:100%;height:100%;touch-action:none}
.mv-status{position:absolute;left:12px;top:12px;right:12px;margin:0;background:#fffffff2;border:1px solid var(--color-border);border-radius:var(--radius-element);padding:10px;font-size:var(--font-size-sm);box-shadow:var(--shadow-low)}
.mv-side{display:flex;flex-direction:column;gap:var(--spacing-3);max-height:540px;overflow:auto}
.mv-side section{border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-3);background:var(--color-background-surface)}
.mv-side-title{display:flex;justify-content:space-between;align-items:center;gap:6px;flex-wrap:wrap}
.mv-tag-buttons{display:flex;gap:4px}
.mv-tag-group{border:0;margin:var(--spacing-2) 0 0;padding:0}
.mv-tag-group legend{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:var(--font-weight-semibold);padding:0;letter-spacing:.04em;text-transform:uppercase}
.mv-tag-row{display:flex;gap:var(--spacing-2);align-items:flex-start;font-size:var(--font-size-sm);padding:5px 0;cursor:pointer}
.mv-tag-row input{width:15px;height:15px;flex-shrink:0;margin:2px 0}
.mv-tag-row small{display:block;font-size:var(--font-size-xs)}
.mv-facts{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;font-size:var(--font-size-sm);margin:0}
.mv-facts dt{color:var(--color-text-secondary)}
.mv-facts dd{margin:0;overflow-wrap:anywhere}
.mv-selection .actions{margin-top:10px}
.mv-selection .actions button{padding:0 10px;min-height:30px;font-size:var(--font-size-sm)}
.mv-issue{border-top:1px solid var(--color-border);padding:var(--spacing-2) 0;font-size:var(--font-size-sm)}
.mv-issue p{margin:4px 0;line-height:1.7;color:var(--color-text-secondary)}
.mv-issue button{padding:0 10px;min-height:28px;font-size:var(--font-size-sm)}
.mv-mapping{margin-top:var(--spacing-2)}

/* 결과 요약 패널 */
.summary-panel h4{margin:0 0 var(--spacing-3)}
.summary-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--spacing-2)}
.summary-card{background:var(--color-background-surface);border:1px solid var(--color-border);border-radius:var(--radius-element);padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-sm);color:var(--color-text-secondary);min-width:0}
.summary-card span{display:block;font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}
.summary-card strong{display:block;color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:6px 0 4px;letter-spacing:-0.01em}
.summary-card strong em{font-style:normal;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-left:4px;font-weight:var(--font-weight-medium)}
.summary-card small{display:block;line-height:1.7;overflow-wrap:anywhere}
.summary-timing{list-style:none;padding:0;margin:6px 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:6px}
.summary-timing li{display:flex;justify-content:space-between;gap:var(--spacing-2);background:var(--color-background-surface);border:1px solid var(--color-border);border-radius:var(--radius-inner);padding:8px 10px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}
.summary-timing strong{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}
.summary-filter{margin:var(--spacing-2) 0 4px;font-size:var(--font-size-sm)}
.summary-filter select{width:auto;max-width:100%;margin-left:var(--spacing-2);padding:5px 8px;min-height:30px;font-size:var(--font-size-sm)}
.summary-panel .issue-list code{font-size:var(--font-size-xs);background:var(--color-background-gray);border-radius:var(--radius-inner);padding:2px 5px;margin-left:6px}
.summary-panel .result-columns{margin-top:10px}

/* 반응형 */
@media(max-width:1100px){.cad-layout,.mv-body{grid-template-columns:1fr}.cad-layers,.mv-side{max-height:360px}}
@media(max-width:950px){main{padding:var(--spacing-6) var(--spacing-5)}.topbar{padding:0 var(--spacing-5)}.workspace{grid-template-columns:320px minmax(0,1fr)}.card{padding:var(--spacing-5)}.summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.topbar{height:58px;padding:0 var(--spacing-5)}.topright{gap:var(--spacing-2)}.topright #connection{max-width:90px}.brand{font-size:var(--font-size-base)}.workspace{grid-template-columns:1fr}.intro{gap:var(--spacing-4);align-items:flex-start;flex-direction:column}.intro h1{font-size:var(--font-size-xl)}.intro button{white-space:nowrap}.lead{font-size:var(--font-size-sm)}.detail{min-height:350px;padding:var(--spacing-5)}.empty{padding:30px 0}.history #jobs{max-height:240px}footer{flex-direction:column;gap:5px}.simple-steps{gap:18px}.scope{align-items:flex-start}.work-tabs button{font-size:var(--font-size-sm);padding:12px 2px}.tag-row{flex-wrap:wrap}.tag-state{margin-left:26px}.tag-toolbar{flex-wrap:wrap}.tag-selection-footer .primary{width:100%}.result-columns{grid-template-columns:1fr}.cand-card{grid-template-columns:1fr}.cand-thumb{width:100%}.cad-stage{height:380px}.mv-stage{height:400px}.summary-panel .result-columns{grid-template-columns:1fr}}

/* 설정 확인 — 자동 기본 설정 요약 */
.auto-settings .auto-head{display:flex;align-items:baseline;gap:var(--spacing-2);flex-wrap:wrap;margin-bottom:var(--spacing-3)}.auto-settings .auto-head strong{font-size:var(--font-size-base)}.auto-settings .auto-head .hint{margin:0}
.auto-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px var(--spacing-5);margin:0;font-size:var(--font-size-sm);line-height:1.6}.auto-facts dt{color:var(--color-text-secondary)}.auto-facts dd{margin:0;font-weight:var(--font-weight-semibold);color:var(--color-text-primary);overflow-wrap:anywhere}.auto-facts .source-chip{margin-left:6px;vertical-align:1px}
.auto-settings details{margin:var(--spacing-3) 0 0}.auto-reasons{margin:var(--spacing-2) 0 0;padding-left:18px;font-size:var(--font-size-sm);line-height:1.7;color:var(--color-text-secondary)}.auto-reasons li+li{margin-top:4px}
.auto-foot{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:var(--spacing-3) 0 0;padding-top:var(--spacing-3);border-top:1px solid var(--color-border)}
/* 설정 확인 — 층고·구조 슬래브 두께: legend를 테두리 위가 아니라 칸 안의 제목줄로 둔다(float 기법). */
.dim-quantity{padding:var(--spacing-3) var(--spacing-4) var(--spacing-2)}
.dim-quantity legend{float:left;width:100%;padding:0 0 var(--spacing-1);margin:0;display:flex;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}
.dim-quantity legend+*{clear:both}
.dim-quantity>.hint{margin:0 0 var(--spacing-2)}
.dim-option{align-items:flex-start;padding:var(--spacing-2) 0}
.dim-option input[type=radio]{margin:3px 0 0;width:16px;height:16px}
.dim-option>span{flex:1;min-width:0;line-height:1.6}
.dim-option>span>strong{font-size:var(--font-size-sm)}
.dim-option:has(input[data-user]){align-items:center}
.dim-option:has(input[data-user]) input[type=radio]{margin-top:0}
.dim-option:has(input[data-user])>span{display:flex;align-items:center;flex-wrap:wrap;gap:var(--spacing-2)}
.dim-option input[type=number][data-user]{width:120px;margin:0;padding:6px 10px;min-height:32px}
.dim-option input[type=text][data-note]{flex:1;min-width:180px;max-width:360px;width:auto;margin:0;padding:6px 10px;min-height:32px}
.dim-more{margin:var(--spacing-1) 0}
/* 결과 확인 — 구현 미완료 목록은 기본 접힘 아코디언 */
.issue-accordion{padding:0}
.issue-accordion>summary{display:flex;align-items:center;gap:var(--spacing-3);flex-wrap:wrap;padding:var(--spacing-4) var(--spacing-5);list-style:none;cursor:pointer;color:var(--color-text-yellow)}
.issue-accordion>summary::-webkit-details-marker{display:none}
.issue-accordion>summary::before{content:'';width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform var(--duration-fast);flex-shrink:0}
.issue-accordion[open]>summary::before{transform:rotate(45deg)}
.issue-accordion>summary small{color:var(--color-text-yellow);opacity:.8;font-weight:var(--font-weight-normal)}
.issue-accordion[open]>summary{border-bottom:1px solid var(--color-border-yellow)}
.issue-accordion>:not(summary){margin-left:var(--spacing-5);margin-right:var(--spacing-5)}
.issue-accordion>:last-child{margin-bottom:var(--spacing-4)}
/* 미완료 항목 분류 칩: 구현 미완료(주황) · 직접 검토 필요(파랑) · 입력 필요(보라) */
.source-chip.issue-implementation_incomplete{background:var(--color-background-orange);color:var(--color-text-orange)}
.source-chip.issue-review_required{background:var(--color-background-blue);color:var(--color-text-blue)}
.source-chip.issue-input_required{background:#f7d5ff;color:#6b187c}
