/* 영업 단계는 portal·app.css, OS 진입 뒤는 admin.css가 화면 틀을 맡는다. */
.os-skip-link { position: absolute; top: calc(var(--space-64) * -2); padding: var(--space-12); background: var(--background-normal); z-index: 30; }
.os-skip-link:focus { top: var(--space-8); }
.os-intro { margin-top: var(--space-8); }
.os-workspaces { display: flex; flex-wrap: wrap; gap: var(--space-8); }
.os-workspaces a { max-width: 100%; height: auto; white-space: normal; overflow-wrap: anywhere; }
.me-head h1, .a-top h1, .a-proj b { overflow-wrap: anywhere; }
.os-list { list-style: none; padding: 0; margin: 0; }
.os-list > li { padding: var(--space-12) 0; box-shadow: inset 0 calc(var(--space-2) / -2) 0 var(--line-normal-alternative); }
.os-list > li:last-child { box-shadow: none; }
.source-item { display: flex; flex-direction: column; gap: var(--space-8); }
.os-source-heading { display: flex; align-items: center; gap: var(--space-8); }
.os-source-heading h3 { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.os-source-detail summary { cursor: pointer; color: var(--primary-normal); }
.snapshot { white-space: pre-wrap; overflow-wrap: anywhere; margin: var(--space-8) 0 0; padding: var(--space-12); background: var(--background-alternative); border-radius: var(--radius-8); }
.os-available li { display: flex; justify-content: space-between; align-items: center; gap: var(--space-12); }
.os-available li > span { min-width: 0; overflow-wrap: anywhere; }
.os-available form { flex: none; }
.os-create-form { margin-top: var(--space-16); }
.os-account-id { overflow-wrap: anywhere; }
.pe-form input[type="file"] { max-width: 100%; }
.os-processing-form { display: grid; gap: var(--space-8); margin-top: var(--space-12); }
.os-processing-estimate { display: flex; flex-wrap: wrap; gap: var(--space-16); margin: var(--space-12) 0; }
.os-processing-estimate dt { color: var(--label-alternative); }
.os-processing-estimate dd { margin: var(--space-4) 0 0; }
.os-memory-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-8); margin-top: var(--space-12); }
.os-memory-list > li { display: grid; gap: var(--space-8); }
.os-memory-list p, .os-evidence-list p { margin: 0; }
.os-memory-warning { color: var(--status-cautionary); padding: var(--space-12); background: var(--fill-alternative); border-radius: var(--radius-8); }
.os-evidence-list { display: grid; gap: var(--space-12); padding-left: var(--space-20); margin: var(--space-12) 0 0; }
.os-original-lines { list-style: none; padding-left: 0; }
.os-model-registry { margin-top: var(--space-16); }
.os-memory-candidate, .os-memory-page, .os-processing { min-width: 0; overflow-wrap: anywhere; }
/* 화면은 나누되 입력·카드·본문은 기존 Crest와 운영 화면의 규격을 사용한다. */
.os-visibility-note { display: grid; justify-items: start; gap: var(--space-8); margin: var(--space-12) 0 var(--space-16); }
.os-visibility-note p { margin: 0; }
.os-memory-search { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); align-items: end; gap: var(--space-12); margin: var(--space-16) 0; }
.os-search-field, .os-memory-edit-form { display: grid; gap: var(--space-8); min-width: 0; }
.os-search-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-12); }
.os-memory-search input, .os-memory-search select, .os-memory-edit-form textarea { width: 100%; min-width: 0; }
.os-memory-edit-form { margin-top: var(--space-12); }
.os-memory-edit > p, .os-memory-history > p { margin-top: var(--space-8); }
.os-memory-error { padding: var(--space-12); margin-top: var(--space-12); color: var(--status-negative); background: var(--fill-alternative); border-radius: var(--radius-8); }
.os-memory-error p + p { margin-top: var(--space-8); }
.os-memory-page:target, .source-item:target { scroll-margin-top: var(--space-24); }
/* 자료 추가와 처리 상태를 먼저 보여주고 원본·처리 설정은 접어 둔다. */
.os-sources-layout { display: grid; gap: var(--space-16); }
.os-add-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: var(--space-12); margin-top: var(--space-16); align-items: start; }
.os-add-option { min-width: 0; padding: var(--space-16); border-radius: var(--radius-8); background: var(--background-alternative); }
.os-add-option > summary { overflow-wrap: anywhere; }
.os-add-option > p, .os-source-use-help p + p { margin-top: var(--space-8); }
.os-add-option .os-processing-form { margin-top: var(--space-16); }
.os-existing-sources { margin-top: var(--space-12); }
.os-source-status { display: grid; justify-items: start; gap: var(--space-8); }
.os-source-status .os-memory-actions { margin-top: 0; }
.os-source-status p { margin: 0; }
.os-source-status .os-memory-warning p + p { margin-top: var(--space-8); }

.os-external-selection { display: grid; gap: var(--space-12); }
.os-external-selection .check { display: flex; align-items: flex-start; gap: var(--space-8); overflow-wrap: anywhere; }
.os-external-selection .check input { flex: none; }
/* 사용자는 입력과 반영 결과를 먼저 보고 세부 정보는 별도 화면에서 확인한다. */
.os-connect-actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--space-24); margin: var(--space-20) 0; }
.os-upload-form, .os-connected-account { display: grid; justify-items: start; gap: var(--space-8); min-width: 0; }
.os-connected-account .os-memory-actions { margin-top: 0; }
.os-upload-control { position: relative; overflow: hidden; cursor: pointer; }
.os-upload-control input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.os-upload-control:focus-within { outline: var(--space-2) solid var(--primary-normal); outline-offset: var(--space-2); }
.os-result-memories { display: grid; gap: var(--space-8); padding: var(--space-12); background: var(--background-alternative); border-radius: var(--radius-8); }
.os-result-memories p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.os-result-list .os-memory-actions { margin-top: 0; }
#source-detail > details { margin-top: var(--space-16); }
