/* 포토그램 AI 실습실 — site.css 토큰 재사용 + .lab- 전용 보충.
   색: --ink/--ink-2/--paper/--blue/--accent 등은 site.css :root 에서 상속. */

.lab, .lab * { box-sizing: border-box; }
.lab {
  margin: 0;
  background: var(--ink, #07090D);
  color: var(--paper, #E9F1F8);
  font-family: Pretendard, system-ui, "Malgun Gothic", sans-serif;
  font-size: 15px; line-height: 1.6; min-height: 100vh;
  -webkit-font-smoothing: antialiased;
}
.lab a { color: inherit; }
.lab code { font-family: ui-monospace, "Consolas", monospace; font-size: .92em; background: var(--ink-3, #111823); padding: 1px 6px; border-radius: 5px; }
.lab-ic { vertical-align: -.15em; flex: none; }

.lab-wrap { width: 100%; max-width: 1180px; margin: 0 auto; padding: 0 20px; }
.lab-narrow { max-width: 620px; }

/* 청사진 느낌 상단 그리드 */
.lab::before {
  content: ""; position: fixed; inset: 0 0 auto 0; height: 180px; pointer-events: none; z-index: 0;
  background-image: linear-gradient(var(--line, rgba(150,195,230,.14)) 1px, transparent 1px),
                    linear-gradient(90deg, var(--line, rgba(150,195,230,.14)) 1px, transparent 1px);
  background-size: 32px 32px; opacity: .5;
  -webkit-mask-image: linear-gradient(180deg, #000, transparent); mask-image: linear-gradient(180deg, #000, transparent);
}
.lab > * { position: relative; z-index: 1; }

/* 타이포 */
.lab-h1 { font-size: 24px; font-weight: 800; margin: 0 0 6px; letter-spacing: -.01em; }
.lab-h2 { font-size: 17px; font-weight: 700; margin: 0 0 12px; display: flex; align-items: center; gap: 7px; }
.lab-muted { color: var(--paper-dim, #93A6BA); }

/* 카드 */
.lab-card {
  background: var(--ink-2, #0C1016); border: 1px solid var(--line, rgba(150,195,230,.14));
  border-radius: 16px; padding: 22px; margin: 0 0 18px;
}
.lab-empty { color: var(--paper-dim, #93A6BA); text-align: center; padding: 34px 22px; }

/* 버튼 */
.lab-btn {
  display: inline-flex; align-items: center; gap: 7px; justify-content: center;
  min-height: 42px; padding: 0 16px; border-radius: 10px; font-weight: 700; font-size: 14.5px;
  border: 1px solid var(--line-2, rgba(150,195,230,.28)); background: var(--ink-3, #111823);
  color: var(--paper, #E9F1F8); cursor: pointer; text-decoration: none; transition: .15s;
}
.lab-btn:hover { border-color: var(--paper-dim, #93A6BA); }
.lab-btn--solid { background: var(--accent, #FF5A1F); border-color: var(--accent, #FF5A1F); color: #fff; }
.lab-btn--solid:hover { filter: brightness(1.06); border-color: var(--accent, #FF5A1F); }
.lab-btn--ghost { background: transparent; }
.lab-btn--lg { min-height: 50px; padding: 0 26px; font-size: 16px; }
.lab-btn--sm { min-height: 34px; padding: 0 11px; font-size: 13px; }
.lab-btn:focus-visible { outline: 2px solid var(--accent, #FF5A1F); outline-offset: 2px; }

/* 폼 */
.lab-form { display: flex; flex-direction: column; gap: 14px; margin-top: 16px; }
.lab-field { display: flex; flex-direction: column; gap: 6px; }
.lab-field > span { font-size: 13px; color: var(--paper-dim, #93A6BA); font-weight: 600; }
.lab-field2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lab input, .lab select, .lab textarea {
  width: 100%; background: var(--ink, #07090D); color: var(--paper, #E9F1F8);
  border: 1px solid var(--line-2, rgba(150,195,230,.28)); border-radius: 10px;
  padding: 11px 13px; font-size: 15px; font-family: inherit; line-height: 1.5;
}
.lab textarea { resize: vertical; min-height: 92px; }
.lab input:focus, .lab select:focus, .lab textarea:focus { outline: none; border-color: var(--accent, #FF5A1F); box-shadow: 0 0 0 3px var(--accent-dim, rgba(255,90,31,.14)); }
.lab-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 4px; }
.lab-code-in { font-size: 22px !important; letter-spacing: .14em; text-align: center; text-transform: uppercase; font-weight: 800; }

/* 알림 */
.lab-alert { background: var(--accent-dim, rgba(255,90,31,.14)); border: 1px solid var(--accent, #FF5A1F); color: #FFD9C9; border-radius: 10px; padding: 11px 14px; font-size: 14px; margin: 14px 0; }
.lab-ok { background: rgba(78,126,166,.16); border: 1px solid var(--blue-deep, #4E7EA6); color: var(--blue, #A9D4F5); border-radius: 10px; padding: 11px 14px; font-size: 14px; margin: 14px 0; }

/* 코드 표시 */
.lab-code { font-family: ui-monospace, monospace; font-weight: 800; letter-spacing: .12em; font-size: 16px; }
.lab-code--xl { font-size: 46px; color: var(--accent, #FF5A1F); }

/* 배지 */
.lab-badge { font-size: 11.5px; font-weight: 700; padding: 3px 9px; border-radius: 100px; border: 1px solid var(--line-2); }
.lab-badge--on { color: var(--blue, #A9D4F5); border-color: var(--blue-deep, #4E7EA6); }
.lab-badge--off { color: var(--paper-dim); }
.lab-badge--warn { color: var(--accent, #FF5A1F); border-color: var(--accent, #FF5A1F); }

/* 강사 상단 바 */
.lab-abar { background: var(--ink-2, #0C1016); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 30; }
.lab-abar__in { display: flex; align-items: center; gap: 18px; min-height: 58px; }
.lab-abar__brand { font-weight: 700; text-decoration: none; font-size: 15px; display: inline-flex; align-items: center; gap: 8px; }
/* (제거) 예전 .lab-abar__brand span 규칙 — '강사' 배지 글자색을 오렌지로 덮어 오렌지 바탕에 안 보였음.
   로고 라벨은 .lab-logo__t / .lab-logo__sub 자체 스타일 사용. */
.lab-abar__nav { display: flex; gap: 4px; margin-left: 8px; }
.lab-abar__link { text-decoration: none; padding: 7px 12px; border-radius: 8px; font-size: 14px; color: var(--paper-dim); font-weight: 600; }
.lab-abar__link--on, .lab-abar__link:hover { color: var(--paper); background: var(--ink-3); }
.lab-abar__out { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; }
.lab-abar__outlink { text-decoration: none; color: var(--paper-dim); font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; gap: 5px; padding: 6px 10px; border-radius: 8px; white-space: nowrap; }
.lab-abar__outlink:hover { color: var(--paper); background: var(--ink-3); }
.lab-amain { padding: 24px 20px 60px; }
.lab-cohort-actions { display: flex; gap: 10px; flex-wrap: wrap; margin: 2px 0 18px; }
.lab-amain__grid { display: grid; grid-template-columns: 1fr 360px; gap: 24px; align-items: start; }
.lab-back { display: inline-flex; align-items: center; gap: 6px; color: var(--paper-dim); text-decoration: none; font-size: 13.5px; margin-bottom: 12px; }
.lab-back:hover { color: var(--paper); }

/* 강의 카드 목록 */
.lab-clist { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.lab-ccard { display: block; text-decoration: none; background: var(--ink-2); border: 1px solid var(--line); border-radius: 14px; padding: 16px; transition: .15s; }
.lab-ccard:hover { border-color: var(--line-2); transform: translateY(-2px); }
.lab-ccard__top { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.lab-ccard__title { font-weight: 700; font-size: 15.5px; }
.lab-ccard__meta { font-size: 12.5px; color: var(--paper-dim); margin-top: 3px; }

/* 입장 주소/QR */
.lab-enter { display: grid; grid-template-columns: auto 1fr; gap: 28px; align-items: center; }
.lab-enter__code { text-align: center; }
.lab-copyrow { display: flex; gap: 8px; margin-top: 6px; }
.lab-copyrow__in { font-size: 13.5px; }
.lab-qr { margin-top: 16px; width: 180px; height: 180px; background: #fff; border-radius: 10px; display: flex; align-items: center; justify-content: center; }
.lab-qr svg, .lab-qr img, .lab-qr canvas { width: 92%; height: 92%; }

/* 랜딩 */
.lab-landing { padding-top: 56px; text-align: left; }
.lab-landing__brand { font-size: 20px; font-weight: 700; text-align: center; margin-bottom: 20px; }
.lab-landing__brand b { color: var(--accent, #FF5A1F); }
.lab-landing__note { text-align: center; color: var(--paper-dim); font-size: 13px; margin-top: 18px; }

/* 동의 */
.lab-consent { display: flex; align-items: flex-start; gap: 9px; font-size: 14px; cursor: pointer; }
.lab-consent input { width: auto; margin-top: 3px; flex: none; width: 18px; height: 18px; accent-color: var(--accent, #FF5A1F); }
.lab-consent-box { font-size: 13px; color: var(--paper-dim, #93A6BA); background: var(--ink, #07090D); border: 1px solid var(--line); border-radius: 10px; padding: 4px 14px; }
.lab-consent-box summary { cursor: pointer; padding: 8px 0; font-weight: 600; }
.lab-consent-box ul { margin: 4px 0 12px; padding-left: 18px; line-height: 1.7; }
.lab-consent-box b { color: var(--paper, #E9F1F8); }

/* 안전 띠 */
.lab-safety { background: rgba(255,90,31,.1); border-bottom: 1px solid var(--accent, #FF5A1F); color: #FFD9C9; font-size: 12.5px; font-weight: 600; height: 36px; padding: 0 16px; display: flex; align-items: center; justify-content: center; gap: 7px; }
.lab-safety.lab-safety--hide { display: none; }
.lab-safety__x { margin-left: 10px; background: none; border: 0; color: #FFD9C9; font-size: 18px; line-height: 1; cursor: pointer; opacity: .7; padding: 0 4px; }
.lab-safety__x:hover { opacity: 1; }

/* 푸터 */
.lab-foot { border-top: 1px solid var(--line); margin-top: 40px; padding: 18px 0; color: var(--paper-dim); font-size: 12.5px; text-align: center; }

/* ───── 실습실 앱 레이아웃(전체 폭) ───── */
.lab-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }

/* 앱 페이지에서는 .wrap 폭 제한 해제 → 화면 전체 사용 */
.lab-app-page .lab-wrap { max-width: none; width: 100%; padding-left: clamp(16px, 2vw, 32px); padding-right: clamp(16px, 2vw, 32px); }
.lab-prose { max-width: 72ch; font-size: 15px; line-height: 1.75; }
/* 얇고 어두운 스크롤바 */
.lab-app-page * { scrollbar-width: thin; scrollbar-color: var(--line-2) transparent; }
.lab-app-page *::-webkit-scrollbar { width: 9px; height: 9px; }
.lab-app-page *::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: 100px; }
.lab-app-page *::-webkit-scrollbar-track { background: transparent; }
/* 관리자 상단 바는 탭(과정=lab-app-page 포함)과 무관하게 폭·위치 동일 */
.lab-abar .lab-wrap { max-width: 1200px; margin-inline: auto; width: 100%; }

/* 상단 바 */
.lab-tb { position: sticky; top: 0; z-index: 40; background: var(--ink-2, #0C1016); border-bottom: 1px solid var(--line); }
.lab-tb__in { display: flex; align-items: center; gap: 14px; min-height: 56px; }
.lab-tb__brand { text-decoration: none; font-size: 14.5px; white-space: nowrap; }
.lab-tb__brand b { color: var(--accent, #FF5A1F); }
.lab-tb__course { font-size: 13.5px; color: var(--paper-dim); max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lab-tb__prog { display: flex; align-items: center; gap: 9px; margin-left: auto; font-size: 12.5px; color: var(--paper-dim); white-space: nowrap; }
.lab-tb__bar { width: clamp(160px, 15vw, 240px); height: 6px; background: var(--ink-3); border-radius: 100px; overflow: hidden; }
.lab-tb__bar i { display: block; height: 100%; background: var(--accent, #FF5A1F); transition: width .3s; }
.lab-tb__me { font-size: 13.5px; font-weight: 600; white-space: nowrap; }
.lab-tb__nav { display: flex; gap: 6px; align-items: center; }
.lab-tb__btn { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; font-size: 13px; color: var(--paper); border: 1px solid var(--line-2); border-radius: 8px; padding: 7px 10px; white-space: nowrap; background: none; cursor: pointer; }
.lab-tb__btn:hover { border-color: var(--paper-dim); }
.lab-tb__btn--out { color: var(--paper-dim); border-color: transparent; }
.lab-tb__ic { display: inline-flex; }

/* 도구 칩 줄(1600px 미만에서 보임) */
.lab-toolchips { position: sticky; top: 56px; z-index: 35; background: var(--ink, #07090D); border-bottom: 1px solid var(--line); }
.lab-toolchips__in { display: flex; align-items: center; gap: 8px; overflow-x: auto; padding: 9px clamp(16px, 2vw, 32px); }
.lab-toolchips__l { font-size: 11px; font-weight: 700; color: var(--paper-dim); flex: none; }
.lab-toolchip { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; text-decoration: none; font-size: 12.5px; font-weight: 600; color: var(--paper); background: var(--ink-2); border: 1px solid var(--line); border-radius: 100px; padding: 5px 12px; }
.lab-toolchip:hover { border-color: var(--paper-dim); }
.lab-toolchip--on { border-color: var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); }
.lab-toolchip:not(.lab-toolchip--on) { opacity: .66; }
.lab-toolchip b { font-size: 10px; color: var(--accent, #FF5A1F); border: 1px solid var(--accent); border-radius: 100px; padding: 0 5px; }
@media (min-width: 1600px) { .lab-toolchips { display: none; } }

/* '지금 여기' 띠 */
.lab-nowbar { background: var(--accent-dim, rgba(255,90,31,.14)); border-bottom: 1px solid var(--accent, #FF5A1F); font-size: 13.5px; }
.lab-nowbar .lab-wrap { padding: 9px clamp(16px, 2vw, 32px); display: flex; align-items: center; gap: 7px; }
.lab-nowbar a { color: var(--accent, #FF5A1F); font-weight: 700; margin-left: 6px; }

/* 앱 그리드: [단계 목록 | 본문 | 오른쪽 패널] */
.lab-app { display: grid; grid-template-columns: minmax(280px, 320px) minmax(0, 1fr); gap: 22px; align-items: start; padding: 18px clamp(16px, 2vw, 32px) 72px; }
@media (min-width: 1600px) { .lab-app { grid-template-columns: 320px minmax(0, 1fr) 360px; } }
.lab-app__side { position: sticky; top: 112px; max-height: calc(100vh - 128px); overflow-y: auto; padding-right: 4px; }
.lab-app__main { min-width: 0; }
.lab-app__panel { display: none; }
@media (min-width: 1600px) { .lab-app__panel { display: block; position: sticky; top: 112px; max-height: calc(100vh - 128px); overflow-y: auto; } }

/* 오른쪽 패널 내용 */
.lab-rp__h { font-size: 11.5px; font-weight: 800; color: var(--blue, #A9D4F5); letter-spacing: .04em; text-transform: uppercase; margin: 2px 0 8px; }
.lab-rp__h:not(:first-child) { margin-top: 18px; }
.lab-rptool { display: block; text-decoration: none; background: var(--ink-2); border: 1px solid var(--line); border-radius: 11px; padding: 11px 13px; margin-bottom: 9px; border-left: 3px solid var(--accent, #FF5A1F); }
.lab-rptool:hover { border-color: var(--line-2); border-left-color: var(--accent, #FF5A1F); }
.lab-rptool__n { display: flex; align-items: center; gap: 5px; font-weight: 700; font-size: 13.5px; }
.lab-rptool__n b { font-size: 10px; color: var(--accent, #FF5A1F); border: 1px solid var(--accent); border-radius: 100px; padding: 0 5px; }
.lab-rptool__u { display: block; font-size: 12px; color: var(--paper-dim); margin-top: 3px; }
.lab-rptool__lim { display: block; font-size: 11.5px; color: var(--blue, #A9D4F5); margin-top: 4px; }
.lab-rpm { background: var(--ink-2); border: 1px solid var(--line); border-radius: 11px; padding: 11px 13px; margin-bottom: 9px; }
.lab-rpm__t { font-weight: 700; font-size: 12.5px; color: var(--blue, #A9D4F5); margin-bottom: 5px; }
.lab-rpm ul { margin: 0; padding-left: 16px; font-size: 12px; color: var(--paper-dim); line-height: 1.6; }

/* 단계 목록 */
.lab-sl { display: flex; flex-direction: column; gap: 10px; }
/* 기본 정보 카드(PART와 구분) */
.lab-slpf { display: flex; align-items: center; justify-content: space-between; text-decoration: none; background: var(--ink-2); border: 1px solid var(--line); border-radius: 11px; padding: 11px 14px; color: var(--paper); }
.lab-slpf:hover { border-color: var(--line-2); }
.lab-slpf--on { border-color: var(--accent, #FF5A1F); box-shadow: inset 2px 0 0 var(--accent, #FF5A1F); }
.lab-slpf__t { font-weight: 700; font-size: 13.5px; }
.lab-slpf__n { font-size: 12px; color: var(--paper-dim); font-variant-numeric: tabular-nums; }
/* 항목 진행판 */
.lab-itemboard { background: var(--ink-2); border: 1px solid var(--line); border-radius: 11px; padding: 10px 12px; }
.lab-itemboard__h { font-size: 11px; font-weight: 700; color: var(--paper-dim); margin-bottom: 7px; }
.lab-itemboard__row { display: grid; grid-template-columns: repeat(6, 1fr); gap: 5px; }
.lab-itemdot { display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 10px; color: var(--paper-dim); text-align: center; }
.lab-itemdot b { width: 22px; height: 22px; border-radius: 50%; background: var(--ink-3); border: 1.5px solid var(--line-2); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; }
.lab-itemdot.is-on { color: var(--paper); }
.lab-itemdot.is-on b { background: var(--accent, #FF5A1F); border-color: var(--accent, #FF5A1F); color: #fff; }
.lab-sl__items { display: flex; flex-wrap: wrap; gap: 3px; margin: 2px 0; }
.lab-itemchip { font-size: 10px; font-weight: 700; color: var(--blue, #A9D4F5); background: rgba(78,126,166,.14); border-radius: 100px; padding: 0 7px; }
/* 진행 방식·비용 꼬리표 */
.lab-sl__tags { display: inline-flex; flex-wrap: wrap; gap: 3px; margin-left: 4px; }
.lab-tag { font-size: 10px; font-weight: 700; border-radius: 100px; padding: 0 7px; line-height: 1.5; white-space: nowrap; }
.lab-tag--demo { color: #fff; background: var(--blue-deep, #4E7EA6); }
.lab-tag--opt  { color: var(--paper-dim); background: rgba(255,255,255,.08); border: 1px solid var(--line-2); }
.lab-tag--free { color: #86efac; background: rgba(34,197,94,.14); }
.lab-tag--paid { color: var(--accent, #FF5A1F); background: rgba(255,90,31,.14); }
/* '시간 되면' 단계: 기본 숨김 → 그룹 토글로 노출 */
.lab-slp__list .lab-sl__item--opt { display: none; }
.lab-slp--showopt .lab-slp__list .lab-sl__item--opt { display: block; }
.lab-slp__opttgl { list-style: none; }
.lab-slp__opttgl button { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; color: var(--paper-dim); font-size: 11.5px; cursor: pointer; padding: 4px 10px; border-radius: 8px; }
.lab-slp__opttgl button:hover { color: var(--paper); background: var(--ink-2); }
/* 강사 시연 띠 */
.lab-demobar { display: flex; align-items: center; gap: 8px; background: rgba(78,126,166,.14); border: 1px solid var(--blue-deep, #4E7EA6); color: var(--paper); border-radius: 10px; padding: 10px 13px; margin: 2px 0 12px; font-size: 13px; }
.lab-demobar b { color: var(--blue, #A9D4F5); }

/* PART 묶음 */
.lab-slp { border-top: 2px solid var(--line-2); padding-top: 4px; }
.lab-slp__h { display: flex; align-items: baseline; gap: 8px; cursor: pointer; padding: 8px 2px 8px 4px; list-style: none; }
.lab-slp__h::-webkit-details-marker { display: none; }
.lab-slp__h::before { content: "▸"; color: var(--paper-dim); font-size: 10px; transition: transform .15s; }
.lab-slp[open] .lab-slp__h::before { transform: rotate(90deg); }
.lab-slp__no { font-size: 14px; font-weight: 800; color: var(--paper); letter-spacing: -.01em; }
.lab-slp--cur .lab-slp__no { color: var(--accent, #FF5A1F); }
.lab-slp__h .lab-slp__t { font-size: 12.5px; color: var(--paper-dim); flex: 1; min-width: 0; }
.lab-slp__h .lab-slp__n { font-size: 11.5px; color: var(--paper-dim); font-variant-numeric: tabular-nums; }
.lab-slp__list { list-style: none; margin: 0 0 2px; padding: 0 0 2px 11px; border-left: 2px solid var(--line); margin-left: 8px; }
.lab-slp--cur .lab-slp__list { border-left-color: var(--blue-deep, #4E7EA6); }
.lab-sl__item { display: block; }
.lab-sl__item a { display: grid; grid-template-columns: 18px 1fr; align-items: start; column-gap: 8px; text-decoration: none; padding: 4px 10px; border-radius: 9px; font-size: 13px; color: var(--paper-dim); position: relative; }
.lab-sl__item a:hover { background: var(--ink-2); color: var(--paper); }
.lab-sl__item--on a { background: var(--ink-3); color: var(--paper); }
.lab-sl__item--done .lab-sl__k { color: var(--blue, #A9D4F5); }
.lab-sl__dot { width: 18px; display: inline-flex; align-items: center; justify-content: flex-start; position: relative; }
.lab-sl__dot::before { content: ""; position: absolute; left: -14px; top: 5px; width: 9px; height: 9px; border-radius: 50%; background: var(--ink-3); border: 2px solid var(--line-2); }
.lab-sl__item--done .lab-sl__dot::before { background: var(--blue, #A9D4F5); border-color: var(--blue, #A9D4F5); }
.lab-sl__item--on .lab-sl__dot::before { background: var(--accent, #FF5A1F); border-color: var(--accent, #FF5A1F); }
.lab-sl__dot .lab-ic { color: var(--blue, #A9D4F5); }
.lab-sl__body { min-width: 0; }
/* 1줄: 라벨 + 오른쪽 끝 꼬리표 */
.lab-sl__l1 { display: flex; align-items: center; gap: 5px; min-width: 0; }
.lab-sl__k { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lab-sl__l1 .lab-sl__items, .lab-sl__l1 .lab-sl__tags { margin-left: auto; flex: none; }
.lab-sl__l1 .lab-itemchip { min-width: 15px; text-align: center; }
/* 2줄: 제목 한 줄 … */
.lab-sl__t { color: var(--paper-dim); font-size: 12px; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
.lab-sl__item--on .lab-sl__t { color: var(--paper); }
.lab-sl__now { display: inline-block; margin-top: 2px; font-size: 10.5px; font-weight: 700; color: var(--accent, #FF5A1F); border: 1px solid var(--accent); border-radius: 100px; padding: 0 6px; }

/* 단계 카드 */
.lab-step__kicker { font-family: ui-monospace, monospace; font-size: 12px; font-weight: 700; color: var(--accent, #FF5A1F); letter-spacing: .08em; }
.lab-step__title { font-size: 24px; font-weight: 800; margin: 4px 0 10px; letter-spacing: -.01em; line-height: 1.25; }
.lab-step__todo { color: var(--paper); font-size: 17px; line-height: 1.6; margin: 0 0 18px; max-width: 72ch; }

/* 2단 작업 구조 */
.lab-step__cols { display: grid; grid-template-columns: 1fr; gap: 22px; }
@media (min-width: 1280px) { .lab-step__cols { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; } }
@media (min-width: 1280px) { .lab-step__work { position: sticky; top: 112px; } }
.lab-step__cols .lab-fields--step { margin-top: 0; padding-top: 0; border-top: 0; }
@media (min-width: 1600px) { .lab-step__methods { display: none; } }

.lab-stools { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.lab-stool { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; font-size: 13px; font-weight: 600; background: var(--ink-3); border: 1px solid var(--line-2); border-radius: 9px; padding: 7px 11px; }
.lab-stool:hover { border-color: var(--accent, #FF5A1F); }
.lab-stool__lim { font-size: 11px; color: var(--paper-dim); font-weight: 400; }

.lab-infocards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; margin: 4px 0 18px; }
.lab-infocard { background: var(--ink, #07090D); border: 1px solid var(--line); border-radius: 11px; padding: 14px 16px; }
.lab-infocard__t { font-weight: 700; font-size: 15px; margin-bottom: 6px; }
.lab-infocard__b { font-size: 14px; color: var(--paper-dim); line-height: 1.7; }

/* 정적 안내 표(guide_table) — 읽기용, 입력 아님 */
.lab-gtbl-wrap { overflow-x: auto; margin: 4px 0 18px; border: 1px solid var(--line); border-radius: 11px; }
.lab-gtbl { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.lab-gtbl th { background: var(--ink-3); text-align: left; padding: 9px 12px; font-weight: 700; font-size: 12.5px; border-bottom: 1px solid var(--line-2); white-space: nowrap; }
.lab-gtbl td { border-top: 1px solid var(--line); padding: 9px 12px; vertical-align: top; color: var(--paper-dim); line-height: 1.6; }
.lab-gtbl td:first-child { font-weight: 600; color: var(--paper); white-space: nowrap; }

.lab-screen { background: var(--ink, #07090D); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; margin-bottom: 18px; }
.lab-screen__h { font-size: 12px; font-weight: 700; color: var(--blue, #A9D4F5); letter-spacing: .04em; margin-bottom: 8px; }
.lab-screen__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.lab-screen__list li { display: flex; align-items: flex-start; gap: 9px; font-size: 14px; line-height: 1.6; }
.lab-screen__n { flex: none; width: 21px; height: 21px; border-radius: 50%; background: var(--ink-3); border: 1px solid var(--line-2); font-size: 11.5px; font-weight: 700; display: flex; align-items: center; justify-content: center; font-family: ui-monospace, monospace; margin-top: 1px; }

/* 프롬프트 */
.lab-prompts { display: flex; flex-direction: column; gap: 12px; margin-bottom: 18px; }
.lab-prompt { background: var(--ink, #07090D); border: 1px solid var(--line-2); border-radius: 12px; overflow: hidden; }
.lab-prompt__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; background: var(--ink-3); border-bottom: 1px solid var(--line); }
.lab-prompt__label { font-size: 13px; font-weight: 700; }
.lab-prompt__body { padding: 15px 16px; font-size: 15px; line-height: 1.75; white-space: normal; font-family: Pretendard, system-ui, "Malgun Gothic", sans-serif; }
.lab-var.on { color: var(--accent, #FF5A1F); font-weight: 700; border-bottom: 2px solid var(--accent, #FF5A1F); }
.lab-var.off { color: var(--accent, #FF5A1F); border: 1px dashed var(--accent, #FF5A1F); border-radius: 100px; padding: 1px 9px; font-size: .92em; white-space: nowrap; }
.lab-fillnote { font-size: 12.5px; color: var(--paper-dim); display: flex; align-items: center; gap: 6px; }
.lab-fillnote a { color: var(--accent, #FF5A1F); }
/* 앞 단계에서 자동 유입된 변수 꼬리표 */
.lab-var__src { font-size: 9.5px; font-weight: 700; color: var(--accent, #FF5A1F); vertical-align: super; margin-left: 2px; opacity: .85; white-space: nowrap; letter-spacing: -.2px; }
.lab-var__go { margin-left: 5px; font-size: .9em; font-weight: 700; text-decoration: underline; color: inherit; }

/* '이 단계 흐름' 띠 */
.lab-flow { display: flex; align-items: stretch; gap: 8px; flex-wrap: wrap; margin: 2px 0 16px; }
.lab-flow__box { flex: 1 1 0; min-width: 150px; background: var(--ink-3, rgba(255,255,255,.03)); border: 1px solid var(--line-2); border-radius: 10px; padding: 8px 12px; display: flex; flex-direction: column; gap: 3px; }
.lab-flow__box--ai { border-color: var(--accent, #FF5A1F); }
.lab-flow__box--out { border-style: dashed; }
.lab-flow__k { font-size: 10.5px; font-weight: 700; color: var(--paper-dim); letter-spacing: .02em; text-transform: none; }
.lab-flow__v { font-size: 13px; font-weight: 700; line-height: 1.4; display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.lab-flow__arr { display: flex; align-items: center; color: var(--paper-dim); flex: 0 0 auto; align-self: center; }
.lab-flow__chip { background: var(--accent-dim, rgba(255,90,31,.12)); border: 1px solid var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); border-radius: 100px; padding: 2px 10px; font-size: 12px; font-weight: 700; cursor: pointer; }
.lab-flow__chip:hover { background: var(--accent, #FF5A1F); color: #fff; }
.lab-flow__none { font-size: 12.5px; color: var(--paper-dim); font-weight: 600; }
@media (max-width: 1100px) { .lab-flow__arr { display: none; } .lab-flow__box { flex-basis: 100%; } }
html[data-theme="light"] .lab-var__src, html[data-theme="light"] .lab-flow__chip { color: #C2410C; }
html[data-theme="light"] .lab-flow__chip { border-color: #C2410C; }
html[data-theme="light"] .lab-flow__box--ai { border-color: #C2410C; }

/* AI 답변 붙여넣기(원본 보관) 칸 */
.lab-ansbox { margin-top: 8px; }
.lab-ansbox__l { display: flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--paper); margin-bottom: 5px; }
.lab-ansbox__sub { font-weight: 400; color: var(--paper-dim); font-size: 11.5px; }
.lab-ans { min-height: 108px; }
/* 직접 메모(선택) 접기 */
.lab-memo { margin-top: 12px; border: 1px dashed var(--line-2); border-radius: 10px; }
.lab-memo > summary { cursor: pointer; padding: 9px 12px; font-size: 13px; font-weight: 700; list-style: none; }
.lab-memo > summary::-webkit-details-marker { display: none; }
.lab-memo > summary::before { content: '▸'; margin-right: 6px; color: var(--paper-dim); }
.lab-memo[open] > summary::before { content: '▾'; }
.lab-memo__sub { font-weight: 400; color: var(--paper-dim); font-size: 11.5px; }
.lab-memo .lab-fields { padding: 2px 12px 12px; }
/* 드래그 선택 → 떠 있는 작은 메뉴 */
.lab-selmenu { position: absolute; z-index: 60; display: flex; flex-wrap: wrap; gap: 4px; max-width: 340px; background: var(--ink-2, #0d1017); border: 1px solid var(--line-2); border-radius: 10px; padding: 6px; box-shadow: 0 8px 24px rgba(0,0,0,.45); }
.lab-selmenu__b { background: var(--accent-dim, rgba(255,90,31,.12)); border: 1px solid var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); border-radius: 7px; padding: 3px 9px; font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.lab-selmenu__b:hover { background: var(--accent, #FF5A1F); color: #fff; }
.lab-selmenu__b--ev { border-style: dashed; flex-basis: 100%; }
html[data-theme="light"] .lab-selmenu { background: #fff; }
html[data-theme="light"] .lab-selmenu__b { color: #C2410C; border-color: #C2410C; }
/* STEP 1 답변 통째 → 7칸 분리 */
.lab-s1split { border: 1px solid var(--accent, #FF5A1F); border-radius: 10px; padding: 10px 12px; margin-bottom: 12px; background: var(--accent-dim, rgba(255,90,31,.06)); }
.lab-s1split__act { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 7px; }
.lab-s1tag { display: inline-block; font-size: 10.5px; font-weight: 700; color: var(--accent, #FF5A1F); border: 1px solid var(--accent, #FF5A1F); border-radius: 100px; padding: 0 7px; margin: 0 0 4px; }
html[data-theme="light"] .lab-s1split { border-color: #C2410C; }
html[data-theme="light"] .lab-s1tag { color: #C2410C; border-color: #C2410C; }

/* 오늘의 흐름 지도 */
.lab-fmap { border: 1px solid var(--line-2); border-radius: 14px; padding: 16px 18px; margin: 4px 0 18px; background: var(--ink-3, rgba(255,255,255,.03)); }
.lab-fmap__slo { font-size: 18px; font-weight: 800; line-height: 1.5; margin-bottom: 14px; }
.lab-fmap__slo b { color: var(--accent, #FF5A1F); }
.lab-fmap__cols { display: flex; align-items: stretch; gap: 10px; flex-wrap: wrap; }
.lab-fmap__col { flex: 1 1 0; min-width: 200px; background: var(--ink-2, rgba(0,0,0,.2)); border: 1px solid var(--line-2); border-radius: 10px; padding: 12px 14px; display: flex; flex-direction: column; gap: 4px; }
.lab-fmap__col--right { border-color: var(--accent, #FF5A1F); }
.lab-fmap__k { font-size: 11px; font-weight: 700; color: var(--paper-dim); }
.lab-fmap__col b { font-size: 15px; }
.lab-fmap__d { font-size: 12px; color: var(--paper-dim); line-height: 1.5; }
.lab-fmap__arr { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: var(--accent, #FF5A1F); flex: 0 0 auto; align-self: center; }
.lab-fmap__arr small { font-size: 10.5px; font-weight: 700; white-space: nowrap; }
.lab-fmap__ev { margin-top: 12px; font-size: 12.5px; color: var(--paper-dim); display: flex; align-items: center; gap: 6px; }
.lab-fmap__ev b { color: var(--paper); }
@media (max-width: 900px) { .lab-fmap__arr { transform: rotate(90deg); } .lab-fmap__col { flex-basis: 100%; } }
html[data-theme="light"] .lab-fmap__col--right { border-color: #C2410C; }
html[data-theme="light"] .lab-fmap__slo b, html[data-theme="light"] .lab-fmap__arr { color: #C2410C; }
/* STEP 7 들어가는 것/안 들어가는 것 */
.lab-plan__inchint { font-size: 12px; color: var(--paper-dim); margin: 6px 0 0; line-height: 1.6; }
.lab-plan__inchint b { color: var(--paper); }
/* 도움말 단계별 흐름 표 */
.lab-flowtable-wrap { overflow-x: auto; margin-top: 12px; }
.lab-flowtable { width: 100%; border-collapse: collapse; font-size: 13px; }
.lab-flowtable th, .lab-flowtable td { border: 1px solid var(--line-2); padding: 7px 10px; text-align: left; vertical-align: top; }
.lab-flowtable th { background: var(--ink-3, rgba(255,255,255,.04)); font-size: 12px; color: var(--paper-dim); white-space: nowrap; }
.lab-flowtable td:first-child { font-weight: 700; white-space: nowrap; }

/* '이번 강의' 카드(왼쪽 메뉴 맨 위) */
.lab-sl__top { display: flex; align-items: flex-start; gap: 8px; }
.lab-sl__top .lab-sl__collapse { flex: 0 0 auto; margin-left: auto; }
.lab-cohcard { flex: 1 1 auto; min-width: 0; background: var(--ink-2, rgba(255,255,255,.03)); border: 1px solid var(--line-2); border-radius: 10px; padding: 9px 11px; }
.lab-cohcard__org { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--blue, #A9D4F5); font-weight: 700; margin-bottom: 3px; }
.lab-cohcard__logo { height: 20px; width: auto; max-width: 72px; object-fit: contain; border-radius: 3px; background: #fff; }
.lab-cohcard__prog { font-size: 13.5px; font-weight: 800; line-height: 1.35; margin-bottom: 4px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lab-cohcard__dt { font-size: 12.5px; color: var(--paper); margin-bottom: 2px; }
.lab-cohcard__row { font-size: 11.5px; color: var(--paper-dim); display: flex; align-items: center; gap: 4px; margin-top: 1px; }
.lab-cohcard__mini { display: none; flex: 0 0 auto; color: var(--blue, #A9D4F5); padding: 6px; cursor: default; }
.lab-app.lab-sl-collapsed .lab-cohcard { display: none; }
.lab-app.lab-sl-collapsed .lab-cohcard__mini { display: flex; }
.lab-app.lab-sl-collapsed .lab-sl__top { flex-direction: column; align-items: center; gap: 4px; }
html[data-theme="light"] .lab-cohcard__org, html[data-theme="light"] .lab-cohcard__mini { color: #2563A8; }
/* 관리자 이번 강의 정보 폼 */
.lab-infoform { display: flex; flex-direction: column; gap: 11px; max-width: 660px; }
.lab-iff { display: flex; flex-direction: column; gap: 3px; font-size: 12.5px; font-weight: 600; }
.lab-iff input, .lab-iff textarea { font: inherit; font-weight: 400; padding: 7px 9px; border: 1px solid var(--line-2); border-radius: 7px; background: var(--ink-2, #fff); color: inherit; resize: vertical; }
.lab-iff2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; }
.lab-infoform__logo { display: flex; align-items: center; gap: 12px; margin: 3px 0; }
/* 입구·목록 회차 정보 */
.lab-cohmeta { font-size: 12px; color: var(--paper-dim); line-height: 1.5; margin-top: 4px; }
.lab-cohmeta b { color: var(--blue, #A9D4F5); font-weight: 700; }
.lab-cohmeta__logo { height: 18px; vertical-align: middle; margin-right: 5px; background: #fff; border-radius: 3px; }
html[data-theme="light"] .lab-cohmeta b { color: #2563A8; }

/* ── 입구(게이트) 재디자인 ── */
.lab-gate-page .lab-ghead { border-bottom: 1px solid var(--line); background: var(--ink-2); position: sticky; top: 0; z-index: 20; }
.lab-ghead__in { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 11px clamp(16px, 2vw, 32px); }
.lab-ghead__brand { display: flex; align-items: center; gap: 10px; color: var(--paper); text-decoration: none; font-weight: 800; }
.lab-ghead__logo { height: 22px; display: inline-flex; align-items: center; }
.lab-ghead__logo svg, .lab-ghead__logo img { height: 22px; width: auto; }
.lab-ghead__nav { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.lab-ghead__nav a { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 700; color: var(--paper-dim); text-decoration: none; padding: 6px 10px; border-radius: 8px; }
.lab-ghead__nav a:hover { color: var(--paper); background: var(--ink-3); }

.lab-gate2 { padding: 34px clamp(16px, 2vw, 32px) 44px; max-width: 1080px; }
.lab-gate2__hero { text-align: center; margin-bottom: 26px; }
.lab-gate2__h1 { font-size: clamp(26px, 3vw, 34px); font-weight: 800; margin: 0 0 10px; }
.lab-gate2__sub { font-size: clamp(14px, 1.4vw, 16px); color: var(--paper-dim); line-height: 1.7; max-width: 640px; margin: 0 auto; }

.lab-gcards { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 30px; }
.lab-gcard { background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 16px; padding: 22px 22px 20px; display: flex; flex-direction: column; }
.lab-gcard__label { font-size: 12px; font-weight: 800; letter-spacing: .08em; color: var(--blue); margin-bottom: 6px; }
.lab-gcard__title { font-size: 21px; font-weight: 800; margin: 0 0 6px; }
.lab-gcard__desc { font-size: 14px; color: var(--paper-dim); line-height: 1.6; margin: 0 0 14px; }
.lab-gcard__k { font-size: 11.5px; font-weight: 700; color: var(--paper-dim); }
.lab-gcard__target { font-size: 13.5px; margin-bottom: 12px; }
.lab-gcard__target .lab-gcard__k { margin-right: 7px; display: inline-block; border: 1px solid var(--line-2); border-radius: 6px; padding: 1px 7px; }
.lab-gcard__take { margin-bottom: 16px; }
.lab-gcard__list { list-style: none; margin: 7px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.lab-gcard__list li { display: flex; align-items: flex-start; gap: 7px; font-size: 14px; line-height: 1.5; }
.lab-gcard__list li svg { color: var(--blue); flex: 0 0 auto; margin-top: 2px; }
.lab-gcard__foot { margin-top: auto; padding-top: 6px; }
.lab-gcard__cta { width: 100%; justify-content: center; }
.lab-gcard__cohort { margin-top: 10px; }
.lab-gcard__soon { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--paper-dim); border: 1px solid var(--line-2); border-radius: 100px; padding: 4px 12px; }

.lab-gsec__h { font-size: 16px; font-weight: 800; text-align: center; margin: 0 0 16px; }
.lab-gsteps { border-top: 1px solid var(--line); padding-top: 28px; margin-bottom: 26px; }
.lab-gsteps__list { list-style: none; margin: 0; padding: 0; display: flex; align-items: stretch; justify-content: center; gap: 10px; flex-wrap: wrap; }
.lab-gsteps__list > li:not(.lab-gsteps__arr) { flex: 1 1 0; min-width: 170px; max-width: 280px; background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 12px; padding: 16px; display: flex; align-items: center; gap: 10px; }
.lab-gsteps__n { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; background: var(--blue-deep); color: #fff; font-weight: 800; font-size: 13px; display: flex; align-items: center; justify-content: center; }
.lab-gsteps__t { font-size: 13.5px; font-weight: 700; line-height: 1.4; }
.lab-gsteps__arr { display: flex; align-items: center; color: var(--paper-dim); }

.lab-grequest { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 14px; padding: 18px 22px; }
.lab-grequest__t { display: flex; flex-direction: column; gap: 3px; }
.lab-grequest__t b { font-size: 15.5px; }
.lab-grequest__t span { font-size: 12.5px; color: var(--paper-dim); }

.lab-gfoot { border-top: 1px solid var(--line); margin-top: 8px; }
.lab-gfoot__in { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 18px clamp(16px, 2vw, 32px); }
.lab-gfoot__co { font-size: 12.5px; color: var(--paper-dim); }
.lab-gfoot__links { display: flex; gap: 14px; flex-wrap: wrap; }
.lab-gfoot__links a { font-size: 12.5px; color: var(--paper-dim); text-decoration: none; }
.lab-gfoot__links a:hover { color: var(--paper); }

.lab-examnote { display: flex; align-items: flex-start; gap: 7px; font-size: 13px; color: var(--paper-dim); background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 10px; padding: 10px 13px; margin: 14px auto 0; line-height: 1.6; }
.lab-examnote svg { flex: 0 0 auto; margin-top: 2px; color: var(--accent); }

@media (max-width: 760px) {
  .lab-gcards { grid-template-columns: 1fr; }
  .lab-gsteps__list { flex-direction: column; align-items: stretch; }
  .lab-gsteps__list > li:not(.lab-gsteps__arr) { max-width: none; }
  .lab-gsteps__arr { transform: rotate(90deg); justify-content: center; }
}
@media (max-width: 560px) {
  .lab-ghead__in { flex-direction: column; align-items: flex-start; gap: 8px; }
  .lab-ghead__nav { gap: 2px; }
  .lab-ghead__nav a { padding: 5px 8px; font-size: 12.5px; }
}

/* PICK(오렌지 세로줄) · 대안(경고) · 방법론 */
.lab-pick { background: var(--accent-dim, rgba(255,90,31,.1)); border: 1px solid var(--line); border-left: 3px solid var(--accent, #FF5A1F); border-radius: 10px; padding: 12px 16px; margin-bottom: 14px; }
.lab-pick__h { font-size: 11.5px; font-weight: 800; color: var(--accent, #FF5A1F); letter-spacing: .08em; margin-bottom: 6px; }
.lab-pick ul, .lab-method ul, .lab-stuck ul { margin: 0; padding-left: 18px; line-height: 1.75; font-size: 14px; }
.lab-pick ul li { margin: 3px 0; }
.lab-alt { display: flex; align-items: flex-start; gap: 8px; font-size: 13.5px; color: var(--paper-dim); background: var(--ink); border: 1px solid var(--line-2); border-left: 3px solid var(--blue-deep, #4E7EA6); border-radius: 10px; padding: 10px 14px; margin-bottom: 14px; line-height: 1.6; }
.lab-alt b { color: var(--paper); }
.lab-method, .lab-stuck { background: var(--ink); border: 1px solid var(--line); border-radius: 10px; padding: 2px 14px; margin-bottom: 12px; }
.lab-method summary, .lab-stuck summary { cursor: pointer; padding: 11px 0; font-weight: 600; font-size: 13.5px; display: flex; align-items: center; gap: 7px; }
.lab-method ul, .lab-stuck ul { padding-bottom: 12px; color: var(--paper-dim); }

/* 입력 칸 */
.lab-fields { display: flex; flex-direction: column; gap: 16px; }
.lab-fields--step { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.lab-fld__l { display: block; font-size: 13.5px; font-weight: 700; margin-bottom: 6px; }
.lab-fh { font-size: 12px; color: var(--paper-dim); font-weight: 400; }
.lab-ta { width: 100%; min-height: 44px; max-height: 60vh; background: var(--ink, #07090D); color: var(--paper); border: 1px solid var(--line-2); border-radius: 10px; padding: 10px 12px; font-size: 15px; font-family: inherit; line-height: 1.7; resize: none; overflow-y: auto; }
.lab-ta:focus { outline: none; border-color: var(--accent, #FF5A1F); box-shadow: 0 0 0 3px var(--accent-dim, rgba(255,90,31,.14)); }
.lab-btn--done { background: var(--blue-deep, #4E7EA6) !important; border-color: var(--blue-deep, #4E7EA6) !important; }
.lab-fld__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 5px; font-size: 12px; color: var(--paper-dim); }
.lab-count { font-variant-numeric: tabular-nums; }
.lab-ex { color: var(--paper-dim); }
.lab-choices { display: flex; flex-wrap: wrap; gap: 8px; }
.lab-chip { background: var(--ink-3); border: 1px solid var(--line-2); color: var(--paper); border-radius: 100px; padding: 8px 15px; font-size: 13.5px; font-weight: 600; cursor: pointer; }
.lab-chip:hover { border-color: var(--paper-dim); }
.lab-chip--sel { background: var(--accent, #FF5A1F); border-color: var(--accent); color: #fff; }
.lab-check { display: flex; align-items: center; gap: 9px; font-size: 14px; cursor: pointer; }
.lab-check input { width: 18px; height: 18px; accent-color: var(--accent, #FF5A1F); }

.lab-closing { background: var(--accent-dim, rgba(255,90,31,.14)); border-left: 3px solid var(--accent, #FF5A1F); border-radius: 8px; padding: 12px 16px; font-size: 14px; margin-top: 16px; }

/* 하단 네비 */
.lab-stepnav { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 20px; }

/* 저장 상태 */
.lab-savestat { position: fixed; left: 18px; bottom: 18px; z-index: 50; background: var(--ink-3, #111823); border: 1px solid var(--line-2); color: var(--paper-dim); font-size: 12.5px; padding: 7px 13px; border-radius: 100px; opacity: 0; transition: opacity .25s; pointer-events: none; }
.lab-savestat[data-st="saved"] { color: var(--blue, #A9D4F5); border-color: var(--blue-deep, #4E7EA6); }
.lab-savestat[data-st="off"] { color: var(--accent, #FF5A1F); border-color: var(--accent); }

/* 목록 */
.lab-list__rows { display: flex; flex-direction: column; gap: 7px; margin-bottom: 8px; }
.lab-list__row { display: flex; align-items: center; gap: 8px; }
.lab-list__n { flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--ink-3); font-size: 11.5px; font-weight: 700; display: flex; align-items: center; justify-content: center; font-family: ui-monospace, monospace; }
.lab-list__in { flex: 1; }
.lab-list__del { flex: none; width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--line-2); background: var(--ink-3); color: var(--paper-dim); cursor: pointer; font-size: 16px; }
.lab-list__del:hover { color: var(--accent, #FF5A1F); border-color: var(--accent); }

/* 표 */
.lab-table__scroll { overflow-x: auto; border: 1px solid var(--line-2); border-radius: 10px; }
.lab-table table { width: 100%; border-collapse: collapse; font-size: 13px; }
.lab-table th { background: var(--ink-3); text-align: left; padding: 8px 10px; font-weight: 700; font-size: 12.5px; border-bottom: 1px solid var(--line-2); white-space: nowrap; }
.lab-table td { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); padding: 0; vertical-align: top; }
.lab-table td:last-child { border-right: 0; }
.lab-cell { width: 100%; min-width: 110px; background: transparent; border: 0; color: var(--paper); padding: 8px 10px; font-family: inherit; font-size: 13px; resize: none; line-height: 1.5; }
.lab-cell:focus { outline: none; background: var(--accent-dim, rgba(255,90,31,.14)); }
.lab-table__x { width: 34px; text-align: center; }
.lab-row-del { width: 24px; height: 24px; border-radius: 6px; border: 0; background: transparent; color: var(--paper-dim); cursor: pointer; font-size: 15px; }
.lab-row-del:hover { color: var(--accent, #FF5A1F); }
.lab-table__act { display: flex; align-items: center; gap: 12px; margin-top: 8px; flex-wrap: wrap; }

/* 깔때기 */
.lab-funnel { display: flex; flex-direction: column; gap: 8px; align-items: center; }
.lab-funnel__row { display: flex; align-items: center; gap: 10px; width: 100%; justify-content: center; }
.lab-funnel__lv { flex: none; width: 54px; font-size: 11.5px; color: var(--paper-dim); text-align: right; }
.lab-funnel__in { text-align: center; min-width: 120px; }

/* 계산 */
.lab-calc { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; background: var(--ink); border: 1px solid var(--line); border-radius: 11px; padding: 14px; }
.lab-calc__f { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--paper-dim); }
.lab-calc__in { width: 110px; text-align: right; font-variant-numeric: tabular-nums; }
.lab-calc__op { font-size: 18px; color: var(--paper-dim); padding-bottom: 8px; }
.lab-calc__out { font-size: 18px; font-weight: 800; color: var(--accent, #FF5A1F); font-variant-numeric: tabular-nums; padding-bottom: 6px; }
.lab-calc--quote { flex-direction: column; align-items: stretch; }
.lab-calc__line { display: flex; justify-content: space-between; align-items: center; padding: 8px 2px; border-top: 1px dashed var(--line-2); font-size: 14px; }
.lab-calc__line--total { font-weight: 800; border-top: 1px solid var(--line-2); }
.lab-calc__line .lab-calc__out { padding-bottom: 0; }

/* 코드/스킬 */
.lab-code-ta { font-family: ui-monospace, Consolas, monospace !important; font-size: 13px !important; }
.lab-codechk { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.lab-codechk span { font-size: 12px; color: var(--paper-dim); border: 1px solid var(--line-2); border-radius: 100px; padding: 3px 10px; }
.lab-codechk .lab-ck--on { color: var(--blue, #A9D4F5); border-color: var(--blue-deep, #4E7EA6); }
.lab-codechk .lab-ck--on::before { content: "✓ "; }

/* 10가지 선택 */
.lab-apply10__box { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; margin-top: 8px; }
.lab-a10 { text-align: left; background: var(--ink-3); border: 1px solid var(--line-2); border-radius: 10px; padding: 10px 12px; cursor: pointer; color: var(--paper); display: flex; flex-direction: column; gap: 2px; }
.lab-a10 b { font-size: 13.5px; }
.lab-a10 span { font-size: 11.5px; color: var(--paper-dim); }
.lab-a10--on { border-color: var(--accent, #FF5A1F); background: var(--accent-dim, rgba(255,90,31,.14)); }

/* 꼬리표 */
.lab-tags { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.lab-tag { font-size: 12px; font-weight: 600; border-radius: 100px; padding: 4px 11px; cursor: pointer; background: transparent; color: var(--paper-dim); border: 1px solid var(--line-2); }
.lab-tag--fact.lab-tag--on { background: rgba(78,126,166,.2); color: var(--blue, #A9D4F5); border-color: var(--blue-deep); }
.lab-tag--hypo.lab-tag--on { border-style: dashed; color: var(--paper); border-color: var(--paper-dim); }
.lab-tag--assume.lab-tag--on { background: var(--ink-3); color: var(--paper-dim); border-color: var(--paper-dim); }
.lab-tag--check.lab-tag--on { color: var(--accent, #FF5A1F); border-color: var(--accent); }

/* 이미지 */
.lab-images__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-bottom: 10px; }
.lab-images__grid:empty { display: none; }
.lab-img { position: relative; margin: 0; background: var(--ink); border: 1px solid var(--line-2); border-radius: 10px; overflow: hidden; }
.lab-img img { width: 100%; height: 118px; object-fit: cover; display: block; background: #000; }
.lab-img__cap { width: 100%; border: 0; border-top: 1px solid var(--line); background: var(--ink-2); color: var(--paper); font-size: 12px; padding: 7px 9px; border-radius: 0; }
.lab-img__cap:focus { outline: none; background: var(--ink-3); }
.lab-img__del { position: absolute; top: 6px; right: 6px; z-index: 2; width: 24px; height: 24px; border-radius: 6px; border: 0; background: rgba(11,14,20,.8); color: #fff; cursor: pointer; font-size: 15px; line-height: 1; }
.lab-img__del:hover { background: var(--accent, #FF5A1F); }
.lab-drop { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; cursor: pointer; border: 1.5px dashed var(--line-2); border-radius: 12px; padding: 18px; color: var(--paper-dim); font-size: 13.5px; transition: .15s; }
.lab-drop:hover, .lab-drop--over { border-color: var(--accent, #FF5A1F); color: var(--paper); background: var(--accent-dim, rgba(255,90,31,.14)); }
.lab-drop small { font-size: 11.5px; color: var(--paper-dim); }

/* 강의안 슬라이드 보기 */
.lab-slview { background: var(--ink, #07090D); border: 1px solid var(--line-2); border-radius: 12px; padding: 12px 14px; margin: 0 0 18px; }
.lab-slview__h { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--paper-dim); margin-bottom: 10px; flex-wrap: wrap; }
.lab-slview__h b { color: var(--blue, #A9D4F5); }
.lab-slview__pos { font-variant-numeric: tabular-nums; }
.lab-slview__pos [data-sv-cur] { color: var(--paper); font-weight: 700; }
.lab-slview__orig { font-size: 11.5px; color: var(--paper-dim); }
.lab-slview__sizes { margin-left: auto; display: inline-flex; background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 8px; overflow: hidden; }
.lab-slview__sizes button { font-size: 11.5px; background: none; border: 0; color: var(--paper-dim); padding: 3px 9px; cursor: pointer; }
.lab-slview__sizes button:hover { color: var(--paper); }
.lab-slview__sizes button.is-on { background: var(--accent, #FF5A1F); color: #fff; font-weight: 700; }
.lab-slview__full { font-size: 12px; background: var(--ink-3); border: 1px solid var(--line-2); color: var(--paper); border-radius: 7px; padding: 3px 10px; cursor: pointer; }
.lab-slview__full:hover { border-color: var(--accent, #FF5A1F); }
.lab-slview__big { position: relative; }
.lab-slview__big img { width: 100%; max-height: 40vh; object-fit: contain; background: #0b0f16; border-radius: 8px; cursor: zoom-in; display: block; }
.lab-slview__arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 34px; height: 54px; border: 0; border-radius: 8px; background: rgba(11,14,20,.55); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; opacity: 0; transition: opacity .15s; display: flex; align-items: center; justify-content: center; }
.lab-slview__big:hover .lab-slview__arrow { opacity: 1; }
.lab-slview__arrow:hover { background: rgba(11,14,20,.85); }
.lab-slview__arrow--prev { left: 8px; } .lab-slview__arrow--next { right: 8px; }
/* 썸네일 — 번호 · 선택 테두리 · 얇은 스크롤바 */
.lab-slview__thumbs { display: flex; gap: 7px; overflow-x: auto; margin-top: 8px; padding-bottom: 4px; scrollbar-width: thin; scrollbar-color: var(--line-2) transparent; cursor: grab; scroll-behavior: smooth; overscroll-behavior-x: contain; }
.lab-slview__thumbs.is-dragging { cursor: grabbing; scroll-behavior: auto; }
.lab-slview__thumbs.is-dragging .lab-slthumbbtn { pointer-events: none; }
.lab-slview__thumbs::-webkit-scrollbar { height: 6px; }
.lab-slview__thumbs::-webkit-scrollbar-thumb { background: var(--line-2); border-radius: 100px; }
.lab-slview__thumbs::-webkit-scrollbar-track { background: transparent; }
.lab-slthumbbtn { position: relative; flex: none; padding: 0; background: #0b0f16; border: 2px solid var(--line); border-radius: 6px; cursor: pointer; overflow: hidden; line-height: 0; }
.lab-slthumbbtn img { height: 62px; display: block; background: #0b0f16; }
.lab-slthumbbtn:hover { border-color: var(--blue-deep, #4E7EA6); }
.lab-slthumbbtn.is-sel { border-color: var(--accent, #FF5A1F); }
.lab-slthumbbtn__n { position: absolute; left: 3px; top: 3px; font-size: 10px; font-weight: 700; line-height: 1; color: #fff; background: rgba(11,14,20,.75); border-radius: 4px; padding: 1px 4px; }
.lab-slthumbbtn.is-sel .lab-slthumbbtn__n { background: var(--accent, #FF5A1F); }
/* 크기 3단계 */
.lab-slview--sm .lab-slview__big { display: none; }
.lab-slview--sm .lab-slthumbbtn img { height: 84px; }
.lab-slview--fold .lab-slview__big, .lab-slview--fold .lab-slview__thumbs { display: none; }
.lab-slview--fold .lab-slview__h { margin-bottom: 0; }

/* 라이트박스 */
.lab-lb { display: none; position: fixed; inset: 0; z-index: 9995; background: rgba(5,8,12,.94); align-items: center; justify-content: center; }
.lab-lb__img { max-width: 92vw; max-height: 86vh; object-fit: contain; border-radius: 4px; }
.lab-lb__x { position: absolute; top: 16px; right: 20px; background: none; border: 0; color: #fff; font-size: 34px; cursor: pointer; line-height: 1; opacity: .8; }
.lab-lb__x:hover { opacity: 1; }
.lab-lb__nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.1); border: 0; color: #fff; font-size: 40px; width: 56px; height: 90px; cursor: pointer; border-radius: 8px; }
.lab-lb__nav:hover { background: rgba(255,255,255,.2); }
.lab-lb__prev { left: 20px; } .lab-lb__next { right: 20px; }
.lab-lb__cap { position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%); color: #cfe0ef; font-size: 13px; background: rgba(0,0,0,.5); padding: 5px 14px; border-radius: 100px; }

/* 슬라이드 보관함(관리자) */
.lab-slgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-top: 10px; }
.lab-slthumb { position: relative; margin: 0; background: var(--ink); border: 1px solid var(--line-2); border-radius: 10px; overflow: hidden; }
.lab-slthumb img { width: 100%; height: 100px; object-fit: contain; background: #0b0f16; display: block; }
.lab-slthumb figcaption { font-size: 11.5px; color: var(--paper-dim); padding: 5px 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lab-slthumb__name { width: 100%; border: 0; border-top: 1px solid var(--line); background: var(--ink-2); color: var(--paper); font-size: 11.5px; padding: 6px 8px; }
.lab-slthumb__acts { display: flex; gap: 5px; padding: 6px; border-top: 1px solid var(--line); }
.lab-slthumb__acts .lab-btn { flex: 1; }
.lab-slthumb__x { position: absolute; top: 5px; right: 5px; width: 22px; height: 22px; border-radius: 6px; border: 0; background: rgba(11,14,20,.8); color: #fff; cursor: pointer; font-size: 14px; }
.lab-slthumb__x:hover { background: var(--accent, #FF5A1F); }
.lab-slprog { font-size: 13px; color: var(--blue, #A9D4F5); margin: 8px 0; }

/* 과정 편집 */
.lab-h2row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.lab-ce { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 20px; align-items: start; margin-top: 16px; }
.lab-ce__list { position: sticky; top: 72px; }
.lab-ce__listh { font-size: 12px; font-weight: 700; color: var(--paper-dim); margin-bottom: 8px; }
.lab-ce__steps { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 4px; max-height: 60vh; overflow-y: auto; }
.lab-ce__step { display: flex; align-items: center; gap: 6px; background: var(--ink-2); border: 1px solid var(--line); border-radius: 9px; padding: 2px 6px; }
.lab-ce__step.is-on { border-color: var(--accent, #FF5A1F); }
.lab-ce__step.is-hidden { opacity: .55; }
.lab-ce__step.is-drag { opacity: .4; }
.lab-ce__grip { cursor: grab; color: var(--paper-dim); font-size: 12px; user-select: none; letter-spacing: -2px; }
.lab-ce__step a { flex: 1; min-width: 0; text-decoration: none; color: var(--paper); padding: 7px 2px; display: block; }
.lab-ce__step a b { font-size: 12.5px; }
.lab-ce__step a span { display: block; font-size: 11.5px; color: var(--paper-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lab-ce__hid { font-size: 10px; color: var(--accent, #FF5A1F); border: 1px solid var(--accent); border-radius: 100px; padding: 0 5px; }
.lab-ce__add { display: flex; flex-direction: column; gap: 7px; background: var(--ink-2); border: 1px solid var(--line); border-radius: 10px; padding: 12px; }
.lab-ce__add input, .lab-ce__add select { font-size: 13px; }
.lab-ceform { display: flex; flex-direction: column; gap: 13px; background: var(--ink-2); border: 1px solid var(--line); border-radius: 14px; padding: 18px; }
.lab-ceform__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size: 12px; }
.lab-ceform__acts { display: flex; gap: 6px; }
.lab-checkgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 4px 12px; margin-top: 4px; }
.lab-checkgrid label { display: flex; align-items: center; gap: 6px; font-size: 13px; cursor: pointer; }
.lab-checkgrid input { width: 16px; height: 16px; accent-color: var(--accent, #FF5A1F); }
.lab-prep { display: flex; flex-direction: column; gap: 10px; margin-bottom: 8px; }
.lab-prep__row { display: grid; grid-template-columns: 1fr auto; gap: 7px; align-items: start; background: var(--ink); border: 1px solid var(--line); border-radius: 10px; padding: 10px; }
.lab-prep__row input { grid-column: 1 / 2; }
.lab-prep__row textarea { grid-column: 1 / 2; font-family: inherit; }
.lab-prep__del { grid-column: 2; grid-row: 1 / 3; align-self: start; }
.lab-vars { margin-top: 8px; font-size: 12px; color: var(--paper-dim); }
.lab-varbtn { font-size: 11.5px; font-family: ui-monospace, monospace; background: var(--ink-3); border: 1px solid var(--line-2); color: var(--accent, #FF5A1F); border-radius: 6px; padding: 2px 7px; cursor: pointer; margin: 2px; }
.lab-varbtn:hover { border-color: var(--accent, #FF5A1F); }
.lab-adv { background: var(--ink); border: 1px solid var(--line); border-radius: 10px; padding: 2px 14px; }
.lab-adv summary { cursor: pointer; padding: 11px 0; font-weight: 600; font-size: 13px; }
.lab-adv textarea { margin-bottom: 12px; }
@media (max-width: 900px) { .lab-ce { grid-template-columns: 1fr; } .lab-ce__list { position: static; } }

/* 샘플 다운로드·스니펫 */
.lab-dls { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 14px; }
.lab-dls__l { font-size: 12px; color: var(--paper-dim); font-weight: 700; }
.lab-snips { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.lab-snip { display: flex; align-items: center; gap: 10px; background: var(--ink); border: 1px solid var(--line-2); border-radius: 10px; padding: 8px 12px; }
.lab-snip code { flex: 1; font-size: 13px; color: var(--blue, #A9D4F5); background: transparent; }

/* 강사 관리 */
.lab-robar { background: var(--ink-3); border-bottom: 1px solid var(--accent, #FF5A1F); color: var(--paper); font-size: 13px; text-align: center; padding: 8px 16px; display: flex; align-items: center; justify-content: center; gap: 8px; }
.lab-robar a { color: var(--accent, #FF5A1F); font-weight: 700; }
.lab-ro .lab-ta, .lab-ro .lab-choices, .lab-ro .lab-chip, .lab-ro .lab-list, .lab-ro .lab-table, .lab-ro .lab-drop, .lab-ro .lab-tags, .lab-ro .lab-calc, .lab-ro .lab-funnel, .lab-ro .lab-apply10, .lab-ro [data-lab-complete], .lab-ro .lab-tb__hand { pointer-events: none; opacity: .92; }
.lab-ro .lab-ta, .lab-ro input, .lab-ro textarea { background: var(--ink-2) !important; }
.lab-tb__hand--on { background: var(--accent, #FF5A1F); border-color: var(--accent); color: #fff; }
.lab-nowset { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.lab-nowset select { max-width: 420px; }
.lab-hands { display: flex; flex-direction: column; gap: 8px; }
.lab-handrow { display: flex; align-items: center; gap: 10px; background: var(--accent-dim, rgba(255,90,31,.14)); border: 1px solid var(--accent, #FF5A1F); border-radius: 10px; padding: 9px 13px; }
.lab-handrow button { margin-left: auto; }
.lab-stepbars { display: flex; flex-direction: column; gap: 7px; }
.lab-stepbar { display: grid; grid-template-columns: 120px 1fr 54px; gap: 10px; align-items: center; font-size: 12.5px; }
.lab-stepbar__k { color: var(--paper-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lab-stepbar__track { height: 10px; background: var(--ink-3); border-radius: 100px; overflow: hidden; }
.lab-stepbar__track i { display: block; height: 100%; background: var(--blue-deep, #4E7EA6); transition: width .4s; }
.lab-stepbar__n { text-align: right; color: var(--paper-dim); font-variant-numeric: tabular-nums; }
.lab-roster { width: 100%; border-collapse: collapse; font-size: 13px; }
.lab-roster th { background: var(--ink-3); text-align: left; padding: 8px 10px; font-size: 12px; white-space: nowrap; }
.lab-roster td { padding: 8px 10px; border-bottom: 1px solid var(--line); }
.lab-roster__act { display: flex; gap: 6px; white-space: nowrap; }
.lab-cap-warn { color: var(--accent, #FF5A1F); }
.lab-danger { border-color: rgba(255,90,31,.4); }
.lab-delrow { display: flex; gap: 10px; flex-wrap: wrap; }
.lab-delrow input { max-width: 360px; }
.lab-btn--danger { background: #c22; border-color: #c22; color: #fff; }
.lab-btn--danger:hover { filter: brightness(1.1); border-color: #c22; }
.lab-btn:disabled { opacity: .5; cursor: not-allowed; }

/* 도움말 */
.lab-tabs { display: flex; gap: 6px; border-bottom: 1px solid var(--line); margin-bottom: 18px; }
.lab-tab { background: transparent; border: 0; color: var(--paper-dim); font-size: 14.5px; font-weight: 700; padding: 10px 16px; cursor: pointer; border-bottom: 2px solid transparent; }
.lab-tab--on { color: var(--paper); border-bottom-color: var(--accent, #FF5A1F); }
.lab-helptools { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; margin-bottom: 20px; }
.lab-ht { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.lab-ht--off { opacity: .55; }
.lab-ht__name { font-weight: 700; font-size: 14.5px; text-decoration: none; display: inline-flex; align-items: center; gap: 5px; }
.lab-ht__name b { font-size: 10.5px; color: var(--accent, #FF5A1F); border: 1px solid var(--accent); border-radius: 100px; padding: 0 6px; }
.lab-ht__sub { font-size: 11.5px; color: var(--paper-dim); margin-left: 6px; }
.lab-ht__use { font-size: 13px; color: var(--paper-dim); margin-top: 5px; }
.lab-ht__lim { font-size: 12px; color: var(--blue, #A9D4F5); margin-top: 6px; line-height: 1.5; }
.lab-ht__ft { margin-top: 8px; font-size: 12px; }
.lab-ht__ft summary { cursor: pointer; color: var(--paper-dim); }
.lab-ht__ft table { width: 100%; border-collapse: collapse; margin-top: 6px; }
.lab-ht__ft td { padding: 3px 6px; border-bottom: 1px solid var(--line); }
.lab-ht__ft td:last-child { text-align: right; color: var(--blue, #A9D4F5); white-space: nowrap; }
.lab-terms { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.lab-term { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 13px 15px; }
.lab-term__w { font-weight: 800; font-size: 15px; }
.lab-term__w span { font-size: 12.5px; color: var(--paper-dim); font-weight: 600; }
.lab-term__full { font-size: 11.5px; color: var(--blue, #A9D4F5); margin: 2px 0; }
.lab-term__d { font-size: 13px; margin-top: 4px; }
.lab-term__n { font-size: 11.5px; color: var(--paper-dim); margin-top: 5px; border-top: 1px solid var(--line); padding-top: 5px; }
.lab-methods { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; }
.lab-mcard { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; }
.lab-mcard__t { font-weight: 700; font-size: 14px; margin-bottom: 7px; color: var(--blue, #A9D4F5); }
.lab-mcard ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.65; color: var(--paper-dim); }

/* 용어 밑줄·팝오버 */
.lab-gloss { border-bottom: 1px dotted var(--blue, #A9D4F5); cursor: help; }
.lab-gloss:hover, .lab-gloss:focus { color: var(--blue, #A9D4F5); outline: none; }
.lab-pop { position: absolute; z-index: 9998; max-width: 290px; background: var(--ink-3, #111823); border: 1px solid var(--line-2); border-radius: 10px; padding: 12px 14px; box-shadow: 0 8px 28px rgba(0,0,0,.5); font-size: 13px; }
.lab-pop__w { font-weight: 800; font-size: 14px; }
.lab-pop__w span { font-size: 12px; color: var(--paper-dim); font-weight: 600; }
.lab-pop__full { font-size: 11.5px; color: var(--blue, #A9D4F5); margin: 2px 0; }
.lab-pop__d { margin-top: 4px; }
.lab-pop__n { font-size: 12px; color: var(--paper-dim); margin-top: 6px; border-top: 1px solid var(--line); padding-top: 6px; }

/* 슬라이드(/slides) */
.lab-slides { padding-bottom: 70px; }
.lab-slide { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; background: var(--ink-2); border: 1px solid var(--line); border-radius: 14px; padding: 18px; margin-bottom: 18px; }
.lab-slide__head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 12px; }
.lab-slide__no { flex: none; width: 30px; height: 30px; border-radius: 8px; background: var(--accent, #FF5A1F); color: #fff; font-weight: 800; display: flex; align-items: center; justify-content: center; font-family: ui-monospace, monospace; }
.lab-slide__t { font-weight: 700; font-size: 15px; }
.lab-slide__psst { font-size: 11px; color: var(--blue, #A9D4F5); border: 1px solid var(--blue-deep); border-radius: 100px; padding: 1px 7px; margin-left: 4px; }
.lab-slide__hint { font-size: 12px; color: var(--paper-dim); margin-top: 2px; }
.lab-slide__import { margin-left: auto; white-space: nowrap; }
.lab-slide__prevwrap { position: sticky; top: 70px; }
/* 작업 공간(오른쪽 패널) 안에서는 좁으므로 편집↑·미리보기↓ 단일열 */
.lab-ws__pane--ppt .lab-slide { grid-template-columns: 1fr; gap: 12px; padding: 14px; }
.lab-ws__pane--ppt .lab-slide__prevwrap { position: static; }
.lab-ws__pane--ppt .lab-slide__preview { max-width: 420px; }
.lab-ws__pane--ppt .lab-slide__head { flex-wrap: wrap; }
.lab-ws__pane--ppt .lab-slide__t { font-size: 14px; }
.lab-slide__preview { aspect-ratio: 16/9; background: #fff; color: #07090D; border-radius: 8px; padding: 18px 20px; overflow: hidden; position: relative; box-shadow: 0 2px 14px rgba(0,0,0,.3); display: flex; flex-direction: column; }
.lab-pv__bar { position: absolute; left: 20px; top: 20px; width: 8px; height: 26px; background: #FF5A1F; border-radius: 2px; }
.lab-pv__title { font-size: 18px; font-weight: 800; padding-left: 16px; margin-bottom: 6px; line-height: 1.2; }
.lab-pv__claim { font-size: 12.5px; font-weight: 700; color: #4E7EA6; padding-left: 16px; margin-bottom: 6px; }
.lab-pv__bullets { margin: 0 0 6px; padding-left: 30px; font-size: 11.5px; line-height: 1.5; flex: 1; overflow: hidden; }
.lab-pv__bullets li { margin: 2px 0; }
.lab-pv__bullets li::marker { content: "□ "; }
.lab-pv__img { overflow: hidden; }
.lab-pv__img:empty { display: none; }
.lab-pv__img img { max-width: 100%; max-height: 100%; border-radius: 4px; object-fit: contain; display: block; }
/* 오른쪽(기본·PPT와 동일): 글 왼쪽 · 이미지 오른쪽 */
.lab-pv--imgright .lab-pv__img { position: absolute; right: 18px; top: 52px; bottom: 26px; width: 40%; display: flex; align-items: center; justify-content: center; }
.lab-pv--imgright .lab-pv__claim, .lab-pv--imgright .lab-pv__bullets { padding-right: 44%; }
/* 아래: 이미지 가운데 아래 */
.lab-pv--imgbottom .lab-pv__img { max-height: 46%; display: flex; justify-content: center; align-items: center; margin-top: 2px; }
/* 크게: 이미지 중심(개조식 숨김) */
.lab-pv--imgfull .lab-pv__bullets { display: none; }
.lab-pv--imgfull .lab-pv__img { position: absolute; left: 18px; right: 18px; top: 52px; bottom: 24px; display: flex; align-items: center; justify-content: center; }
.lab-pv__src { font-size: 9.5px; color: #93A6BA; padding-left: 16px; }
.lab-pv__foot { position: absolute; bottom: 7px; left: 20px; font-size: 8px; color: #93A6BA; }

/* 인쇄 */
.lab-print { background: #e9e9ee; }
.lab-print-bar { position: sticky; top: 0; z-index: 10; background: var(--ink-2, #0C1016); color: var(--paper); display: flex; align-items: center; gap: 12px; padding: 10px 16px; font-size: 13px; justify-content: center; flex-wrap: wrap; }
.lab-print-bar__hint { color: var(--paper-dim); }
.lab-print-tabs { display: inline-flex; gap: 2px; background: var(--ink, #07090D); border: 1px solid var(--line-2); border-radius: 10px; padding: 3px; }
.lab-print-tab { padding: 5px 12px; border-radius: 7px; font-size: 12.5px; color: var(--paper-dim); text-decoration: none; white-space: nowrap; }
.lab-print-tab:hover { color: var(--paper); }
.lab-print-tab--on { background: var(--accent, #FF5A1F); color: #fff; font-weight: 600; }
.lab-paper { max-width: 210mm; margin: 18px auto; background: #fff; color: #111; padding: 22mm 20mm; box-shadow: 0 2px 16px rgba(0,0,0,.2); font-size: 13px; line-height: 1.65; }
.lab-paper__h1 { font-size: 20px; margin: 0 0 2px; color: #07090D; }
.lab-paper__sub { color: #666; font-size: 12px; margin: 0 0 18px; }
.lab-paper__slide, .lab-paper__q { page-break-inside: avoid; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #e3e3e8; }
.lab-paper h2 { font-size: 16px; color: #07090D; border-left: 4px solid #FF5A1F; padding-left: 8px; margin: 0 0 6px; }
.lab-paper h3 { font-size: 14px; margin: 0 0 4px; }
.lab-paper__claim { font-weight: 700; color: #4E7EA6; margin: 2px 0; }
.lab-paper ul { padding-left: 20px; margin: 4px 0; }
.lab-paper__img { max-width: 100%; max-height: 90mm; border: 1px solid #ddd; border-radius: 4px; margin: 6px 0; }
.lab-paper__src { color: #777; font-size: 11px; }
.lab-paper__foot { color: #888; font-size: 10.5px; margin-top: 18px; border-top: 1px solid #e3e3e8; padding-top: 8px; }
@media print { .lab-print-bar, .lab-safety, .lab-foot { display: none !important; } .lab-print { background: #fff; } .lab-paper { box-shadow: none; margin: 0; max-width: none; padding: 0; } @page { margin: 16mm; } }

/* 신청서(/form) */
.lab-fh2 { position: sticky; top: 0; z-index: 40; background: var(--ink-2, #0C1016); border-bottom: 1px solid var(--line); }
.lab-fh2__in { display: flex; align-items: center; gap: 16px; min-height: 54px; }
.lab-fh2 .lab-back { margin-bottom: 0; }
.lab-fh2__title { font-weight: 700; font-size: 15px; }
.lab-fh2__prog { margin-left: auto; font-size: 13px; color: var(--paper-dim); font-variant-numeric: tabular-nums; }
.lab-form2 { display: grid; grid-template-columns: 1fr 290px; gap: 24px; align-items: start; padding: 22px 20px 70px; }
.lab-rules { background: rgba(78,126,166,.1); border: 1px solid var(--blue-deep, #4E7EA6); border-radius: 12px; padding: 12px 16px; margin-bottom: 18px; font-size: 13px; }
.lab-rules b { color: var(--blue, #A9D4F5); }
.lab-rules ul { margin: 6px 0 0; padding-left: 18px; line-height: 1.7; color: var(--paper-dim); }
.lab-q__head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.lab-q__no { flex: none; min-width: 28px; height: 28px; padding: 0 6px; border-radius: 8px; background: var(--ink-3); font-weight: 800; font-size: 13px; display: flex; align-items: center; justify-content: center; font-family: ui-monospace, monospace; }
.lab-q__title { font-size: 16px; font-weight: 700; margin: 2px 0; flex: 1; }
.lab-q__req { flex: none; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 100px; border: 1px solid var(--line-2); color: var(--paper-dim); }
.lab-q__req.is-req { color: var(--accent, #FF5A1F); border-color: var(--accent); }
.lab-q__guide { font-size: 13px; color: var(--blue, #A9D4F5); margin: 3px 0; line-height: 1.6; }
.lab-q__ta { margin-top: 8px; }
.lab-q__meta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-top: 6px; }
.lab-q__btns { display: flex; gap: 7px; flex-wrap: wrap; }
.lab-count--warn { color: var(--accent, #FF5A1F); }
.lab-count--over { color: #ff5252; font-weight: 700; }
.lab-count--under { color: var(--accent, #FF5A1F); }
.lab-url-in { margin-top: 8px; }
.lab-url-msg { font-size: 12.5px; margin-top: 5px; min-height: 16px; }
.lab-url-msg--ok { color: var(--blue, #A9D4F5); }
.lab-url-msg--err { color: var(--accent, #FF5A1F); }
.lab-choices--groups { flex-direction: column; align-items: stretch; gap: 12px; }
.lab-cg__l { font-size: 12px; font-weight: 700; color: var(--paper-dim); margin-bottom: 6px; }
.lab-cg__opts { display: flex; flex-wrap: wrap; gap: 7px; }
.lab-conn { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 4px 14px; position: sticky; top: 70px; }
.lab-conn summary { cursor: pointer; padding: 11px 0; font-weight: 700; font-size: 13.5px; }
.lab-conn table { width: 100%; border-collapse: collapse; font-size: 12.5px; margin-bottom: 10px; }
.lab-conn td { padding: 5px 4px; border-bottom: 1px solid var(--line); vertical-align: top; }
.lab-conn td:first-child { color: var(--paper-dim); }

/* 근거 정리표 */
.lab-ev { background: var(--ink); border: 1px solid var(--line-2); border-radius: 12px; padding: 14px; margin: 6px 0 18px; }
.lab-ev__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.lab-ev__title { font-weight: 700; font-size: 14px; display: flex; align-items: center; gap: 7px; }
.lab-ev__filters { display: flex; gap: 6px; flex-wrap: wrap; }
.lab-ev__filters .lab-chip { padding: 5px 11px; font-size: 12px; }
.lab-ev__scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; }
.lab-ev__tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.lab-ev__tbl th { background: var(--ink-3); text-align: left; padding: 8px 10px; font-size: 12px; border-bottom: 1px solid var(--line-2); white-space: nowrap; }
.lab-ev__tbl td { border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); padding: 6px 8px; vertical-align: top; min-width: 130px; }
.lab-ev__tbl td:last-child { border-right: 0; min-width: 0; }
.lab-ev__url { width: 100%; font-size: 12.5px; }
.lab-ev__urlact { display: flex; gap: 6px; margin-top: 5px; }
.lab-ev__open, .lab-ev__judge { font-size: 11.5px; background: var(--ink-3); border: 1px solid var(--line-2); color: var(--paper-dim); border-radius: 6px; padding: 3px 8px; cursor: pointer; }
.lab-ev__open:hover, .lab-ev__judge:hover { color: var(--accent, #FF5A1F); border-color: var(--accent); }
.lab-ev__lc { display: flex; flex-direction: column; gap: 3px; margin-top: 7px; font-size: 11.5px; color: var(--paper-dim); }
.lab-ev__lc label { display: flex; align-items: center; gap: 5px; cursor: pointer; }
.lab-ev__lc input { width: 14px; height: 14px; accent-color: var(--accent, #FF5A1F); }
.lab-evstatus { display: flex; flex-direction: column; gap: 3px; }
.lab-evs { font-size: 11.5px; border: 1px solid var(--line-2); background: transparent; color: var(--paper-dim); border-radius: 100px; padding: 2px 8px; cursor: pointer; text-align: center; }
.lab-evs[data-on="1"] { background: var(--accent, #FF5A1F); border-color: var(--accent); color: #fff; }
.lab-ev__act { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.lab-evhint { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; color: var(--paper-dim); background: var(--ink); border: 1px dashed var(--line-2); border-radius: 10px; padding: 10px 14px; margin: 14px 0 6px; }

/* 기호 정리 버튼 */
.lab-clean { background: transparent; border: 1px solid var(--line-2); color: var(--paper-dim); border-radius: 8px; padding: 2px 9px; font-size: 11.5px; cursor: pointer; }
.lab-clean:hover { border-color: var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); }

@media (max-width: 1024px) {
  .lab-app { grid-template-columns: 1fr; }
  .lab-app__side { position: static; max-height: none; overflow: visible; margin-bottom: 4px; }
  .lab-sl { flex-flow: row wrap; gap: 6px; }
  .lab-sl__part { width: 100%; margin: 8px 0 0; }
  .lab-sl__item { border: 1px solid var(--line); grid-template-columns: 16px auto; }
  .lab-sl__t { display: none; }
  .lab-tb__lab { display: none; }   /* 상단 버튼 아이콘만 */
  .lab-tb__btn { padding: 8px; }
}
@media (max-width: 960px) {
  .lab-slide { grid-template-columns: 1fr; }
  .lab-slide__prevwrap { position: static; }
  .lab-slide__preview { max-width: 480px; }
  .lab-form2 { grid-template-columns: 1fr; }
  .lab-conn { position: static; }
}
@media (max-width: 900px) {
  .lab-amain__grid { grid-template-columns: 1fr; }
  .lab-enter { grid-template-columns: 1fr; gap: 16px; }
  .lab-tb__course { display: none; }
}
@media (max-width: 680px) {
  .lab-tb__in { flex-wrap: wrap; min-height: 0; padding-top: 8px; padding-bottom: 8px; gap: 8px 12px; }
  .lab-tb__prog { order: 5; }
  .lab-tb__nav { width: 100%; overflow-x: auto; padding-bottom: 2px; }
  .lab-tb__btn { padding: 7px 9px; font-size: 12.5px; }
  .lab-fh2__in { flex-wrap: wrap; gap: 8px 12px; }
  .lab-stepbar { grid-template-columns: 92px 1fr 46px; }
  .lab-roster__act { flex-direction: column; }
}
@media (max-width: 420px) {
  .lab-wrap { padding: 0 14px; }
  .lab-step__title { font-size: 19px; }
  .lab-code--xl { font-size: 34px; }
  .lab-tb__me { display: none; }
}
@media (max-width: 520px) {
  .lab-field2 { grid-template-columns: 1fr; }
  .lab-code--xl { font-size: 38px; }
}
@media (prefers-reduced-motion: reduce) { .lab * { transition: none !important; } }

/* ───── 밝은 화면(light) · 로고 · 테마 토글 ───── */
html[data-theme="light"] .lab {
  --ink: #F6F8FB; --ink-2: #FFFFFF; --ink-3: #EEF2F7;
  --paper: #0B1220; --paper-dim: #5B6B7D;
  --line: rgba(11,18,32,.12); --line-2: rgba(11,18,32,.22);
  --blue: #2F6690; --blue-deep: #2F6690;
  --accent: #FF5A1F; --accent-dim: rgba(255,90,31,.12);
}
/* 청사진 그리드 라인(밝은 화면에서 옅게) */
html[data-theme="light"] .lab::before { opacity: .35; }
/* 밝은 화면 글자용 오렌지(대비 4.5:1 확보) */
html[data-theme="light"] .lab-var.on,
html[data-theme="light"] .lab-step__kicker,
html[data-theme="light"] .lab-pick__h,
html[data-theme="light"] .lab-fillnote a,
html[data-theme="light"] .lab-fillnote,
html[data-theme="light"] .lab-toolchip--on,
html[data-theme="light"] .lab-tb__btn--accent,
html[data-theme="light"] .lab-sl__now,
html[data-theme="light"] .lab-ce__hid { color: #C2410C; }
html[data-theme="light"] .lab-var.on { border-bottom-color: #C2410C; }
html[data-theme="light"] .lab-var.off { color: #C2410C; border-color: #C2410C; }
html[data-theme="light"] .lab-safety { color: #9A3412; background: rgba(255,90,31,.08); }
html[data-theme="light"] .lab-robar { color: #0B1220; }
html[data-theme="light"] .lab-slview__big img,
html[data-theme="light"] .lab-slthumb img,
html[data-theme="light"] .lab-slthumbbtn, html[data-theme="light"] .lab-slthumbbtn img { background: #e9edf2; }
html[data-theme="light"] .lab-tb, html[data-theme="light"] .lab-abar,
html[data-theme="light"] .lab-toolchips { box-shadow: 0 1px 0 rgba(11,18,32,.05); }

/* 로고 */
.lab-logo { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; }
.lab-logo__mark { border-radius: 6px; flex: none; display: block; }
.lab-logo__img { height: 22px; width: auto; flex: none; display: block; }
.lab-logo__img--b { display: none; }  /* 밝은(관리자) 테마에서만 */
html[data-theme="light"] .lab-logo__img--w { display: none; }
html[data-theme="light"] .lab-logo__img--b { display: block; }
.lab-logo__t { font-weight: 800; font-size: 15px; color: var(--paper); letter-spacing: -.01em; padding-left: 9px; border-left: 1px solid var(--line-2); }
.lab-logo__sub { font-weight: 700; font-size: 11px; color: #fff; background: var(--accent, #FF5A1F); border-radius: 100px; padding: 1px 8px; }
/* 큰 로고(입구·입장 화면) */
.lab-logo--lg .lab-logo__img { height: 30px; }
.lab-logo--lg .lab-logo__t { font-size: 19px; }

/* 테마 토글 아이콘 */
.lab-ic-light { display: none; }
html[data-theme="light"] .lab-ic-dark { display: none; }
html[data-theme="light"] .lab-ic-light { display: inline-flex; }
.lab-tb__icobtn { padding: 7px 9px; }
.lab-abar__theme { background: none; border: 1px solid var(--line-2); color: var(--paper-dim); border-radius: 8px; width: 34px; height: 34px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.lab-abar__theme:hover { color: var(--paper); border-color: var(--paper-dim); }
.lab-tb__btn--accent { border-color: var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); }
.lab-tb__btn--accent:hover { background: var(--accent-dim, rgba(255,90,31,.14)); }

/* ───── 오른쪽 작업 공간(탭) ───── */
/* 3단: 왼쪽(폭조절·접기, 기본240) · 가운데(480~900, 남는 폭) · 오른쪽(폭조절, 기본38%) */
/* 왼쪽(폭조절·접기) · 가운데(480~최대, 리사이저=--mid-max) · 오른쪽(남는 폭 흡수=1fr). 초광폭은 가운데 정렬. */
.lab-ws-page .lab-app { grid-template-columns: var(--sl-w, 240px) minmax(480px, var(--mid-max, 900px)) minmax(360px, 1fr); max-width: 2040px; margin-inline: auto; }
.lab-ws-page .lab-app.lab-sl-collapsed { grid-template-columns: 56px minmax(480px, var(--mid-max, 900px)) minmax(360px, 1fr); }
.lab-ws-page .lab-app__panel { display: block; position: sticky; top: 104px; max-height: calc(100vh - 116px); overflow-y: auto; overflow-x: visible; padding-left: 14px; }
.lab-ws__resizer { position: absolute; left: 0; top: 0; width: 8px; height: 100%; cursor: col-resize; z-index: 5; }
/* 왼쪽 메뉴 폭 조절 손잡이(오른쪽과 동일 모양) */
.lab-app__side { position: relative; }
.lab-sl__resizer { position: absolute; right: -11px; top: 0; width: 8px; height: 100%; cursor: col-resize; z-index: 5; }
.lab-sl__resizer::before { content: ""; position: absolute; left: 3px; top: 0; width: 2px; height: 100%; background: var(--line); }
.lab-sl__resizer:hover::before, .lab-sl__resizer.is-drag::before { background: var(--accent, #FF5A1F); }
.lab-app.lab-sl-collapsed .lab-sl__resizer { display: none; }
/* 접기 버튼 */
.lab-sl__top { display: flex; justify-content: flex-end; margin-bottom: 4px; }
.lab-sl__collapse { background: var(--ink-2); border: 1px solid var(--line-2); color: var(--paper-dim); border-radius: 8px; width: 30px; height: 28px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.lab-sl__collapse:hover { color: var(--paper); border-color: var(--accent, #FF5A1F); }
.lab-sl__ci--open { display: none; }
.lab-app.lab-sl-collapsed .lab-sl__ci--close { display: none; }
.lab-app.lab-sl-collapsed .lab-sl__ci--open { display: inline-flex; }
.lab-app.lab-sl-collapsed .lab-sl__top { justify-content: center; }
.lab-slp__railno { display: none; font-weight: 800; font-size: 12px; color: var(--paper); }
.lab-slp--cur .lab-slp__railno { color: var(--accent, #FF5A1F); }
/* 접힘(아이콘 레일) 56px: 텍스트 감추고 점·PART번호만 */
.lab-app.lab-sl-collapsed .lab-app__side { padding-right: 0; }
.lab-app.lab-sl-collapsed .lab-slpf__t, .lab-app.lab-sl-collapsed .lab-slpf__n,
.lab-app.lab-sl-collapsed .lab-itemboard,
.lab-app.lab-sl-collapsed .lab-slp__no, .lab-app.lab-sl-collapsed .lab-slp__h .lab-slp__t, .lab-app.lab-sl-collapsed .lab-slp__n, .lab-app.lab-sl-collapsed .lab-slp__h::before,
.lab-app.lab-sl-collapsed .lab-sl__body, .lab-app.lab-sl-collapsed .lab-slp__opttgl { display: none; }
.lab-app.lab-sl-collapsed .lab-slp__railno { display: block; text-align: center; }
.lab-app.lab-sl-collapsed .lab-slp__h { justify-content: center; padding: 6px 0; }
.lab-app.lab-sl-collapsed .lab-slp__list { padding: 0; margin: 0; border-left: 0; }
.lab-app.lab-sl-collapsed .lab-sl__item a { grid-template-columns: 1fr; justify-items: center; padding: 5px 0; }
.lab-app.lab-sl-collapsed .lab-sl__dot { width: auto; }
.lab-app.lab-sl-collapsed .lab-sl__dot::before { position: static; left: auto; top: auto; }
.lab-app.lab-sl-collapsed .lab-slpf { justify-content: center; padding: 8px 0; }
.lab-ws__resizer::before { content: ""; position: absolute; left: 3px; top: 0; width: 2px; height: 100%; background: var(--line); }
.lab-ws__resizer:hover::before, .lab-ws__resizer.is-drag::before { background: var(--accent, #FF5A1F); }
.lab-ws__slides { margin-bottom: 12px; }
.lab-ws__slides:empty { display: none; }
.lab-ws__tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 14px; position: sticky; top: 0; background: var(--ink, #07090D); z-index: 2; flex-wrap: wrap; }
.lab-ws__tab { background: none; border: 0; color: var(--paper-dim); font-size: 13px; font-weight: 700; padding: 9px 11px; cursor: pointer; border-bottom: 2px solid transparent; }
.lab-ws__tab--on { color: var(--paper); border-bottom-color: var(--accent, #FF5A1F); }
.lab-ws__note { font-size: 12.5px; color: var(--paper-dim); background: var(--ink-2); border: 1px solid var(--line); border-left: 3px solid var(--blue-deep, #4E7EA6); border-radius: 9px; padding: 9px 12px; margin-bottom: 12px; display: flex; gap: 7px; align-items: flex-start; }
.lab-ws__note--accent { border-left-color: var(--accent, #FF5A1F); }
.lab-ws__note b { color: var(--paper); }
/* 항목 카드 */
.lab-itemcard { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 14px; margin-bottom: 12px; scroll-margin-top: 60px; }
.lab-itemcard--on { border-color: var(--accent, #FF5A1F); box-shadow: 0 0 0 1px var(--accent, #FF5A1F) inset; }
.lab-itemcard__h { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.lab-itemcard__no { width: 24px; height: 24px; border-radius: 50%; background: var(--accent, #FF5A1F); color: #fff; font-weight: 800; font-size: 13px; display: flex; align-items: center; justify-content: center; flex: none; }
.lab-itemcard__h b { font-size: 15px; }
.lab-itemcard .lab-fields { gap: 12px; }
@media (max-width: 1024px) {
  .lab-ws-page .lab-app { grid-template-columns: 1fr; }
  .lab-ws-page .lab-app__panel { position: static; max-height: none; padding-left: 0; border-top: 2px solid var(--line-2); padding-top: 14px; margin-top: 8px; }
  .lab-ws__resizer, .lab-sl__resizer, .lab-sl__top { display: none; }
}

/* ───── STEP 7 사업계획서(블록 편집기) ───── */
.lab-plan__pick { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0; }
.lab-plan__pickbtn { flex: 1; min-width: 140px; text-align: left; background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 11px; padding: 10px 13px; cursor: pointer; color: var(--paper); display: flex; flex-direction: column; gap: 3px; }
.lab-plan__pickbtn b { font-size: 13.5px; }
.lab-plan__pickbtn span { font-size: 11.5px; color: var(--paper-dim); line-height: 1.4; }
.lab-plan__pickbtn--on { border-color: var(--accent, #FF5A1F); box-shadow: 0 0 0 1px var(--accent, #FF5A1F) inset; }
.lab-plan__bar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
/* 불러오기 서랍 */
.lab-plan__drawer { border: 1px solid var(--line-2); border-radius: 12px; background: var(--ink-2); padding: 12px; margin-bottom: 14px; }
.lab-plan__drawerh { font-size: 13px; font-weight: 700; margin-bottom: 10px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; }
.lab-plan__drawerh .lab-fh { font-weight: 400; font-size: 11.5px; color: var(--paper-dim); }
.lab-plan__drawergrp { font-size: 11.5px; color: var(--paper-dim); margin: 10px 0 5px; text-transform: none; }
.lab-plan__drawergrp:first-child { margin-top: 0; }
.lab-plan__drawerlist { display: flex; flex-direction: column; gap: 6px; }
.lab-loaditem { text-align: left; width: 100%; background: var(--ink, #07090D); border: 1px solid var(--line-2); border-radius: 9px; padding: 8px 11px; cursor: pointer; color: var(--paper); display: flex; flex-direction: column; gap: 2px; }
.lab-loaditem:hover { border-color: var(--accent, #FF5A1F); }
.lab-loaditem b { font-size: 12.5px; font-weight: 600; }
.lab-loaditem span { font-size: 11px; color: var(--paper-dim); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lab-loaditem--img { flex-direction: row; align-items: center; gap: 9px; }
.lab-loaditem--img img { width: 48px; height: 36px; object-fit: cover; border-radius: 6px; flex: none; }
.lab-plan__sec { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 14px; margin-bottom: 12px; }
.lab-plan__sech { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.lab-plan__sech b { font-size: 14.5px; }
.lab-plan__psst { font-size: 11px; color: var(--blue, #A9D4F5); border: 1px solid var(--blue-deep, #4E7EA6); border-radius: 100px; padding: 0 7px; }
.lab-plan__count { margin-left: auto; font-size: 11.5px; color: var(--paper-dim); font-variant-numeric: tabular-nums; }
.lab-plan__count--over { color: var(--accent, #FF5A1F); font-weight: 600; }
.lab-plan__count--warn { color: var(--accent, #FF5A1F); }
.lab-q .lab-q__ed { margin-top: 6px; }
.lab-plan__warn { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--accent, #FF5A1F); border: 1px solid var(--accent, #FF5A1F); border-radius: 100px; padding: 1px 8px; }
.lab-plan__warn[hidden] { display: none; }
.lab-plan__warn:not([hidden]) + .lab-plan__count { margin-left: 8px; }
.lab-plan__ed { background: var(--ink, #07090D); border: 1px solid var(--line-2); border-radius: 10px; padding: 4px 10px; min-height: 70px; }
/* Editor.js 다크/라이트 적용 */
.lab-plan__ed .codex-editor__redactor { padding-bottom: 30px !important; }
.lab-plan__ed .ce-block__content, .lab-plan__ed .ce-toolbar__content { max-width: none; }
.lab-plan__ed .ce-paragraph, .lab-plan__ed .ce-header, .lab-plan__ed .cdx-block, .lab-plan__ed .cdx-list, .lab-plan__ed .cdx-list__item, .lab-plan__ed .tc-cell, .lab-plan__ed .tc-table { color: var(--paper); }
.lab-plan__ed .ce-header { font-weight: 800; }
.lab-plan__ed a { color: var(--blue, #A9D4F5); }
.lab-plan__ed .ce-paragraph[data-placeholder]:empty::before, .lab-plan__ed .codex-editor--empty .ce-paragraph:first-child[data-placeholder]::before { color: var(--paper-dim); opacity: 1; }
.lab-plan__ed .tc-table, .lab-plan__ed .tc-cell { border-color: var(--line-2); }
.lab-plan__ed .ce-delimiter::before { color: var(--paper-dim); }
html[data-theme="light"] .lab-plan__ed .ce-paragraph, html[data-theme="light"] .lab-plan__ed .ce-header, html[data-theme="light"] .lab-plan__ed .cdx-block { color: #0B1220; }

/* 사업계획서 PDF(A4) */
.lab-paper--plan .lab-paper__plansec { page-break-inside: auto; margin-bottom: 16px; }
.lab-paper--plan h2 { font-size: 16px; color: #07090D; border-left: 4px solid #FF5A1F; padding-left: 8px; margin: 14px 0 8px; }
.lab-paper--plan h2 small { font-size: 11px; color: #4E7EA6; font-weight: 600; }
.lab-plancontent { font-size: 13px; line-height: 1.7; }
.lab-plancontent h3 { font-size: 14px; margin: 8px 0 3px; }
.lab-plancontent h4 { font-size: 13px; margin: 6px 0 2px; color: #444; }
.lab-plancontent ul { padding-left: 20px; } .lab-plancontent ul li::marker { content: "□ "; }
.lab-plancontent ol { padding-left: 20px; }
.lab-plancontent table.pt { width: 100%; border-collapse: collapse; margin: 6px 0; }
.lab-plancontent table.pt td { border: 1px solid #ccc; padding: 4px 7px; font-size: 12px; }
.lab-plancontent .pf img { max-width: 100%; max-height: 85mm; border: 1px solid #ddd; border-radius: 4px; }
.lab-plancontent .pf figcaption { font-size: 11px; color: #777; }

/* 사업계획서 PDF: A4 페이지 넘김·한글 글꼴·이미지 최대폭 */
.lab-paper--plan .lab-paper__plansec { break-inside: avoid; page-break-inside: avoid; }
.lab-paper--plan .lab-plancontent { break-inside: auto; }
.lab-paper--modoo .lab-modoo-body { font-family: "HY견명조", "휴먼명조", "HYMyeongJo", "바탕", Batang, "Noto Serif KR", serif; font-size: 13pt; line-height: 1.75; }
.lab-paper--plan .pf { break-inside: avoid; text-align: center; margin: 8px 0; }
.lab-paper--plan .pf img { max-width: 100%; max-height: 95mm; height: auto; }
@media print {
  .lab-paper--plan { box-shadow: none; margin: 0; max-width: none; padding: 0; }
  .lab-paper--plan h2 { break-after: avoid; page-break-after: avoid; }
  @page { size: A4; margin: 16mm; }
}

/* 항목에 넣기 버튼 */
.lab-toitem { background: var(--accent-dim, rgba(255,90,31,.12)); border: 1px solid var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); border-radius: 7px; padding: 2px 8px; font-size: 11.5px; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; gap: 3px; }
.lab-toitem:hover { background: var(--accent, #FF5A1F); color: #fff; }
.lab-itemcard--flash { animation: labflash 1.2s ease; }
.lab-ev--flash { animation: labflash 1.3s ease; }
@keyframes labflash { 0%,100% { box-shadow: 0 0 0 1px var(--accent,#FF5A1F) inset; } 30% { box-shadow: 0 0 0 3px var(--accent,#FF5A1F) inset; } }
html[data-theme="light"] .lab-toitem { color: #C2410C; border-color: #C2410C; }

/* 크게 쓰기 */
.lab-app.lab-ws-full { grid-template-columns: 1fr; }
.lab-app.lab-ws-full .lab-app__side, .lab-app.lab-ws-full .lab-app__main { display: none; }
.lab-app.lab-ws-full .lab-app__panel { position: static; max-height: none; padding-left: 0; }
.lab-app.lab-ws-full .lab-ws__resizer, .lab-app.lab-ws-full .lab-sl__resizer { display: none; }
.lab-app.lab-ws-full .lab-plan__sec, .lab-app.lab-ws-full .lab-plan__ed { max-width: 900px; }
.lab-app.lab-ws-full .lab-plan { max-width: 920px; margin: 0 auto; }

/* ── AX 오케스트레이션 시뮬레이터 ── */
.lab-simwrap { padding-bottom: 40px; }
.lab-sim { max-width: 1100px; }
.lab-sim__flow { display: flex; align-items: stretch; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.lab-sim__cell { flex: 1; min-width: 108px; background: var(--ink-2); border: 1px solid var(--line); border-radius: 10px; padding: 9px 11px; display: flex; flex-direction: column; gap: 2px; position: relative; transition: border-color .2s, background .2s; }
.lab-sim__cell b { font-size: 12.5px; }
.lab-sim__cell span:last-child { font-size: 11px; color: var(--paper-dim); }
.lab-sim__cellno { position: absolute; top: 6px; right: 8px; font-size: 10px; color: var(--paper-dim); }
.lab-sim__cell.is-on { border-color: var(--accent, #FF5A1F); background: rgba(255,90,31,.08); }
.lab-sim__arrow { align-self: center; color: var(--paper-dim); font-size: 13px; }
.lab-sim__in { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 14px; margin-bottom: 16px; }
.lab-sim__presets { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 9px; }
.lab-sim__lbl { font-size: 12px; color: var(--paper-dim); margin-right: 2px; }
.lab-sim__preset { font-size: 12px; background: var(--ink); border: 1px solid var(--line-2); border-radius: 100px; padding: 4px 11px; cursor: pointer; color: var(--paper); }
.lab-sim__preset:hover { border-color: var(--accent, #FF5A1F); }
.lab-sim__q { width: 100%; background: var(--ink); border: 1px solid var(--line-2); border-radius: 9px; color: var(--paper); padding: 9px 11px; font-size: 13.5px; resize: vertical; font-family: inherit; }
.lab-sim__run { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.lab-sim__note { font-size: 11.5px; color: var(--paper-dim); }
.lab-sim__agents { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 10px; }
.lab-sim__agent { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; opacity: .5; transition: opacity .25s, border-color .25s; }
.lab-sim__agent.is-on { opacity: 1; border-color: var(--blue-deep, #4E7EA6); }
.lab-sim__agenth { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.lab-sim__agenth b { font-size: 13.5px; }
.lab-sim__agenth span { font-size: 11.5px; color: var(--paper-dim); }
.lab-sim__out:empty { display: none; }
.lab-sim__out { font-size: 13px; display: flex; flex-direction: column; gap: 7px; }
.lab-sim__kv { display: inline-block; margin-right: 12px; font-size: 12.5px; color: var(--paper-dim); }
.lab-sim__kv b { color: var(--paper); font-size: 14px; margin-left: 4px; }
.lab-sim__hi { color: var(--accent, #FF5A1F) !important; }
.lab-sim__policy { background: var(--ink); border-radius: 8px; padding: 8px 11px; font-size: 12.5px; color: var(--paper-dim); }
.lab-sim__policy--none { color: var(--accent, #FF5A1F); }
.lab-sim__draft { background: #fff; color: #1a1a1a; border-radius: 8px; padding: 11px 13px; font-size: 13px; line-height: 1.65; }
.lab-sim__len { font-size: 11px; color: var(--paper-dim); text-align: right; }
.lab-sim__checks { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.lab-sim__checks li { font-size: 12.5px; padding-left: 20px; position: relative; }
.lab-sim__checks li::before { position: absolute; left: 0; top: 0; }
.lab-sim__checks li.is-bad { color: var(--accent, #FF5A1F); } .lab-sim__checks li.is-bad::before { content: '⚠'; }
.lab-sim__checks li.is-ok { color: #86efac; } .lab-sim__checks li.is-ok::before { content: '✓'; }
.lab-sim__json { background: var(--ink); border: 1px solid var(--line-2); border-radius: 8px; padding: 10px 12px; font-size: 11.5px; color: var(--blue, #A9D4F5); overflow-x: auto; white-space: pre; }
.lab-sim__approval { background: var(--ink-3, #121722); border: 1px solid var(--blue-deep, #4E7EA6); border-radius: 12px; padding: 14px; margin-bottom: 16px; }
.lab-sim__verdict { font-size: 14px; font-weight: 700; margin-bottom: 10px; }
.lab-sim__verdict.is-ok { color: #86efac; } .lab-sim__verdict.is-fix { color: var(--accent, #FF5A1F); }
.lab-sim__apbtns { display: flex; gap: 8px; flex-wrap: wrap; }
.lab-sim__guard { font-size: 11.5px; color: var(--paper-dim); margin: 10px 0 0; display: flex; align-items: center; gap: 5px; }
.lab-sim__log { background: var(--ink-2); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; }
.lab-sim__logh { font-size: 12.5px; font-weight: 700; margin-bottom: 8px; }
.lab-sim__logtbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.lab-sim__logtbl th, .lab-sim__logtbl td { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.lab-sim__logtbl th { color: var(--paper-dim); font-weight: 600; font-size: 11.5px; }
.lab-sim__logempty td { color: var(--paper-dim); text-align: center; }
/* 강사 진행(발표) 화면 — 크게 */
.lab-sim--present { max-width: 1280px; }
.lab-sim--present .lab-sim__cell b { font-size: 15px; }
.lab-sim--present .lab-sim__agenth b { font-size: 16px; }
.lab-sim--present .lab-sim__out, .lab-sim--present .lab-sim__draft { font-size: 15px; }
.lab-sim--present .lab-sim__q { font-size: 16px; }
@media (max-width: 820px) {
  .lab-sim__flow { gap: 4px; }
  .lab-sim__arrow { display: none; }
  .lab-sim__cell { min-width: calc(50% - 4px); }
}

/* 코드 블록(실행 실습 Apps Script) */
.lab-codeblocks { display: flex; flex-direction: column; gap: 14px; margin: 14px 0; }
.lab-codeblock { border: 1px solid var(--line-2); border-radius: 12px; overflow: hidden; background: var(--ink, #07090D); }
.lab-codeblock__h { display: flex; align-items: center; gap: 10px; padding: 9px 13px; background: var(--ink-2); border-bottom: 1px solid var(--line); }
.lab-codeblock__h b { font-size: 13px; }
.lab-codeblock__lang { font-size: 10.5px; color: var(--paper-dim); border: 1px solid var(--line-2); border-radius: 100px; padding: 0 8px; }
.lab-codeblock__h .lab-btn { margin-left: auto; }
.lab-codeblock__pre { margin: 0; padding: 13px 15px; overflow-x: auto; font-size: 12.5px; line-height: 1.6; max-height: 460px; }
.lab-codeblock__pre code { font-family: ui-monospace, "Cascadia Code", "Consolas", monospace; color: var(--paper); white-space: pre; }
.lab-codeblock__note { margin: 0; padding: 9px 13px; font-size: 11.5px; color: var(--paper-dim); background: var(--ink-2); border-top: 1px solid var(--line); display: flex; align-items: center; gap: 5px; }

/* ── 실습실 입구(게이트) · 문 · 승인 대기 ── */
.lab-gate { max-width: 860px; margin: 0 auto; padding: 24px 16px 60px; text-align: center; }
.lab-gate__home { display: inline-flex; align-items: center; gap: 5px; float: left; font-size: 13px; color: var(--paper-dim); text-decoration: none; }
.lab-gate__home:hover { color: var(--paper); }
.lab-gate__brand { justify-content: center; margin: 28px 0 14px; }
.lab-gate__h1 { font-size: 30px; font-weight: 800; letter-spacing: -.02em; margin: 0 0 6px; }
.lab-gate__sub { color: var(--paper-dim); margin: 0 0 28px; }
.lab-gate__doors { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
@media (max-width: 680px) { .lab-gate__doors { grid-template-columns: 1fr; } }
.lab-door { display: flex; flex-direction: column; gap: 6px; text-align: left; text-decoration: none; color: var(--paper); background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 16px; padding: 22px 22px 18px; transition: border-color .15s, transform .1s; }
.lab-door:hover { border-color: var(--accent, #FF5A1F); transform: translateY(-2px); }
.lab-door--locked { opacity: .62; }
.lab-door__track { font-family: ui-monospace, monospace; font-size: 11px; font-weight: 800; letter-spacing: .12em; color: var(--accent, #FF5A1F); }
.lab-door__title { font-size: 20px; font-weight: 800; letter-spacing: -.01em; }
.lab-door__desc { font-size: 13.5px; color: var(--paper-dim); line-height: 1.5; min-height: 2.4em; }
.lab-door__status { margin-top: 10px; font-size: 13px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }
.lab-door__status--on { color: #86efac; }
.lab-door__status--off { color: var(--paper-dim); }
.lab-gate__links { margin: 26px 0 10px; display: flex; gap: 10px; align-items: center; justify-content: center; flex-wrap: wrap; }
.lab-gate__links a { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--paper-dim); text-decoration: none; }
.lab-gate__links a:hover { color: var(--paper); }
.lab-gate__dot { color: var(--line-2); }
.lab-gate__note { font-size: 12px; color: var(--paper-dim); margin-top: 18px; display: inline-flex; align-items: center; gap: 5px; }
.lab-enter__home { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: var(--paper-dim); text-decoration: none; margin-bottom: 8px; }
.lab-enter__home:hover { color: var(--paper); }
/* 회차 고르기 */
.lab-cohortpick { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.lab-cohortpick__item { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--paper); background: var(--ink); border: 1px solid var(--line-2); border-radius: 11px; padding: 12px 14px; }
.lab-cohortpick__item:hover { border-color: var(--accent, #FF5A1F); }
.lab-cohortpick__item b { flex: none; }
.lab-cohortpick__item span { color: var(--paper-dim); font-size: 12.5px; flex: 1; }
/* 승인 대기 */
.lab-wait { text-align: center; }
.lab-wait__spin { width: 42px; height: 42px; margin: 4px auto 14px; border: 4px solid var(--line-2); border-top-color: var(--accent, #FF5A1F); border-radius: 50%; animation: lab-spin 1s linear infinite; }
@keyframes lab-spin { to { transform: rotate(360deg); } }
.lab-wait__icon--no { color: var(--accent, #FF5A1F); margin-bottom: 8px; }
.lab-wait__who { font-size: 14px; margin: 2px 0 10px; }
.lab-wait__dots { color: var(--blue, #A9D4F5); font-size: 13px; margin-top: 12px; }
@media (prefers-reduced-motion: reduce) { .lab-wait__spin { animation: none; } }

/* ── 가입 승인(관리자) ── */
.lab-approve__toggles { display: flex; gap: 18px; flex-wrap: wrap; margin: 4px 0 12px; }
.lab-tog { margin: 0; }
.lab-switch { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font-size: 13.5px; }
.lab-switch input { width: 16px; height: 16px; }
.lab-ptable { width: 100%; border-collapse: collapse; font-size: 13.5px; margin: 6px 0 12px; }
.lab-ptable th, .lab-ptable td { text-align: left; padding: 7px 9px; border-bottom: 1px solid var(--line); }
.lab-ptable th { font-size: 11.5px; color: var(--paper-dim); font-weight: 600; }
.lab-ptable .lab-mono { font-family: ui-monospace, monospace; color: var(--paper-dim); }
.lab-approve__acts { display: flex; gap: 8px; flex-wrap: wrap; }
.lab-admin .lab-approve { border-color: var(--line-2); }
/* 관리자 상단 승인 대기 배지 */
.lab-adminbadge { display: none; margin-left: 6px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 100px; background: var(--accent, #FF5A1F); color: #fff; font-size: 11px; font-weight: 800; align-items: center; justify-content: center; }
.lab-adminbadge.is-on { display: inline-flex; }

/* 강의 목록 카드 — 승인 대기 있으면 강조 */
.lab-ccard--pend { border-color: var(--accent, #FF5A1F) !important; box-shadow: 0 0 0 1px var(--accent, #FF5A1F) inset; }

/* ── 입구 회차 카드(실제 회차·상태·D-day) ── */
.lab-gcard__foot .lab-gcohort{border:1px solid var(--line,rgba(255,255,255,.1));border-radius:10px;padding:11px 13px;margin-top:10px;background:rgba(255,255,255,.015)}
.lab-gcohort__head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.lab-gcohort__badge{font-size:11px;font-weight:800;letter-spacing:.02em;color:var(--blue,#8fc0ec);border:1px solid var(--line-2,rgba(150,195,230,.3));border-radius:5px;padding:2px 7px}
.lab-gcohort__badge--always{color:#f0a35a;border-color:rgba(240,120,30,.4)}
.lab-gcohort__name{font-weight:700;font-size:14px;color:var(--paper,#e9f1f8)}
.lab-gcohort__meta{font-size:12.5px;color:var(--paper-dim,#93a6ba);line-height:1.55;margin-bottom:8px}
.lab-gcohort__cta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lab-gcohort__when{font-size:13px;color:var(--paper,#e9f1f8);font-weight:600;display:inline-flex;align-items:center;gap:5px}
/* ── 회차 상세 입장 상태 밴드 ── */
.lab-coh-status{padding:16px 18px}
.lab-coh-status__now{font-size:14.5px}

/* 강사 진행 시뮬레이터(admin/sim.php): 전체폭 + 에이전트 다단 + 안내 3줄 */
.lab-sim-present-page .lab-sim { max-width: none; }
.lab-sim-present-page .lab-sim__agents { grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); }
.lab-sim-intro { background: var(--ink-2, #0e131b); border: 1px solid var(--line); border-radius: 12px; padding: 14px 18px; margin: 14px 0 18px; }
.lab-sim-intro__h { font-size: 15px; margin: 0 0 8px; display: flex; align-items: center; gap: 7px; }
.lab-sim-intro p { margin: 3px 0; font-size: 14px; color: var(--paper-dim); line-height: 1.6; }
.lab-sim-intro p b { color: var(--paper); }

/* '이번 강의' 카드: 왼쪽 칸 맨 위에 고정(단계 목록만 스크롤), 접으면 함께 숨김(기존 규칙) */
.lab-app__side .lab-sl__top { position: sticky; top: 0; z-index: 3; background: var(--ink, #07090D); padding-top: 2px; padding-bottom: 10px; }
.lab-app__side .lab-sl__top::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 10px; background: linear-gradient(var(--ink, #07090D), transparent); pointer-events: none; transform: translateY(100%); }

/* 실습실 관리자 기준선 통일(#4): 모든 관리자 화면 전체폭 + 좌우 clamp 여백, 바 안쪽과 본문 왼쪽 끝 같은 세로선 */
html { scrollbar-gutter: stable; }
.lab-admin .lab-wrap { max-width: none; width: 100%; padding-left: clamp(16px, 2vw, 32px); padding-right: clamp(16px, 2vw, 32px); margin-inline: 0; }
.lab-admin .lab-abar .lab-wrap { max-width: none; margin-inline: 0; padding-left: clamp(16px, 2vw, 32px); padding-right: clamp(16px, 2vw, 32px); }
/* 과정 카드 격자(courses.php) — 전체폭 채움 */
.lab-admin .lab-clist { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.lab-admin .lab-ccard { display: flex; flex-direction: column; }
.lab-admin .lab-ccard .lab-actions { margin-top: auto; display: flex; flex-wrap: wrap; gap: 6px; }
/* 과정 가져오기: 전체폭 한 줄(설명 | 파일 선택 | 버튼) */
.lab-admin .lab-import { max-width: none !important; }
.lab-admin .lab-import__row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.lab-admin .lab-import__row p { margin: 0; flex: 1 1 260px; }
/* 파일 선택 칸을 실습실 버튼 모양으로 */
.lab-admin input[type=file] { color: var(--paper-dim); font-size: 13px; }
.lab-admin input[type=file]::file-selector-button { font: inherit; font-weight: 700; font-size: 13px; padding: 8px 14px; margin-right: 10px; border: 1px solid var(--line-2); border-radius: 8px; background: var(--ink-2); color: var(--paper); cursor: pointer; }
.lab-admin input[type=file]::file-selector-button:hover { border-color: var(--accent, #FF5A1F); color: var(--accent, #FF5A1F); }

/* 회차 대시보드 상태 띠·준비 체크 */
.lab-coh-status__head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.lab-coh-dday { font-size: 13px; font-weight: 800; color: #fff; background: var(--accent, #FF5A1F); border-radius: 6px; padding: 3px 10px; }
.lab-coh-status__meta { font-size: 13.5px; color: var(--paper-dim); }
.lab-coh-ready { padding: 14px 18px; }
.lab-coh-ready__h { font-weight: 700; font-size: 14px; margin-bottom: 10px; display: flex; align-items: center; gap: 7px; }
.lab-coh-ready__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 7px 18px; }
.lab-coh-ready__list li { font-size: 13.5px; color: var(--paper-dim); display: flex; align-items: center; gap: 7px; }
.lab-coh-ready__list li.is-ok { color: var(--paper); }
.lab-coh-ready__mk { font-weight: 800; }
.lab-coh-ready__list li.is-ok .lab-coh-ready__mk { color: #1a9d5a; }
.lab-coh-ready__list li.is-no .lab-coh-ready__mk { color: var(--accent, #FF5A1F); }
.lab-coh-ready__list a { color: var(--accent, #FF5A1F); margin-left: 4px; }

/* 입구 관리자 입장 선택창(강사로 보기 / 학생처럼 신청) */
.lab-gchoice { position: relative; display: inline-block; }
.lab-gchoice > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
.lab-gchoice > summary::-webkit-details-marker { display: none; }
.lab-gchoice__menu { position: absolute; z-index: 10; top: calc(100% + 6px); left: 0; min-width: 240px; background: var(--ink-2, #0e131b); border: 1px solid var(--line-2); border-radius: 10px; padding: 6px; box-shadow: 0 10px 30px rgba(0,0,0,.4); }
.lab-gchoice__menu a { display: flex; align-items: center; gap: 8px; padding: 9px 11px; border-radius: 7px; color: var(--paper); text-decoration: none; font-size: 13.5px; }
.lab-gchoice__menu a:hover { background: rgba(255,255,255,.06); color: var(--accent, #FF5A1F); }

/* 선택 동의(실습실 가입) */
.lab-consent-opt { display: flex; flex-direction: column; gap: 10px; margin: 2px 0 2px; padding: 12px 14px; background: rgba(255,255,255,.03); border: 1px solid var(--line); border-radius: 10px; }
.lab-consent--sm { font-size: 13px; color: var(--paper-dim, #93A6BA); }
.lab-consent--sm b { color: var(--paper, #E9F1F8); }

/* 입구 회차 카드: 기관 로고를 우측 상단으로(기간명과 분리 — 대표 요청) */
.lab-gcard__foot .lab-gcohort { position: relative; }
.lab-gcohort .lab-cohmeta__logo { position: absolute; top: 12px; right: 12px; height: 24px; max-width: 86px; width: auto; object-fit: contain; margin: 0; z-index: 2; }
.lab-gcohort .lab-gcohort__head { padding-right: 98px; }

/* ⑤ 입구 시각 보강: 이용안내 3단 그림(과정 카드 썸네일은 대표 요청으로 제거) */
.lab-gsteps3 { display: flex; align-items: stretch; justify-content: center; gap: 10px; flex-wrap: wrap; }
.lab-gstep3 { flex: 1 1 0; min-width: 190px; max-width: 300px; margin: 0; background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; }
.lab-gstep3__img { aspect-ratio: 16 / 10; overflow: hidden; background: var(--ink-3, #111823); }
.lab-gstep3__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lab-gstep3 figcaption { padding: 13px 15px 15px; display: flex; flex-direction: column; gap: 5px; }
.lab-gstep3__n { width: 24px; height: 24px; border-radius: 50%; background: var(--blue-deep, #4E7EA6); color: #fff; font-weight: 800; font-size: 12px; display: flex; align-items: center; justify-content: center; }
.lab-gstep3 figcaption b { font-size: 14px; font-weight: 800; }
.lab-gstep3__d { font-size: 12px; color: var(--paper-dim); line-height: 1.5; }
.lab-gsteps3__arr { display: flex; align-items: center; color: var(--paper-dim); }
@media (max-width: 720px) {
  .lab-gsteps3 { flex-direction: column; align-items: stretch; flex-wrap: nowrap; }
  .lab-gstep3 { flex: 0 0 auto; max-width: none; }
  .lab-gsteps3__arr { transform: rotate(90deg); justify-content: center; }
}

/* ── 결과보고서(admin/report.php) ── */
.lab-rep { max-width: 820px; margin: 0 auto; padding: 24px clamp(14px, 3vw, 28px) 60px; }
.lab-rep__demo { display: flex; align-items: flex-start; gap: 8px; font-size: 13.5px; color: var(--paper); background: rgba(78,126,166,.14); border: 1px solid var(--blue-deep, #4E7EA6); border-radius: 10px; padding: 11px 14px; margin-bottom: 20px; line-height: 1.6; }
.lab-rep__demo svg { flex: 0 0 auto; margin-top: 2px; color: var(--blue, #A9D4F5); }
.lab-rep__head { border-bottom: 2px solid var(--line, rgba(255,255,255,.14)); padding-bottom: 18px; margin-bottom: 22px; }
.lab-rep__eyebrow { font-size: 12px; font-weight: 800; letter-spacing: .1em; color: var(--blue, #A9D4F5); margin-bottom: 7px; }
.lab-rep__title { font-size: clamp(22px, 3vw, 28px); font-weight: 800; margin: 0 0 14px; line-height: 1.3; }
.lab-rep__meta { border-collapse: collapse; font-size: 14px; }
.lab-rep__meta th { text-align: left; font-weight: 700; color: var(--paper-dim); padding: 3px 18px 3px 0; white-space: nowrap; vertical-align: top; }
.lab-rep__meta td { padding: 3px 0; }
.lab-rep__kpi { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 26px; }
.lab-rep__k { background: var(--ink-2); border: 1px solid var(--line-2, rgba(150,195,230,.28)); border-radius: 12px; padding: 16px 14px; text-align: center; }
.lab-rep__kn { font-size: 30px; font-weight: 800; line-height: 1; color: var(--paper); }
.lab-rep__kn span { font-size: 14px; font-weight: 700; color: var(--paper-dim); margin-left: 2px; }
.lab-rep__kl { font-size: 12.5px; color: var(--paper-dim); margin-top: 7px; line-height: 1.4; }
.lab-rep__kl b { color: var(--blue, #A9D4F5); }
.lab-rep__sec { margin-bottom: 26px; }
.lab-rep__h2 { font-size: 16px; font-weight: 800; margin: 0 0 14px; padding-bottom: 7px; border-bottom: 1px solid var(--line, rgba(255,255,255,.1)); }
.lab-rep__bars { display: flex; flex-direction: column; gap: 10px; }
.lab-rep__bar { display: grid; grid-template-columns: 180px 1fr 44px; align-items: center; gap: 12px; }
.lab-rep__barlab { font-size: 13.5px; color: var(--paper); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lab-rep__track { height: 12px; background: var(--ink-3, #111823); border-radius: 100px; overflow: hidden; }
.lab-rep__track span { display: block; height: 100%; background: var(--blue-deep, #4E7EA6); border-radius: 100px; }
.lab-rep__barpct { font-size: 12.5px; font-weight: 700; color: var(--paper-dim); text-align: right; }
.lab-rep__p { font-size: 14px; color: var(--paper-dim); line-height: 1.7; margin: 0 0 10px; }
.lab-rep__ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; font-size: 14px; }
.lab-rep__ul li { padding-left: 14px; position: relative; }
.lab-rep__ul li::before { content: "·"; position: absolute; left: 2px; color: var(--blue, #A9D4F5); font-weight: 800; }
.lab-rep__ul b { color: var(--paper); }
.lab-rep__foot { font-size: 12px; color: var(--paper-dim); border-top: 1px solid var(--line, rgba(255,255,255,.1)); padding-top: 14px; margin-top: 10px; line-height: 1.6; }
@media (max-width: 640px) {
  .lab-rep__kpi { grid-template-columns: repeat(2, 1fr); }
  .lab-rep__bar { grid-template-columns: 110px 1fr 40px; gap: 8px; }
  .lab-rep__barlab { font-size: 12.5px; }
}
