@charset "UTF-8";
/* ps-mypage.css — 대민 마이페이지 (psView 스코프). ps-tokens.css 토큰 사용.
   프리미티브(.ps-eyebrow 등)는 ps-tokens.css 공용. 여기선 마이페이지 전용 레이아웃만. */

.ps-my { min-height: 70vh; background: var(--ps-paper); }

/* ── 헤더 (이름 + 내 역할) ── */
.ps-my-head { border-bottom: 1px solid var(--ps-ink); padding: 24px var(--ps-gutter); }
.ps-my-head-row {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 24px; flex-wrap: wrap;
}
.ps-my-greet .ps-eyebrow { margin: 0 0 6px; color: var(--ps-mute-700); }
.ps-my-name {
  margin: 0; font-weight: 900; letter-spacing: -0.02em; line-height: 1;
  font-size: clamp(1.75rem, 1.2rem + 2vw, 2.25rem);
}
/* 마이페이지 > 이름 옆 작은 역할 뱃지 */
.ps-my-name .ps-my-role-tag {
  display: inline-flex; align-items: center; vertical-align: middle;
  margin-left: 10px; padding: 4px 8px; border: 1px solid var(--ps-ink);
  font-size: 11px; font-weight: 800; letter-spacing: 0.06em; line-height: 1;
  color: var(--ps-ink); background: transparent; white-space: nowrap;
}
.ps-my-role { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ps-my-role > .ps-eyebrow { margin: 0; color: var(--ps-mute-700); }

.ps-my-roleseg { display: inline-flex; align-items: stretch; border: 1px solid var(--ps-ink); }
.ps-my-rolepill {
  display: inline-flex; align-items: center; gap: 8px;
  height: 36px; padding: 0 16px; background: transparent; border: 0;
  color: var(--ps-ink); text-decoration: none;
  font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.12em;
  white-space: nowrap; transition: background 140ms ease, color 140ms ease;
}
button.ps-my-rolepill, a.ps-my-rolepill { cursor: pointer; }
button.ps-my-rolepill:hover { background: rgba(10, 10, 10, 0.05); }
.ps-my-rolepill.is-active { background: var(--ps-ink); color: var(--ps-paper); }
.ps-my-rolepill.is-active:hover { background: var(--ps-ink); }
.ps-my-rolepill.is-apply { color: var(--ps-mute-500); }
.ps-my-rolepill.is-apply:hover { color: var(--ps-ink); background: rgba(10, 10, 10, 0.05); }
.ps-my-rolepill.is-apply.is-active { color: var(--ps-paper); }
.ps-my-rolepill.is-apply.is-active:hover { color: var(--ps-paper); }
.ps-my-rolepill:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: -2px; }
.ps-my-rolepill .badge {
  font-size: 11px; letter-spacing: 0.14em; line-height: 1;
  border: 1px solid currentColor; padding: 3px 5px;
}

/* ── 본문 (사이드 네비 + 메인) ── */
.ps-my-body { padding: 32px var(--ps-gutter); }
.ps-my-grid { display: grid; gap: 32px; grid-template-columns: 1fr; }
@media (min-width: 768px) { .ps-my-grid { grid-template-columns: 220px 1fr; gap: 40px; } }

/* 사이드 네비 */
.ps-my-side { min-width: 0; }
@media (min-width: 768px) { .ps-my-side { position: sticky; top: 88px; align-self: start; } }
.ps-my-nav {
  display: flex; flex-direction: row; gap: 0;
  overflow-x: auto; border-bottom: 1px solid var(--ps-ink);
}
@media (min-width: 768px) {
  .ps-my-nav { flex-direction: column; overflow: visible; border-bottom: 0; }
}
.ps-my-navitem {
  flex-shrink: 0; display: inline-flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 10px 12px; font-size: 14px; font-weight: 700; letter-spacing: 0.02em;
  color: var(--ps-ink); text-decoration: none; white-space: nowrap;
  transition: background 140ms ease, color 140ms ease;
}
@media (min-width: 768px) {
  .ps-my-navitem { width: 100%; border-bottom: 1px solid rgba(10, 10, 10, 0.1); }
}
a.ps-my-navitem:hover { background: var(--ps-mute-50); }
.ps-my-navitem.is-current { background: var(--ps-ink); color: var(--ps-paper); }
.ps-my-navitem.is-current .dot { color: var(--ps-accent); font-size: 10px; }
.ps-my-navitem.is-soon { color: var(--ps-mute-500); cursor: default; }
.ps-my-navitem .soon {
  font-size: 10px; font-weight: 700; letter-spacing: 0.08em;
  color: var(--ps-mute-500); border: 1px solid currentColor; padding: 1px 4px;
}
.ps-my-navitem:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: -2px; }
.ps-my-navitem .ext { color: var(--ps-mute-500); font-size: 12px; }
a.ps-my-navitem:hover .ext { color: var(--ps-ink); }

/* 작업대 그룹 구분선 + 라벨 */
.ps-my-navsep { flex-shrink: 0; }
.ps-my-navlabel {
  flex-shrink: 0; margin: 0; padding: 0 12px 6px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.16em; color: var(--ps-mute-500);
}
/* 모바일(가로 스크롤): 세로 구분선 / 데스크톱(세로): 가로 구분선 + 라벨 노출 */
.ps-my-navsep { align-self: stretch; border-left: 1px solid rgba(10, 10, 10, 0.2); }
.ps-my-navlabel { display: none; }
@media (min-width: 768px) {
  .ps-my-navsep { align-self: auto; border-left: 0; border-top: 1px solid rgba(10, 10, 10, 0.2); margin: 12px 0; }
  .ps-my-navlabel { display: block; }
}

/* 메인 */
.ps-my-main { min-width: 0; }
.ps-my-next { margin-bottom: 32px; }
.ps-my-next .ps-eyebrow { margin: 0 0 8px; }
.ps-my-next h2 {
  margin: 0; font-weight: 900; letter-spacing: -0.02em; line-height: 1.1;
  font-size: clamp(1.5rem, 1.1rem + 1.4vw, 1.875rem);
}
.ps-my-next .lead { margin: 10px 0 0; max-width: 60ch; font-size: 14px; line-height: 1.6; color: var(--ps-mute-700); }

/* 카드 */
.ps-my-cards { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 640px) { .ps-my-cards { grid-template-columns: 1fr 1fr; } }
.ps-my-card { display: block; border: 1px solid var(--ps-ink); padding: 24px; text-decoration: none; color: var(--ps-ink); }
a.ps-my-card { transition: background 140ms ease, color 140ms ease; }
a.ps-my-card:hover { background: var(--ps-ink); color: var(--ps-paper); }
a.ps-my-card:hover .ps-my-card-desc { color: rgba(255, 255, 255, 0.8); }
a.ps-my-card:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }
.ps-my-card-tit { margin: 0; font-size: 18px; font-weight: 800; letter-spacing: -0.01em; }
.ps-my-card-desc { margin: 8px 0 0; font-size: 14px; line-height: 1.6; color: var(--ps-mute-700); }

.ps-my-card.is-note { border-style: dashed; border-color: var(--ps-mute-400); background: var(--ps-mute-50); }
.ps-my-card.is-note .ps-my-card-tit { color: var(--ps-mute-700); }
.ps-my-card.is-note .ps-my-card-desc { color: var(--ps-mute-500); }

/* 하단 스트립 */
.ps-my-foot {
  margin-top: 24px; border-top: 1px solid var(--ps-mute-200); padding-top: 24px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}
.ps-my-foot p { margin: 0; font-size: 13px; color: var(--ps-mute-500); }
.ps-my-foot .ps-my-btn {
  flex-shrink: 0; text-decoration: none; font-size: 12px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.12em;
  border: 1px solid var(--ps-ink); color: var(--ps-ink); padding: 8px 16px;
  transition: background 140ms ease, color 140ms ease;
}
.ps-my-foot .ps-my-btn:hover { background: var(--ps-ink); color: var(--ps-paper); }
.ps-my-foot .ps-my-btn:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }

/* 이미 건축사 회원일 때 간단 안내 */
.ps-my-welcome { border: 1px solid var(--ps-mute-200); background: var(--ps-mute-50); padding: 24px; }
.ps-my-welcome p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--ps-mute-700); }

/* ── 건축사사무소 등록 마법사 (promotions) ── */
.ps-promo { max-width: 56rem; display: flex; flex-direction: column; gap: 40px; }
.ps-promo-head .ps-eyebrow { margin: 0 0 8px; }
.ps-promo-title { margin: 0; font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2rem); line-height: 1.05; text-transform: uppercase; letter-spacing: -0.01em; }
.ps-promo-lead { margin: 10px 0 0; max-width: 60ch; font-size: var(--ps-fs-body); line-height: 1.6; color: var(--ps-mute-700); }

.ps-promo-wiz { width: 100%; max-width: 36rem; margin: 0 auto; }
.ps-promo-bar { height: 4px; width: 100%; background: var(--ps-mute-100); }
.ps-promo-bar-fill { height: 100%; background: var(--ps-accent); transition: width 500ms ease-out; }

.ps-promo-steps { padding: 24px 4px 40px; min-height: 460px; }
.ps-promo-step { display: none; flex-direction: column; }
.ps-promo-step.is-active { display: flex; }
.ps-promo-q { margin: 0; font-size: 24px; font-weight: 800; line-height: 1.2; letter-spacing: -0.02em; word-break: keep-all; }
.ps-promo-sub { margin: 8px 0 0; font-size: 15px; line-height: 1.6; color: var(--ps-mute-700); word-break: keep-all; }

/* ── STEP 0: 어떤 소속인가 (2026-09-21) ──
   건축사사무소(기업 자격)와 그 외 소속(전문가 개인 자격)을 먼저 가른다.
   ⚠ 두 카드는 같은 무게로 보여야 한다. 한쪽을 강조하면 '그 외 소속' 인 사람이
     자기 자리가 아니라고 느끼고 건축사사무소 쪽으로 새는데, 그게 바로 막으려던 일이다. */
.ps-promo-paths { margin-top: 28px; display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 720px) { .ps-promo-paths { grid-template-columns: 1fr 1fr; } }
.ps-promo-path {
  position: relative; display: block; text-align: left; cursor: pointer;
  border: 1px solid var(--ps-ink); background: var(--ps-paper);
  padding: 22px 22px 46px; font: inherit; color: var(--ps-ink);
  transition: background 140ms ease, color 140ms ease;
}
.ps-promo-path:hover { background: var(--ps-ink); color: var(--ps-paper); }
.ps-promo-path:hover .pt-desc { color: rgba(255,255,255,0.8); }
.ps-promo-path:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 2px; }
.ps-promo-path .pt-tit {
  display: block; font-size: 18px; font-weight: 800; letter-spacing: -0.01em; word-break: keep-all;
}
.ps-promo-path .pt-desc {
  display: block; margin-top: 8px; font-size: 14px; line-height: 1.6;
  color: var(--ps-mute-700); word-break: keep-all;
}
.ps-promo-path .pt-arw {
  position: absolute; left: 22px; bottom: 18px; font-size: 18px; line-height: 1;
}

.ps-promo-field { margin-top: 28px; }
.ps-promo-input {
  width: 100%; border: 0; border-bottom: 2px solid var(--ps-ink); background: transparent;
  padding: 12px 0; font-size: 18px; font-weight: 700; outline: none; color: var(--ps-ink);
}
.ps-promo-input::placeholder { font-weight: 400; color: var(--ps-mute-500); }
/* [KWCAG] 포커스 시 밑줄을 라임(1.15:1)으로 바꾸면 오히려 표시가 사라진다.
   ink 밑줄은 유지하고 --ps-focus 아웃라인을 얹는다. */
.ps-promo-input:focus { outline: 2px solid var(--ps-focus); outline-offset: 2px; }

.ps-promo-results {
  list-style: none; margin: 16px 0 0; padding: 0 4px 0 0; display: flex; flex-direction: column; gap: 8px;
  max-height: 320px; overflow-y: auto;
}
.ps-promo-result { margin: 0; }
.ps-promo-pick {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  text-align: left; cursor: pointer;
  border: 1px solid var(--ps-mute-200); background: var(--ps-paper); padding: 16px;
  transition: border-color 140ms ease, background 140ms ease;
}
.ps-promo-pick:hover { border-color: var(--ps-ink); background: var(--ps-mute-50); }
.ps-promo-pick:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }
.ps-promo-pick .nm { font-weight: 700; color: var(--ps-ink); }

/* 배지: 첫 등록 가능(라임) / 관리자 있음(회색) / 대학=전문가 경로(반전) */
.ps-promo-badge {
  flex-shrink: 0; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  padding: 2px 8px; white-space: nowrap;
}
.ps-promo-badge.is-first { background: var(--ps-accent); color: var(--ps-ink); }
.ps-promo-badge.is-mgr   { background: var(--ps-mute-100); color: var(--ps-mute-700); }
/* 대학 — 사무소(기업)와 다른 경로임을 한눈에 구분. ink 배경이라 라임/회색 배지와 섞이지 않는다 */
.ps-promo-badge.is-univ  { background: var(--ps-ink); color: var(--ps-paper); }
.ps-promo-result.is-univ .ps-promo-pick { border-left: 3px solid var(--ps-ink); }

/* 목록에 없어요 — 신규 등록 */
.ps-promo-newoffice {
  margin-top: 12px; width: 100%; text-align: left; cursor: pointer;
  border: 1px dashed var(--ps-mute-300); background: transparent; padding: 16px;
  font-size: 14px; font-weight: 600; color: var(--ps-mute-700);
  transition: border-color 140ms ease, color 140ms ease;
}
.ps-promo-newoffice:hover { border-color: var(--ps-ink); color: var(--ps-ink); }
.ps-promo-newoffice[hidden] { display: none; }

/* ── step 2 (위치 선택 / 직원 요청폼) ── */
.ps-promo-backlink {
  margin-bottom: 24px; display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  background: transparent; border: 0; padding: 0;
  font-size: 14px; font-weight: 700; color: var(--ps-mute-700);
}
.ps-promo-backlink:hover { color: var(--ps-ink); }
.ps-promo-s2 { display: flex; flex-direction: column; }

/* 위치 선택 (대표/직원) */
.ps-promo-choices { margin-top: 28px; display: flex; flex-direction: column; gap: 12px; }
.ps-promo-choice {
  width: 100%; text-align: left; cursor: pointer;
  border: 1px solid var(--ps-mute-200); background: var(--ps-paper); padding: 20px;
  transition: border-color 140ms ease, background 140ms ease;
}
.ps-promo-choice:hover { border-color: var(--ps-ink); background: var(--ps-mute-50); }
.ps-promo-choice:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }
.ps-promo-choice .row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ps-promo-choice .t { font-size: 16px; font-weight: 800; color: var(--ps-ink); }
.ps-promo-choice .arw { color: var(--ps-mute-500); transition: color 140ms ease; }
.ps-promo-choice:hover .arw { color: var(--ps-ink); }
.ps-promo-choice .d { display: block; margin-top: 6px; font-size: 14px; line-height: 1.45; color: var(--ps-mute-700); }

/* 직원 요청폼 (관리자 있는 사무소) */
.ps-promo-infobox {
  margin-top: 28px; border: 1px solid var(--ps-ink); background: var(--ps-mute-50); padding: 20px;
  font-size: 14px; line-height: 1.6; color: var(--ps-mute-700);
}
.ps-promo-flabel { display: block; margin-top: 20px; }
.ps-promo-flabel .lb { display: block; font-size: 14px; font-weight: 700; color: var(--ps-ink); }
.ps-promo-flabel .hlp { display: block; margin-top: 6px; font-size: 13px; color: var(--ps-mute-500); }
.ps-promo-tin, .ps-promo-tarea {
  margin-top: 8px; width: 100%; border: 1px solid var(--ps-mute-300); background: var(--ps-paper);
  font-family: inherit; font-size: 14px; color: var(--ps-ink); outline: none;
}
.ps-promo-tin { padding: 10px; }
.ps-promo-tarea { padding: 12px; line-height: 1.6; resize: none; }
.ps-promo-tin:focus, .ps-promo-tarea:focus { border-color: var(--ps-ink); }
.ps-promo-tin::placeholder, .ps-promo-tarea::placeholder { color: var(--ps-mute-500); }
/* 주소 검색 — 입력칸 + 검색 버튼 한 줄. 직접 입력도 되므로 평범한 입력칸 모습으로 둔다 */
.ps-promo-addr { display: flex; gap: 8px; align-items: stretch; }
.ps-promo-addr .ps-promo-tin { flex: 1; }
.ps-promo-addr-btn {
  margin-top: 8px; flex-shrink: 0; border: 1px solid var(--ps-ink); background: var(--ps-ink);
  color: var(--ps-paper); padding: 10px 16px; font-family: inherit; font-size: 13px; font-weight: 700;
  white-space: nowrap; cursor: pointer;
}
.ps-promo-addr-btn:hover { background: var(--ps-mute-700); border-color: var(--ps-mute-700); }
.ps-promo-submit {
  margin-top: 32px; width: 100%; cursor: pointer; border: 0;
  background: var(--ps-ink); color: var(--ps-paper); padding: 14px;
  font-size: 14px; font-weight: 700; transition: opacity 140ms ease;
}
.ps-promo-submit:hover { opacity: 0.9; }
.ps-promo-submit:disabled { cursor: not-allowed; opacity: 0.3; }

/* 서류 업로드 (step 3) */
.ps-promo-files { margin-top: 12px; display: flex; flex-direction: column; gap: 12px; }
.ps-promo-file {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer;
  border: 1px solid var(--ps-mute-200); padding: 16px; transition: border-color 140ms ease;
}
.ps-promo-file:hover { border-color: var(--ps-ink); }
.ps-promo-file .fl-col { display: flex; flex-direction: column; min-width: 0; }
.ps-promo-file .fl-nm { font-size: 14px; font-weight: 700; color: var(--ps-ink); }
.ps-promo-file .fl-hint { margin-top: 2px; font-size: 12px; color: var(--ps-mute-500); }
.ps-promo-file .fl-file { margin-top: 2px; font-size: 13px; color: var(--ps-mute-700); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-promo-file .fl-pick {
  flex-shrink: 0; border: 1px solid var(--ps-ink); padding: 6px 12px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--ps-ink);
  white-space: nowrap;
}
/* 파일 input: 화면에서만 숨김(sr-only) — Tab 포커스는 받음 */
.fl-sr {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
/* input 이 포커스되면 파일 선택 버튼에 포커스 링 표시 */
.ps-promo-file:focus-within { border-color: var(--ps-ink); }
.ps-promo-file:focus-within .fl-pick {
  outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px;
  background: var(--ps-ink); color: var(--ps-paper);
}

/* step 4 (완료) */
.ps-promo-done {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; min-height: 420px;
}
.ps-promo-check {
  margin-bottom: 20px; display: inline-flex; align-items: center; justify-content: center;
  width: 56px; height: 56px; border-radius: 50%;
  background: var(--ps-accent); color: var(--ps-ink); font-size: 24px; font-weight: 900;
}
.ps-promo-donetit { margin: 0; font-size: 24px; font-weight: 800; letter-spacing: -0.02em; }
.ps-promo-donemsg { margin: 12px 0 0; max-width: 42ch; font-size: 15px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-promo-donememo {
  margin: 16px 0 0; max-width: 42ch; text-align: left; font-size: 14px; font-style: italic;
  line-height: 1.6; color: var(--ps-mute-700); border-left: 2px solid var(--ps-accent); padding-left: 12px;
}
.ps-promo-doneacts { margin-top: 32px; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px; }
.ps-promo-donebtn {
  text-decoration: none; padding: 10px 20px;
  font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  transition: background 140ms ease, color 140ms ease, opacity 140ms ease;
}
.ps-promo-donebtn.is-ghost { border: 1px solid var(--ps-ink); color: var(--ps-ink); }
.ps-promo-donebtn.is-ghost:hover { background: var(--ps-ink); color: var(--ps-paper); }
.ps-promo-donebtn.is-solid { background: var(--ps-ink); color: var(--ps-paper); }
.ps-promo-donebtn.is-solid:hover { opacity: 0.9; }

/* ── 내 신청 내역 ── */
.ps-promo-hist { margin-top: 8px; }
.ps-promo-histtit {
  margin: 0 0 16px; padding-bottom: 8px; border-bottom: 1px solid var(--ps-ink);
  font-size: clamp(1.125rem, 0.95rem + 0.6vw, 1.375rem); font-weight: 800; letter-spacing: -0.01em;
}
.ps-promo-histlist { list-style: none; margin: 0; padding: 0; }
.ps-promo-histrow {
  display: grid; grid-template-columns: 1fr; gap: 6px; padding: 16px 0;
  border-top: 1px solid var(--ps-mute-300);
}
.ps-promo-histrow:first-child { border-top: 0; }
@media (min-width: 768px) {
  .ps-promo-histrow { grid-template-columns: 2fr 2fr 3fr 5fr; gap: 8px; align-items: start; }
}
.ps-promo-histrow .hr-type {
  justify-self: start; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em;
  border: 1px solid var(--ps-ink); padding: 2px 8px;
}
.ps-promo-histrow .hr-date { font-size: 14px; color: var(--ps-mute-700); }
.ps-promo-histrow .hr-sts { display: flex; flex-direction: column; gap: 2px; }
.ps-promo-histrow .hr-sts-lab { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; }
.ps-promo-histrow .hr-sts-lab.is-wait { color: var(--ps-ink); }
.ps-promo-histrow .hr-sts-lab.is-ok   { color: #2e7d32; }
.ps-promo-histrow .hr-sts-lab.is-no   { color: #c62828; }
.ps-promo-histrow .hr-sts-by { font-size: 12px; color: var(--ps-mute-700); }
.ps-promo-histrow .hr-desc {
  font-size: 14px; line-height: 1.5; color: var(--ps-mute-700);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
/* 반려 사유 / 추가자료 요청 — 행 전체 폭으로 아래에 노출 */
.ps-promo-histrow .hr-reason {
  font-size: 13px; line-height: 1.6; color: var(--ps-ink);
  background: var(--ps-mute-100); border-left: 3px solid #c62828; padding: 10px 12px;
}
.ps-promo-histrow .hr-reason.is-addl { border-left-color: var(--ps-ink); }
.ps-promo-histrow .hr-reason b { font-weight: 800; margin-right: 6px; }
@media (min-width: 768px) { .ps-promo-histrow .hr-reason { grid-column: 1 / -1; } }

/* ── 홈 대시보드 ── */
.ps-home { display: flex; flex-direction: column; gap: 40px; }
.ps-home-hero-wrap > .ps-eyebrow { margin: 0 0 12px; }
.ps-home-hero {
  border: 1px solid var(--ps-ink); background: var(--ps-paper);
  padding: 28px; display: grid; grid-template-columns: 1fr; gap: 20px; align-items: end;
}
@media (min-width: 768px) { .ps-home-hero { grid-template-columns: 1fr auto; padding: 40px; } }
.ps-home-hero.is-accent { background: var(--ps-accent); }
.ps-home-hero .hero-body { max-width: 42rem; }
.ps-home-hero .hero-tit {
  margin: 0; font-weight: 900; letter-spacing: -0.02em; line-height: 0.98; color: var(--ps-ink);
  font-size: clamp(1.75rem, 1.2rem + 2.2vw, 3rem);
}
.ps-home-hero .hero-desc { margin: 14px 0 0; font-size: 16px; line-height: 1.6; color: var(--ps-ink); opacity: 0.85; }
.ps-home-hero .hero-cta {
  flex-shrink: 0; display: inline-flex; align-items: center; white-space: nowrap; text-decoration: none;
  background: var(--ps-ink); color: var(--ps-paper); padding: 12px 20px;
  font-size: 14px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em;
  transition: opacity 140ms ease;
}
.ps-home-hero .hero-cta:hover { opacity: 0.9; }
.ps-home-hero .hero-cta:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }

/* 통계 3열 */
.ps-home-stats { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--ps-ink); border-bottom: 1px solid var(--ps-ink); }
.ps-home-stats .stat { padding: 20px 16px; }
.ps-home-stats .stat + .stat { border-left: 1px solid var(--ps-ink); }
.ps-home-stats .stat-lab { margin: 0; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ps-mute-700); }
.ps-home-stats .stat-num { margin: 8px 0 0; font-size: 28px; font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink); }
.ps-home-stats .stat-num.is-soon { color: var(--ps-mute-500); }
.ps-home-stats .stat-link { display: inline-block; color: inherit; text-decoration: none; }
.ps-home-stats .stat-link:hover .stat-num,
.ps-home-stats .stat-link:focus-visible .stat-num { text-decoration: underline; text-underline-offset: 4px; }
.ps-home-stats .stat-unit { margin-left: 4px; font-size: 13px; font-weight: 700; color: var(--ps-mute-700); }
.ps-home-stats .stat-soon { margin-left: 8px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ps-mute-500); vertical-align: middle; }

/* 블록(알림/내활동) */
.ps-home-block { }
.ps-home-blockhd { border-bottom: 1px solid var(--ps-ink); padding-bottom: 8px; margin-bottom: 12px; }
.ps-home-blockhd h2 { margin: 0; font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.12em; color: var(--ps-ink); }
.ps-home-badge {
  display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px;
  background: var(--ps-accent); color: var(--ps-ink); font-size: 11px; font-weight: 900; border-radius: 9px; vertical-align: middle;
}
.ps-home-empty { margin: 0; padding: 8px 0; font-size: 14px; color: var(--ps-mute-500); }

.ps-home-notilist { list-style: none; margin: 0; padding: 0; }
.ps-home-notilist .noti { display: flex; align-items: flex-start; gap: 12px; padding: 12px 0; border-top: 1px solid rgba(10, 10, 10, 0.1); }
.ps-home-notilist .noti:first-child { border-top: 0; }
.ps-home-notilist .noti .dot { margin-top: 7px; flex-shrink: 0; width: 6px; height: 6px; border-radius: 50%; background: var(--ps-accent); }
.ps-home-notilist .noti.is-read .dot { background: var(--ps-mute-300); }
.ps-home-notilist .noti-body { min-width: 0; flex: 1; }
.ps-home-notilist .noti-tit { margin: 0; font-size: 14px; line-height: 1.4; color: var(--ps-ink); }
.ps-home-notilist .noti-dt { margin: 4px 0 0; font-size: 12px; color: var(--ps-mute-500); }

/* 블록 헤더 — 우측 링크 있는 변형 */
.ps-home-blockhd.is-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ps-home-more {
  text-decoration: none; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--ps-mute-700); text-underline-offset: 4px;
}
.ps-home-more:hover { color: var(--ps-ink); text-decoration: underline; }

/* 북마크 목록 */
.ps-home-bmlist { list-style: none; margin: 0; padding: 0; }
.ps-home-bmlist > li { border-top: 1px solid rgba(10, 10, 10, 0.1); }
.ps-home-bmlist > li:first-child { border-top: 0; }
.ps-home-bmlist .bm { display: flex; align-items: baseline; gap: 12px; padding: 10px 0; text-decoration: none; }
.ps-home-bmlist .bm-cat { flex-shrink: 0; width: 72px; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ps-mute-700); }
.ps-home-bmlist .bm-tit { flex: 1; min-width: 0; font-size: 14px; font-weight: 700; color: var(--ps-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-home-bmlist .bm:hover .bm-tit { text-decoration: underline; text-underline-offset: 4px; }

/* 알림 + 내활동 2단 */
.ps-home-2col { display: grid; grid-template-columns: 1fr; gap: 32px; }
@media (min-width: 768px) { .ps-home-2col { grid-template-columns: 1fr 1fr; } }

/* 내 활동 목록 */
.ps-home-actlist { list-style: none; margin: 0; padding: 0; }
.ps-home-actlist > li { border-top: 1px solid rgba(10, 10, 10, 0.1); }
.ps-home-actlist > li:first-child { border-top: 0; }
.ps-home-actlist .act { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; text-decoration: none; }
.ps-home-actlist .act-lab { font-size: 14px; font-weight: 700; color: var(--ps-ink); }
.ps-home-actlist .act:hover .act-lab { text-decoration: underline; text-underline-offset: 4px; }
.ps-home-actlist .act-num { font-size: 22px; font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink); font-variant-numeric: tabular-nums; }

/* ── 우리 사무소 관리 ── */
.ps-ofc-none { max-width: 60ch; }
.ps-ofc-none .ps-eyebrow { margin: 0 0 8px; }
.ps-ofc-none h2 { margin: 0; font-size: clamp(1.5rem, 1.1rem + 1.2vw, 2rem); font-weight: 900; letter-spacing: -0.02em; }
.ps-ofc-none .lead { margin: 12px 0 20px; font-size: 15px; line-height: 1.6; color: var(--ps-mute-700); }

.ps-ofc-grid { display: grid; grid-template-columns: 1fr; gap: 32px; max-width: 72rem; }
@media (min-width: 1024px) { .ps-ofc-grid { grid-template-columns: 2fr 1fr; gap: 40px; } }
.ps-ofc-main { min-width: 0; display: flex; flex-direction: column; gap: 32px; }
.ps-ofc-aside { display: flex; flex-direction: column; gap: 24px; }
/* 사이드(등급안내·서류함)는 스크롤 시 상단 고정 */
@media (min-width: 1024px) { .ps-ofc-aside { position: sticky; top: 88px; align-self: start; } }

.ps-ofc-head .ps-eyebrow { margin: 0 0 10px; }
.ps-ofc-lead { margin: 0; max-width: 60ch; font-size: 15px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-ofc-badge { margin: 16px 0 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ps-ofc-badge .lb { font-size: 12px; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ps-mute-700); }
.ps-ofc-badge .nm { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; border: 1px solid var(--ps-ink); padding: 3px 8px; }

.ps-ofc-card { border: 1px solid var(--ps-ink); padding: 24px; display: flex; flex-direction: column; gap: 20px; }
.ps-ofc-cardhd { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.ps-ofc-cardhd .ps-eyebrow { margin: 0; }
.ps-ofc-cardhd .muted { font-size: 12px; text-transform: uppercase; letter-spacing: 0.12em; color: var(--ps-mute-500); }

.ps-ofc-logo { display: flex; align-items: flex-start; gap: 20px; }
.ps-ofc-logo .logo-box {
  flex-shrink: 0; width: 80px; height: 80px; border: 1px solid var(--ps-ink); background: var(--ps-mute-50);
  display: grid; place-items: center; font-size: 12px; font-weight: 800; letter-spacing: 0.14em; color: var(--ps-mute-700);
}
.ps-ofc-logo .logo-desc .t { margin: 0; font-size: 14px; font-weight: 700; }
.ps-ofc-logo .logo-desc .d { margin: 6px 0 0; font-size: 13px; line-height: 1.5; color: var(--ps-mute-700); }

.ps-ofc-field { display: flex; flex-direction: column; }
.ps-ofc-field .lb { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ps-mute-700); }
.ps-ofc-field .in, .ps-ofc-field .ta {
  margin-top: 8px; width: 100%; border: 1px solid var(--ps-mute-300); background: var(--ps-paper);
  padding: 8px 12px; font-family: inherit; font-size: 14px; line-height: 1.5; color: var(--ps-ink); outline: none;
}
.ps-ofc-field .ta { line-height: 1.6; resize: vertical; }
.ps-ofc-field .in:focus, .ps-ofc-field .ta:focus { border-color: var(--ps-ink); }
.ps-ofc-field .hlp { margin-top: 6px; font-size: 12px; color: var(--ps-mute-500); }
/* 주소 검색 — 입력칸 + 검색 버튼 한 줄. 직접 입력도 되므로 평범한 입력칸 모습으로 둔다 */
.ps-ofc-addr { display: flex; gap: 8px; align-items: stretch; }
.ps-ofc-addr .in { flex: 1; }
.ps-ofc-addr-btn {
  margin-top: 8px; flex-shrink: 0; border: 1px solid var(--ps-ink); background: var(--ps-ink);
  color: var(--ps-paper); padding: 8px 16px; font-family: inherit; font-size: 13px; font-weight: 700;
  white-space: nowrap; cursor: pointer;
}
.ps-ofc-addr-btn:hover { background: var(--ps-mute-700); border-color: var(--ps-mute-700); }
.ps-ofc-fgrid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 640px) { .ps-ofc-fgrid { grid-template-columns: 1fr 1fr; } .ps-ofc-field-full { grid-column: 1 / -1; } }

.ps-ofc-cardfoot { display: flex; justify-content: flex-end; gap: 12px; border-top: 1px solid var(--ps-mute-200); padding-top: 16px; }
.ps-ofc-btn { cursor: pointer; border: 1px solid var(--ps-ink); padding: 8px 16px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; transition: background 140ms, color 140ms, opacity 140ms; }
.ps-ofc-btn.is-solid { background: var(--ps-ink); color: var(--ps-paper); }
.ps-ofc-btn.is-solid:hover { opacity: 0.9; }
.ps-ofc-btn.is-ghost { background: transparent; color: var(--ps-ink); }
.ps-ofc-btn.is-ghost:hover { background: var(--ps-ink); color: var(--ps-paper); }
.ps-ofc-btn:disabled { opacity: 0.4; cursor: not-allowed; }

.ps-ofc-note { margin: 0; font-size: 13px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-ofc-empty { margin: 0; font-size: 14px; color: var(--ps-mute-500); }
.soon { display: inline-block; margin-left: 6px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ps-mute-500); border: 1px solid var(--ps-mute-300); padding: 1px 5px; }

.ps-ofc-block { }
.ps-ofc-blockhd { margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1px solid var(--ps-ink); font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.12em; }

.ps-ofc-mbrlist, .ps-ofc-reqlist { list-style: none; margin: 0; padding: 0; }
/* 멤버 목록 — 배포본: 목록 위 border-top + 항목 사이 divide, 이름·직책 가로 baseline */
.ps-ofc-mbrlist { border-top: 1px solid var(--ps-mute-200); }
.ps-ofc-mbrlist .mbr { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--ps-mute-200); }
/* HTML hidden 속성이 위 display:flex 에 밀리지 않도록 — 멤버 필터(전체/최고/중간/일반)가 이걸로 숨긴다 */
.ps-ofc-mbrlist .mbr[hidden] { display: none; }
.ps-ofc-mbrlist .mbr-id { min-width: 0; display: flex; align-items: baseline; gap: 8px; }
.ps-ofc-mbrlist .mbr-id .nm { font-weight: 700; letter-spacing: -0.01em; color: var(--ps-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-ofc-mbrlist .mbr-id .job { flex-shrink: 0; font-size: 13px; color: var(--ps-mute-500); }
.ps-ofc-mbrlist .mbr-role.is-master { flex-shrink: 0; font-size: 13px; font-weight: 700; color: var(--ps-mute-500); }
.ps-ofc-mbrlist .mbr-sel { flex-shrink: 0; border: 1px solid var(--ps-mute-300); background: var(--ps-paper); padding: 6px 8px; font-size: 13px; font-weight: 700; outline: none; cursor: pointer; }
.ps-ofc-mbrlist .mbr-sel:focus { border-color: var(--ps-ink); }

.ps-ofc-reqlist .req { padding: 12px 0; border-top: 1px solid var(--ps-mute-200); }
.ps-ofc-reqlist .req:first-child { border-top: 0; }
.ps-ofc-reqlist .req-main { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ps-ofc-reqlist .req-memo { margin: 8px 0 0; padding-left: 12px; border-left: 2px solid var(--ps-accent); font-size: 13px; font-style: italic; line-height: 1.55; color: var(--ps-mute-700); }
.ps-ofc-reqlist .req-id { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ps-ofc-reqlist .req-id .nm { font-weight: 700; color: var(--ps-ink); }
.ps-ofc-reqlist .req-id .sub { font-size: 13px; color: var(--ps-mute-500); }
.ps-ofc-reqlist .req-acts { flex-shrink: 0; display: flex; gap: 8px; }
.ps-ofc-reqlist .req-acts .ps-ofc-btn { padding: 6px 12px; }
/* 처리 결과 라벨(승인됨/반려됨) — 승인/반려 탭 및 처리 직후 */
.ps-ofc-reqlist .req-state {
  flex-shrink: 0; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  padding: 4px 10px; border: 1px solid currentColor;
}
.ps-ofc-reqlist .req-state.is-ok { color: #2e7d32; }
.ps-ofc-reqlist .req-state.is-no { color: #c62828; }
.ps-ofc-reqlist .req.is-done .req-id .nm { color: var(--ps-mute-700); }

.ps-ofc-guide { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 18px; }
.ps-ofc-guide .t { margin: 0; font-size: 14px; font-weight: 800; letter-spacing: -0.01em; }
.ps-ofc-guide .d { margin: 4px 0 0; font-size: 13px; line-height: 1.55; color: var(--ps-mute-700); }
.ps-ofc-asidetit { margin: 0; font-size: 16px; font-weight: 800; letter-spacing: -0.01em; }
.ps-ofc-docs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.ps-ofc-docs > li { display: flex; align-items: center; justify-content: space-between; gap: 12px; border: 1px solid var(--ps-mute-200); padding: 12px 14px; }
.ps-ofc-docs .dn { font-size: 14px; font-weight: 700; }
.ps-ofc-docs .ds { font-size: 13px; color: var(--ps-mute-500); }

/* 서류함 — 배포본 박스 형태 */
.ps-ofc-doclist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.ps-ofc-doclist .doc { display: flex; align-items: center; justify-content: space-between; gap: 12px; border: 1px solid var(--ps-mute-200); padding: 16px; }
.ps-ofc-doclist .doc-info { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ps-ofc-doclist .doc-nm { font-size: 14px; font-weight: 700; color: var(--ps-ink); }
.ps-ofc-doclist .doc-st { font-size: 13px; color: var(--ps-mute-700); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ps-ofc-doclist .doc-st.is-set { color: var(--ps-ink); font-weight: 600; }
.ps-ofc-doc-up {
  flex-shrink: 0; cursor: pointer; border: 1px solid var(--ps-ink); color: var(--ps-ink);
  padding: 6px 12px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  transition: background 140ms, color 140ms;
}
.ps-ofc-doc-up:hover { background: var(--ps-ink); color: var(--ps-paper); }
/* 파일 input 포커스 시 올리기/교체 버튼에 포커스 링 (웹접근성) */
.ps-ofc-doc-up:focus-within { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; background: var(--ps-ink); color: var(--ps-paper); }
.ps-ofc-btn2.is-file:focus-within { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; border-color: var(--ps-ink); }

/* 우리 사무소 관리 — 추가 UI (로고 버튼 / 멤버 검색·칩 / 요청 탭) */
.ps-ofc-lead br { display: block; content: ""; }
.ps-ofc-logo .logo-acts { margin-top: 8px; }
.ps-ofc-btn2 { cursor: pointer; border: 1px solid var(--ps-mute-300); background: transparent; color: var(--ps-ink); padding: 5px 10px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; }
.ps-ofc-btn2:hover:not(:disabled) { border-color: var(--ps-ink); }
.ps-ofc-btn2:disabled { opacity: 0.5; cursor: not-allowed; }
.ps-ofc-cardfoot.is-split { justify-content: space-between; }

/* 저장 결과를 알림창(alert) 대신 버튼 옆에서 조용히 알려 준다 [2026-09-08].
   저장은 자주 누르는 동작이라 매번 창이 뜨면 흐름이 끊긴다.
   글자 모양은 ps-ofc-btn 과 맞춰 한 줄로 읽히게 했다. */
.ps-ofc-saveline { display: flex; align-items: center; gap: 12px; }
.ps-ofc-saved {
  margin: 0; font-size: 12px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.14em; color: var(--ps-ink);
}
.ps-ofc-saved[hidden] { display: none; }
/* 멤버 권한 select 바로 왼쪽에 붙인다.
   .mbr 이 space-between 이라 그냥 두면 가운데로 떠서, margin-left:auto 로 오른쪽 끝에 모은다.
   (칸 사이 간격은 .mbr 의 gap:12px 이 준다) */
.mbr-saved { margin: 0 0 0 auto; flex-shrink: 0; white-space: nowrap; }
/* [2026-10-12] 퇴사 처리 버튼이 붙으면서 칸이 3개 이상이 됐다 — 저장 표시가 숨겨진 상태(display:none)면
   위 margin-left:auto 가 사라져 space-between 이 select 를 가운데로 띄운다.
   이름 칸이 남는 폭을 다 먹게 하고(margin-right:auto), 나머지(저장 표시·select·퇴사 처리)는 오른쪽에 붙인다. */
.ps-ofc-mbrlist .mbr-id { margin-right: auto; }
.ps-ofc-mbrlist .mbr-saved { margin-left: 0; }
.ps-ofc-mbrlist .mbr-resign { flex-shrink: 0; white-space: nowrap; margin-left: -4px; }

.ps-ofc-search { width: 100%; border: 1px solid var(--ps-mute-400); background: var(--ps-paper); padding: 10px; font-size: 14px; outline: none; margin-bottom: 12px; }
.ps-ofc-search:focus { border-color: var(--ps-ink); }
.ps-ofc-search::placeholder { color: var(--ps-mute-500); }

.ps-ofc-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.ps-ofc-chips .chip {
  /* 라벨(한글)과 건수(숫자)의 line-height 를 통일해야 세로 중앙이 맞는다 */
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  border: 1px solid var(--ps-mute-300); background: transparent; color: var(--ps-mute-700);
  min-height: 28px; box-sizing: border-box;
  padding: 4px 10px; font-size: 12px; font-weight: 700; line-height: 1;
  text-transform: uppercase; letter-spacing: 0.08em;
  transition: border-color 140ms, background 140ms, color 140ms;
}
.ps-ofc-chips .chip:hover { border-color: var(--ps-ink); }
.ps-ofc-chips .chip.is-active { border-color: var(--ps-ink); background: var(--ps-ink); color: var(--ps-paper); }
.ps-ofc-chips .chip .cnt {
  display: inline-block; line-height: 1;
  font-variant-numeric: tabular-nums; color: var(--ps-mute-500);
}
.ps-ofc-chips .chip.is-active .cnt { color: var(--ps-accent); }

.ps-ofc-tabs { list-style: none; margin: 0 0 16px; padding: 0 0 12px; display: flex; flex-wrap: wrap; gap: 8px; border-bottom: 1px solid var(--ps-ink); }
.ps-ofc-tabs .tab {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  border: 1px solid var(--ps-mute-300); background: transparent; color: var(--ps-ink);
  padding: 4px 12px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  transition: border-color 140ms, background 140ms, color 140ms;
}
.ps-ofc-tabs .tab:hover { border-color: var(--ps-ink); }
.ps-ofc-tabs .tab.is-active { border-color: var(--ps-ink); background: var(--ps-ink); color: var(--ps-paper); }
.ps-ofc-tabs .tab .tab-cnt { font-variant-numeric: tabular-nums; }

/* 참여작품(외부) 편집 행 */
.ps-ofc-worklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.ps-ofc-worklist .work {
  border: 1px solid var(--ps-mute-300); padding: 16px;
  display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start;
}
@media (min-width: 768px) { .ps-ofc-worklist .work { grid-template-columns: 140px 1fr auto; } }
.ps-ofc-worklist .work-img {
  position: relative; aspect-ratio: 4 / 3; background: var(--ps-mute-50);
  border: 1px solid var(--ps-mute-200); overflow: hidden;
  display: grid; place-items: center;
}
.ps-ofc-worklist .work-img span { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; color: var(--ps-mute-500); }
.ps-ofc-worklist .work-img img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ps-ofc-worklist .work-fields { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ps-ofc-worklist .work-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ps-ofc-worklist .in {
  width: 100%; border: 1px solid var(--ps-mute-300); background: var(--ps-paper);
  padding: 6px 8px; font-family: inherit; font-size: 14px; line-height: 1.43; color: var(--ps-ink); outline: none;
}
.ps-ofc-worklist .w-title { font-weight: 700; }
.ps-ofc-worklist .w-desc { line-height: 1.5; resize: vertical; }
.ps-ofc-worklist .in:focus { border-color: var(--ps-ink); }
/* 글자수 카운터 — 입력칸 바로 아래 우측 */
.ps-ofc-worklist .w-descbox { display: flex; flex-direction: column; gap: 3px; }
.ps-ofc-worklist .w-count {
  align-self: flex-end; font-size: 12px; color: var(--ps-mute-500);
  font-variant-numeric: tabular-nums;
}
.ps-ofc-worklist .w-count.is-near { color: var(--ps-ink); font-weight: 600; }
.ps-ofc-worklist .w-del { align-self: start; }

/* 로고 박스 이미지 채움 */
.ps-ofc-logo .logo-box { position: relative; overflow: hidden; }
.ps-ofc-logo .logo-box img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ps-ofc-btn2.is-file { display: inline-block; cursor: pointer; }

/* 서류함 업로드 행 액션 */
.ps-ofc-doclist .doc-acts { flex-shrink: 0; display: flex; align-items: center; gap: 8px; }
.ps-ofc-doclist a.doc-st { text-decoration: none; }
.ps-ofc-doclist a.doc-st:hover { text-decoration: underline; text-underline-offset: 3px; }
/* 삭제 = 밑줄 텍스트(배포본), 교체/올리기 = 테두리 버튼 */
.ps-ofc-doc-del {
  flex-shrink: 0; cursor: pointer; border: 0; background: transparent; color: var(--ps-mute-500);
  padding: 0; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  text-decoration: underline; text-underline-offset: 2px; transition: color 140ms;
}
.ps-ofc-doc-del:hover { color: var(--ps-ink); }

/* 건축사사무소 등록 마법사 — 개인정보 수집·이용 동의 */
.ps-promo-consent { margin-top: 20px; border: 1px solid var(--ps-mute-200); background: var(--ps-mute-50); padding: 14px; }
.ps-promo-consent .cs-sum { margin: 0 0 10px; font-size: 13px; line-height: 1.55; color: var(--ps-mute-700); }
.ps-promo-consent .cs-check { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; font-size: 13px; line-height: 1.4; color: var(--ps-ink); }
.ps-promo-consent .cs-check input { margin-top: 2px; width: 15px; height: 15px; accent-color: var(--ps-ink); flex: none; }
.ps-promo-consent .cs-check b { font-weight: 800; }
.ps-promo-consent .cs-check a { color: var(--ps-ink); text-underline-offset: 2px; white-space: nowrap; }

/* 일반회원(역할 없음) 온보딩 화면 컨테이너 */
.ps-my-onboard { display: flex; flex-direction: column; gap: 0; }
.ps-my-onboard .ps-my-next { margin-bottom: 24px; }
.ps-my-onboard .ps-my-cards { margin-bottom: 24px; }

/* ── 알림 (받은 알림, 읽음 전용) ── */
.ps-noti { max-width: 720px; }
.ps-noti-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  padding-bottom: 12px; margin-bottom: 20px; border-bottom: 1px solid var(--ps-ink);
}
.ps-noti-title {
  margin: 0; font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2.25rem);
  font-weight: 900; letter-spacing: -0.02em;
}
.ps-noti-sub { margin: 6px 0 0; font-size: 13px; color: var(--ps-mute-700); }
.ps-noti-unread {
  display: inline-block; min-width: 20px; padding: 0 6px; margin-right: 4px;
  background: var(--ps-ink); color: var(--ps-paper); font-weight: 800; text-align: center;
}
.ps-noti-allbtn {
  flex-shrink: 0; border: 1px solid var(--ps-ink); background: var(--ps-paper); color: var(--ps-ink);
  padding: 8px 14px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  cursor: pointer; transition: background .15s, color .15s;
}
.ps-noti-allbtn:hover { background: var(--ps-ink); color: var(--ps-paper); }

/* 받은 알림이 없을 때 — 북마크 빈 상태(.ps-bm-empty)와 같은 모양으로 맞춘다 [2026-09-03].
   마이 안에서 화면마다 빈 상태 생김새가 다르면 같은 서비스로 안 보인다. */
.ps-noti-empty {
  border: 1px dashed rgba(10, 10, 10, 0.3);
  padding: 48px 24px; text-align: center;
}
.ps-noti-empty .t {
  margin: 0; font-size: 16px; line-height: 1.7; color: var(--ps-mute-700); word-break: keep-all;
}

/* 섹션(임명 알림 / 알림 내역) */
.ps-noti-sec + .ps-noti-sec { margin-top: 32px; }
.ps-noti-sec-h {
  margin: 0 0 16px; padding-bottom: 8px; border-bottom: 1px solid var(--ps-ink);
  font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.12em; color: var(--ps-ink);
}

/* 카드형 목록 (배포본) — 테두리 카드 + 좌 본문 / 우 액션 */
.ps-noti-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.ps-noti-item {
  border: 1px solid var(--ps-ink); padding: 20px;
  display: flex; flex-direction: column; gap: 16px;
}
@media (min-width: 640px) { .ps-noti-item { flex-direction: row; align-items: center; justify-content: space-between; } }
.ps-noti-main { min-width: 0; }
/* 제목 + 라임 점(안읽음만) */
.ps-noti-t { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 15px; line-height: 1.4; letter-spacing: -0.01em; color: var(--ps-ink); }
/* 동그라미는 디자인 요소 — 읽음/처리 여부와 무관하게 임명·일반 모든 알림에 항상 표시 */
.ps-noti-dot { flex-shrink: 0; width: 8px; height: 8px; border-radius: 50%; background: var(--ps-accent); }
.ps-noti-item.is-unread .ps-noti-t-txt { font-weight: 800; }
.ps-noti-t-txt { font-weight: 700; }
/* 안읽음 표시 — 색만 의존 X(웹접근성): 좌측 강조바 + 텍스트 배지 + 굵은 제목 */
.ps-noti-item.is-unread { box-shadow: inset 3px 0 0 var(--ps-accent); }
.ps-noti-new { display: none; }
.ps-noti-item.is-unread .ps-noti-new {
  display: inline-block; flex-shrink: 0; margin-left: 4px;
  font-size: 11px; font-weight: 800; letter-spacing: 0.02em;
  background: var(--ps-accent); color: var(--ps-ink);
  padding: 1px 8px; border-radius: 10px; line-height: 1.6;
}
.ps-noti-c { margin: 6px 0 0; font-size: 14px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-noti-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.ps-noti-type {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  border: 1px solid var(--ps-mute-300); color: var(--ps-mute-700); padding: 2px 7px;
}
.ps-noti-date { font-size: 12px; color: var(--ps-mute-500); }
.ps-noti-acts { flex-shrink: 0; display: flex; align-items: center; gap: 8px; }
.ps-noti-link {
  font-size: 13px; font-weight: 700; color: var(--ps-ink);
  text-decoration: underline; text-underline-offset: 3px;
}
.ps-noti-read {
  border: 1px solid var(--ps-mute-300); background: var(--ps-paper); color: var(--ps-mute-700);
  padding: 5px 12px; font-size: 12px; font-weight: 700; cursor: pointer;
  transition: border-color .15s, color .15s;
}
.ps-noti-read:hover { border-color: var(--ps-ink); color: var(--ps-ink); }

/* 더보기 (일반 알림 페이징) */
.ps-noti-more { margin-top: 16px; text-align: center; }
.ps-noti-morebtn {
  display: inline-flex; align-items: center; gap: 8px;
  border: 1px solid var(--ps-mute-300); background: var(--ps-paper); color: var(--ps-ink);
  padding: 10px 24px; font-size: 13px; font-weight: 700; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.ps-noti-morebtn:hover { border-color: var(--ps-ink); }
.ps-noti-morebtn:disabled { opacity: 0.5; cursor: default; }
.ps-noti-morebtn:focus-visible { outline: 2px solid var(--ps-accent); outline-offset: 2px; }
.ps-noti-morecnt { font-size: 12px; font-weight: 600; color: var(--ps-mute-500); }
.ps-noti-moreend { margin: 16px 0 0; text-align: center; font-size: 12px; color: var(--ps-mute-500); }
/* 더보기로 초점 이동된 항목 — 마우스 사용자에겐 외곽선 숨김(키보드만 노출) */
.ps-noti-item[tabindex]:focus:not(:focus-visible) { outline: none; }

/* 배정 수락/거절 (액션형 알림) */
.ps-noti-asgn { gap: 8px; }
.ps-noti-accept {
  border: 1px solid var(--ps-ink); background: var(--ps-ink); color: var(--ps-paper);
  padding: 7px 16px; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em;
  cursor: pointer; transition: opacity .15s;
}
.ps-noti-accept:hover { opacity: 0.88; }
.ps-noti-accept:disabled, .ps-noti-decline:disabled { opacity: 0.5; cursor: default; }
.ps-noti-decline {
  border: 1px solid var(--ps-ink); background: var(--ps-paper); color: var(--ps-ink);
  padding: 7px 16px; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em;
  cursor: pointer; transition: background .15s, color .15s;
}
.ps-noti-decline:hover { background: var(--ps-ink); color: var(--ps-paper); }
.ps-noti-result { font-size: 13px; font-weight: 800; color: var(--ps-ink); }

/* 배정 거절 사유 입력 모달 — 관리자 반려 모달과 동일 폼/입력방식(ps 토큰) */
.ps-modal-ov {
  display: none; position: fixed; inset: 0; z-index: 1000;
  background: rgba(0,0,0,.45); align-items: center; justify-content: center; padding: 20px;
}
.ps-modal-ov.on { display: flex; }
.ps-modal { width: 520px; max-width: 100%; background: var(--ps-paper); border: 1px solid var(--ps-ink); }
.ps-modal-head { display: flex; align-items: center; gap: 12px; background: var(--ps-ink); color: var(--ps-paper); padding: 14px 18px; }
.ps-modal-head h2 { margin: 0; font-size: 15px; font-weight: 800; }
.ps-modal-x { margin-left: auto; background: none; border: 0; color: var(--ps-paper); font-size: 16px; line-height: 1; cursor: pointer; }
.ps-modal-body { padding: 20px; }
.ps-modal-who { margin: 0 0 14px; font-size: 13px; color: var(--ps-mute-700); }
.ps-modal-who b { color: var(--ps-ink); font-weight: 800; }
.ps-modal-body label { display: block; font-size: 12px; font-weight: 800; color: var(--ps-ink); margin-bottom: 6px; }
.ps-modal-body label .req { color: #d33; }
.ps-modal-body textarea {
  width: 100%; height: 120px; border: 1px solid var(--ps-mute-300); padding: 11px;
  font: inherit; font-size: 14px; resize: vertical; box-sizing: border-box; color: var(--ps-ink);
}
.ps-modal-body textarea:focus-visible { outline: 2px solid var(--ps-accent); outline-offset: 1px; }
.ps-modal-hint { margin: 8px 0 0; font-size: 12px; color: var(--ps-mute-500); }
.ps-modal-preset { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px; }
.ps-modal-preset button {
  background: var(--ps-paper); border: 1px solid var(--ps-mute-300);
  font: inherit; font-size: 12px; padding: 6px 10px; cursor: pointer; color: var(--ps-mute-700);
}
.ps-modal-preset button:hover { border-color: var(--ps-ink); color: var(--ps-ink); }
.ps-modal-foot { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 18px; border-top: 1px solid var(--ps-mute-200); }
.ps-modal-btn {
  border: 1px solid var(--ps-mute-300); background: var(--ps-paper); color: var(--ps-mute-700);
  padding: 9px 18px; font-size: 13px; font-weight: 700; cursor: pointer;
}
.ps-modal-btn:hover { border-color: var(--ps-ink); color: var(--ps-ink); }
.ps-modal-btn.is-primary { background: var(--ps-ink); color: var(--ps-paper); border-color: var(--ps-ink); }
.ps-modal-btn.is-primary:hover { opacity: 0.88; color: var(--ps-paper); }
.ps-modal-btn:disabled { opacity: 0.5; cursor: default; }

/* ── 프로필 관리 (마이 > 프로필, 조회 전용) ── */
/* 폭 제한 없이 사이드 네비 오른쪽 전체를 사용. 긴 글줄만 개별 요소에서 max-width 로 제어 */
.ps-prof { display: flex; flex-direction: column; gap: 40px; }

/* 히어로 — 아바타 + 이름 + 현재 소속 */
.ps-prof-hero {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  border-bottom: 1px solid var(--ps-ink); padding-bottom: 24px;
}
.ps-prof-idbox { display: flex; align-items: center; gap: 20px; min-width: 0; }
.ps-prof-avatar {
  flex: none; width: 80px; height: 80px; border-radius: 50%; overflow: hidden;
  display: grid; place-items: center; background: var(--ps-ink); color: var(--ps-paper);
}
.ps-prof-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ps-prof-avatar .init { font-size: 24px; font-weight: 900; line-height: 1; }
.ps-prof-idtxt { min-width: 0; }
.ps-prof-nm {
  margin: 0; font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
  font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink);
}
.ps-prof-sub { margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: var(--ps-mute-700); max-width: 60ch; }
.ps-prof-preview {
  flex: none; display: inline-flex; align-items: center; gap: 8px;
  border: 1px solid var(--ps-mute-300); color: var(--ps-mute-500);
  padding: 8px 12px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
}
.ps-prof-preview .soon {
  font-size: 11px; letter-spacing: 0.02em; text-transform: none;
  background: var(--ps-mute-100); color: var(--ps-mute-700); padding: 1px 7px;
}
/* 활성 링크 — 클릭 가능하므로 잉크색 + hover 반전 */
a.ps-prof-preview {
  border-color: var(--ps-ink); color: var(--ps-ink); text-decoration: none;
  transition: background .15s, color .15s;
}
a.ps-prof-preview:hover { background: var(--ps-ink); color: var(--ps-paper); }
a.ps-prof-preview:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }
.ps-prof-preview .ext { font-size: 13px; }
/* 비공개 상태 — 링크 아님 */
.ps-prof-preview.is-off { border-style: dashed; }
.ps-prof-lead { margin: 0; font-size: 13px; line-height: 1.7; color: var(--ps-mute-700); }

/* 프로필 미생성 안내 */
.ps-prof-empty { border: 1px dashed var(--ps-mute-300); background: var(--ps-mute-50); padding: 20px; }
.ps-prof-empty .t { margin: 0; font-size: 15px; font-weight: 800; color: var(--ps-ink); }
.ps-prof-empty .d { margin: 6px 0 0; font-size: 13px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-prof-emptybtn {
  display: inline-block; margin-top: 14px; border: 1px solid var(--ps-ink); color: var(--ps-ink);
  padding: 8px 14px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  text-decoration: none; transition: background .15s, color .15s;
}
.ps-prof-emptybtn:hover { background: var(--ps-ink); color: var(--ps-paper); }

/* 섹션 공통 */
.ps-prof-sechd {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border-bottom: 1px solid var(--ps-ink); padding-bottom: 8px; margin-bottom: 16px;
}
.ps-prof-sechd h3 {
  margin: 0; font-size: 12px; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.16em; color: var(--ps-ink);
}
.ps-prof-edit {
  flex: none; display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--ps-mute-700);
}
a.ps-prof-edit { text-decoration: underline; text-underline-offset: 4px; }
a.ps-prof-edit:hover { color: var(--ps-ink); }
.ps-prof-edit.is-soon { color: var(--ps-mute-500); }
.ps-prof-edit .soon {
  font-size: 11px; letter-spacing: 0.02em; text-transform: none;
  background: var(--ps-mute-100); color: var(--ps-mute-700); padding: 1px 7px;
}
.ps-prof-edit.is-auto {
  border: 1px solid var(--ps-mute-200); color: var(--ps-mute-500);
  padding: 2px 8px; letter-spacing: 0.08em;
}
.ps-prof-secempty { margin: 0; font-size: 13px; line-height: 1.6; color: var(--ps-mute-500); }
.ps-prof-note { margin: 12px 0 0; font-size: 12px; line-height: 1.6; color: var(--ps-mute-500); }

/* BIO */
.ps-prof-bio {
  margin: 0; max-width: 60ch; font-size: var(--ps-fs-body); line-height: 1.7;
  color: var(--ps-ink); white-space: pre-line;
}

/* 소속 (읽기 전용) */
.ps-prof-afflist { list-style: none; margin: 0; padding: 0; }
.ps-prof-afflist .aff {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  padding: 12px 0; border-top: 1px solid rgba(10, 10, 10, 0.1);
}
.ps-prof-afflist .aff:first-child { border-top: 0; }
.ps-prof-afflist .aff-nm { margin: 0; font-size: 14px; font-weight: 700; color: var(--ps-ink); }
.ps-prof-afflist .aff-role { margin: 2px 0 0; font-size: 12px; color: var(--ps-mute-700); }
.ps-prof-afflist .aff-term {
  flex: none; margin: 0; font-size: 12px; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--ps-mute-700);
}

/* 전문분야 태그 */
.ps-prof-tags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.ps-prof-tags li {
  border: 1px solid var(--ps-ink); padding: 6px 12px;
  font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ps-ink);
}

/* 이력 (유형별 그룹) */
.ps-prof-histgrp + .ps-prof-histgrp { margin-top: 20px; }
.ps-prof-histgrp .grp-lab {
  margin: 0 0 8px; font-size: 12px; font-weight: 800; color: var(--ps-mute-700);
  letter-spacing: 0.08em;
}
.ps-prof-histlist { list-style: none; margin: 0; padding: 0; }
.ps-prof-histlist .hist {
  display: flex; align-items: baseline; gap: 16px;
  padding: 8px 0; border-top: 1px solid rgba(10, 10, 10, 0.1);
}
.ps-prof-histlist .hist:first-child { border-top: 0; }
.ps-prof-histlist .hist-yr { flex: none; width: 5.5rem; font-size: 12px; color: var(--ps-mute-500); }
.ps-prof-histlist .hist-c { font-size: 14px; line-height: 1.6; color: var(--ps-ink); }

/* 외부 프로젝트 */
.ps-prof-projlist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.ps-prof-projlist .proj { display: flex; gap: 16px; border: 1px solid var(--ps-mute-200); padding: 16px; }
.ps-prof-projlist .proj.is-hidden { border-style: dashed; background: var(--ps-mute-50); }
.ps-prof-projlist .proj-thumb {
  flex: none; width: 112px; height: 84px; background: var(--ps-mute-100);
  background-size: cover; background-position: center;
}
.ps-prof-projlist .proj-body { min-width: 0; }
.ps-prof-projlist .proj-nm { margin: 0; font-size: 15px; font-weight: 800; color: var(--ps-ink); }
.ps-prof-projlist .proj-off {
  margin-left: 8px; font-size: 11px; font-weight: 700; letter-spacing: 0.02em;
  border: 1px solid var(--ps-mute-300); color: var(--ps-mute-500); padding: 1px 7px;
}
.ps-prof-projlist .proj-meta { margin: 4px 0 0; font-size: 12px; color: var(--ps-mute-500); }
.ps-prof-projlist .proj-desc { margin: 8px 0 0; font-size: 13px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-prof-projlist .proj-link {
  display: inline-block; margin-top: 8px; font-size: 12px; font-weight: 700;
  color: var(--ps-ink); text-decoration: underline; text-underline-offset: 3px;
}
@media (max-width: 600px) {
  .ps-prof-projlist .proj { flex-direction: column; }
  .ps-prof-projlist .proj-thumb { width: 100%; height: 160px; }
}

/* 심사위원 카드 이미지 (1:1) */
.ps-prof-judge { display: flex; align-items: flex-start; gap: 24px; flex-wrap: wrap; }
.ps-prof-jcard-wrap { flex: none; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
/* 카드 자체가 업로드 트리거 — hover/focus 시 '변경' 오버레이 */
.ps-prof-jcard {
  position: relative; width: 128px; height: 128px; overflow: hidden; padding: 0;
  border: 0; cursor: pointer; display: grid; place-items: center;
  background: var(--ps-ink); color: var(--ps-paper);
}
.ps-prof-jcard img { width: 100%; height: 100%; object-fit: cover; }
.ps-prof-jcard .init { font-size: 40px; font-weight: 900; line-height: 1; }
.ps-prof-jcard .ov {
  position: absolute; inset: 0; display: flex; align-items: flex-end; justify-content: center;
  padding-bottom: 8px; background: rgba(10, 10, 10, 0); transition: background 140ms ease;
}
.ps-prof-jcard .ov-t {
  opacity: 0; transition: opacity 140ms ease;
  font-size: 12px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ps-paper);
}
.ps-prof-jcard:hover .ov, .ps-prof-jcard:focus-visible .ov { background: rgba(10, 10, 10, 0.55); }
.ps-prof-jcard:hover .ov-t, .ps-prof-jcard:focus-visible .ov-t { opacity: 1; }
.ps-prof-jcard:focus-visible { outline: 2px solid var(--ps-focus, #0046c8); outline-offset: 2px; }
.ps-prof-jcard:disabled { opacity: 0.6; cursor: default; }
/* 파일 input 은 화면에서 감추되 접근성 트리는 유지 */
.ps-prof-fileinput {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.ps-prof-imgdel {
  background: none; border: 0; padding: 0; cursor: pointer; color: var(--ps-mute-500);
  font: inherit; font-size: 12px; text-decoration: underline; text-underline-offset: 3px;
}
.ps-prof-imgdel:hover { color: var(--ps-ink); }
.ps-prof-imgdel[hidden] { display: none; }
.ps-prof-jdesc .n.is-err { color: #d33; }
.ps-prof-jdesc { flex: 1 1 260px; max-width: 60ch; }
.ps-prof-jdesc .d { margin: 0; font-size: 14px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-prof-jdesc .n {
  margin: 8px 0 0; font-size: 12px; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--ps-mute-500);
}

/* 공개 범위 (현재 상태 표시) */
.ps-prof-scope { display: flex; flex-wrap: wrap; gap: 8px; }
.ps-prof-scope .sc {
  border: 1px solid rgba(10, 10, 10, 0.3); color: var(--ps-mute-700);
  padding: 6px 12px; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase;
}
.ps-prof-scope .sc.is-on { background: var(--ps-ink); color: var(--ps-paper); border-color: var(--ps-ink); }
/* 조회 화면에서 바로 누르는 버튼으로 바뀜 [2026-10-15] — 버튼 기본 모양을 지우고 커서만 준다 */
.ps-prof-scope button.sc { background: transparent; font-family: inherit; cursor: pointer; }
.ps-prof-scope button.sc.is-on { background: var(--ps-ink); cursor: default; }
.ps-prof-scope button.sc:not(.is-on):hover { border-color: var(--ps-ink); color: var(--ps-ink); }

@media (max-width: 640px) {
  .ps-prof-hero { flex-direction: column; align-items: flex-start; gap: 16px; }
  .ps-prof-idbox { gap: 14px; }
  .ps-prof-avatar { width: 64px; height: 64px; }
}

/* ── 프로필 편집 (마이 > 프로필 > 편집) ── */
/* 편집도 조회와 같은 폭(사이드 네비 오른쪽 전체) */
.ps-pfe { display: flex; flex-direction: column; gap: 32px; }

.ps-pfe-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  border-bottom: 1px solid var(--ps-ink); padding-bottom: 24px;
}
.ps-pfe-head .ps-eyebrow { margin: 0; color: var(--ps-mute-700); }
.ps-pfe-nm {
  margin: 4px 0 0; font-size: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
  font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink);
}
.ps-pfe-back {
  flex: none; display: inline-flex; align-items: center;
  border: 1px solid var(--ps-ink); color: var(--ps-ink); padding: 8px 12px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  text-decoration: none; transition: background .15s, color .15s;
}
.ps-pfe-back:hover { background: var(--ps-ink); color: var(--ps-paper); }

/* 섹션 */
.ps-pfe-sec { display: block; }
.ps-pfe-sech {
  margin: 0 0 16px; padding-bottom: 8px; border-bottom: 1px solid var(--ps-ink);
  font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em; color: var(--ps-ink);
}
.ps-pfe-sechrow {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border-bottom: 1px solid var(--ps-ink); padding-bottom: 8px; margin-bottom: 16px;
}
.ps-pfe-sechrow.is-tight { margin-bottom: 8px; }
.ps-pfe-sech.is-plain { margin: 0; padding: 0; border: 0; }
.ps-pfe-sechelp { margin: 0 0 16px; max-width: 60ch; font-size: 12px; line-height: 1.6; color: var(--ps-mute-700); }
.ps-pfe-addbtn {
  flex: none; background: none; border: 0; cursor: pointer; color: var(--ps-mute-700);
  font: inherit; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  text-decoration: underline; text-underline-offset: 4px;
}
.ps-pfe-addbtn:hover { color: var(--ps-ink); }

/* 입력 */
.ps-pfe-ta {
  width: 100%; box-sizing: border-box; border: 1px solid var(--ps-ink); background: var(--ps-paper);
  padding: 12px; font: inherit; font-size: var(--ps-fs-body); line-height: 1.7; color: var(--ps-ink); resize: vertical;
}
/* [KWCAG] 테두리가 이미 ink 라 색 변화로는 포커스를 표현할 수 없다. 배경 3% 변화도
   대비 1.03:1 로 식별 불가 — 아웃라인으로 표시한다. */
.ps-pfe-ta:focus { outline: 2px solid var(--ps-focus); outline-offset: 1px; background: rgba(10, 10, 10, 0.03); }
.ps-pfe-in {
  width: 100%; box-sizing: border-box; height: 44px; border: 1px solid var(--ps-ink);
  background: var(--ps-paper); padding: 0 12px; font: inherit; font-size: 14px; color: var(--ps-ink);
}
.ps-pfe-in.is-bold { font-weight: 700; }
.ps-pfe-in:focus { outline: 2px solid var(--ps-focus); outline-offset: 1px; background: rgba(10, 10, 10, 0.03); }
.ps-pfe-in:disabled { background: var(--ps-mute-50); color: var(--ps-mute-700); border-color: var(--ps-mute-400); }
.ps-pfe-hint { margin: 4px 0 0; font-size: 12px; color: var(--ps-mute-500); }
.ps-pfe-empty { margin: 0; font-size: 13px; color: var(--ps-mute-500); }
.ps-pfe-empty[hidden] { display: none; }

/* 반복 행 */
.ps-pfe-rows { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.ps-pfe-rows:empty { display: none; }
.ps-pfe-rows + .ps-pfe-rows { margin-top: 16px; }
.ps-pfe-row { border: 1px solid rgba(10, 10, 10, 0.15); padding: 16px; }
.ps-pfe-row.is-locked { background: var(--ps-mute-50); }
.ps-pfe-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 12px; align-items: start; }
.ps-pfe-grid .col-2 { grid-column: span 12; }
.ps-pfe-grid .col-3 { grid-column: span 12; }
.ps-pfe-grid .col-4 { grid-column: span 12; }
.ps-pfe-grid .col-6 { grid-column: span 12; }
@media (min-width: 768px) {
  .ps-pfe-grid .col-2 { grid-column: span 2; }
  .ps-pfe-grid .col-3 { grid-column: span 3; }
  .ps-pfe-grid .col-4 { grid-column: span 4; }
  .ps-pfe-grid .col-6 { grid-column: span 6; }
}
.ps-pfe-grid label.ps-eyebrow { display: block; margin: 0 0 6px; color: var(--ps-mute-700); }
.ps-pfe-term { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ps-pfe-rowfoot { display: flex; justify-content: flex-end; margin-top: 12px; }
.ps-pfe-delbtn {
  background: none; border: 0; cursor: pointer; color: var(--ps-mute-700); font: inherit;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
}
.ps-pfe-delbtn:hover { color: var(--ps-ink); }
.ps-pfe-rownote { margin: 12px 0 0; font-size: 12px; line-height: 1.6; color: var(--ps-mute-500); }

/* 시스템 확인 배지 */
.ps-pfe-lockwrap { position: relative; }
.ps-pfe-verified {
  position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
  background: var(--ps-accent); color: var(--ps-ink);
  font-size: 12px; font-weight: 800; letter-spacing: 0.14em; padding: 2px 6px;
}

/* 전문분야 태그 편집 */
/* 태그·입력칸·+ 버튼 높이를 36px 로 통일 */
.ps-pfe-tags { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ps-pfe-tags .tag {
  display: inline-flex; align-items: center; gap: 8px;
  height: 36px; box-sizing: border-box;
  border: 1px solid var(--ps-ink); padding: 0 12px;
}
.ps-pfe-tags .tag .t { font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.ps-pfe-tags .tag .x {
  background: none; border: 0; cursor: pointer; color: var(--ps-mute-500); font-size: 12px; line-height: 1; padding: 0;
}
.ps-pfe-tags .tag .x:hover { color: var(--ps-ink); }
.ps-pfe-tags .tagadd { display: inline-flex; align-items: center; gap: 4px; height: 36px; }
.ps-pfe-tagin {
  height: 36px; width: 10rem; box-sizing: border-box; background: transparent; line-height: 1;
  border: 1px solid rgba(10, 10, 10, 0.4); padding: 0 8px;
  font: inherit; font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ps-ink);
}
.ps-pfe-tagin:focus { outline: none; border-color: var(--ps-ink); }
.ps-pfe-tagbtn {
  height: 36px; box-sizing: border-box; padding: 0 12px; line-height: 1;
  border: 1px solid var(--ps-ink); background: var(--ps-paper);
  color: var(--ps-ink); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer;
  transition: background .15s, color .15s;
}
.ps-pfe-tagbtn:hover { background: var(--ps-ink); color: var(--ps-paper); }

/* 공개 범위 (선택) */
.ps-pfe-scope { display: flex; flex-wrap: wrap; gap: 8px; }
.ps-pfe-scope .sc {
  border: 1px solid rgba(10, 10, 10, 0.3); background: var(--ps-paper); color: var(--ps-mute-700);
  padding: 8px 14px; font: inherit; font-size: 12px; font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase; cursor: pointer;
  transition: border-color .15s, color .15s;
}
.ps-pfe-scope .sc:hover { border-color: var(--ps-ink); color: var(--ps-ink); }
.ps-pfe-scope .sc.is-on { background: var(--ps-ink); color: var(--ps-paper); border-color: var(--ps-ink); }

/* 하단 고정 저장바 */
.ps-pfe-spacer { height: 88px; }   /* 하단 고정 저장바(64px) 가림 방지 */
.ps-pfe-bar {
  /* 화면 하단 유틸 위젯(테마 스위처 z-index:80, 큰글씨/맨위로 버튼)보다 위에 놓아
     편집 중 저장바가 가려지지 않게 한다. */
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
  border-top: 1px solid var(--ps-ink); background: var(--ps-paper);
  box-shadow: 0 -8px 24px -16px rgba(0, 0, 0, 0.45);
}
.ps-pfe-barin {
  height: 64px; padding: 0 var(--ps-gutter);
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.ps-pfe-reset {
  background: none; border: 0; cursor: pointer; color: var(--ps-mute-700); font: inherit;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  text-decoration: underline; text-underline-offset: 4px;
}
.ps-pfe-reset:hover { color: var(--ps-ink); }
.ps-pfe-baracts { display: flex; align-items: center; gap: 12px; }
.ps-pfe-status { font-size: 12px; font-weight: 700; color: var(--ps-mute-500); }
.ps-pfe-status.is-ok { color: var(--ps-ink); }
.ps-pfe-status.is-err { color: #d33; }
.ps-pfe-save {
  height: 44px; padding: 0 24px; border: 1px solid var(--ps-ink);
  background: var(--ps-ink); color: var(--ps-paper); font: inherit;
  font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.16em; cursor: pointer;
  transition: background .15s;
}
.ps-pfe-save:hover { background: var(--ps-mute-700); }
.ps-pfe-save:disabled { opacity: 0.5; cursor: default; }

/* 소속 — 시스템 확인 배지 (조회 화면) */
.ps-prof-afflist .aff-ok {
  margin-left: 6px; display: inline-block;
  background: var(--ps-accent); color: var(--ps-ink);
  font-size: 11px; font-weight: 800; letter-spacing: 0.06em; padding: 1px 6px;
}

/* 학력 목록 — 학교(굵게) + 학위(보조) */
.ps-prof-histlist .hist-c .sub { color: var(--ps-mute-700); font-weight: 400; }

/* ── 기관 검색 드롭다운 (소속·학력 입력) ── */
.ps-pfe-orgwrap { position: relative; }
.ps-pfe-orgbox {
  position: absolute; z-index: 30; left: 0; right: 0; top: 100%; margin-top: 4px;
  max-height: 18rem; overflow-y: auto; overscroll-behavior: contain;
  border: 1px solid var(--ps-ink); background: var(--ps-paper);
  box-shadow: 0 12px 24px -12px rgba(0, 0, 0, 0.25);
}
.ps-pfe-orgbox .opt {
  display: block; width: 100%; text-align: left; cursor: pointer;
  border: 0; border-bottom: 1px solid rgba(10, 10, 10, 0.1);
  background: none; font: inherit; padding: 8px 12px;
}
.ps-pfe-orgbox .opt:last-child { border-bottom: 0; }
.ps-pfe-orgbox .opt:hover { background: rgba(10, 10, 10, 0.05); }
/* 키보드 이동 중인 항목 — 디자인의 선택 상태(잉크 반전) */
.ps-pfe-orgbox .opt.is-active { background: var(--ps-ink); }
.ps-pfe-orgbox .opt .nm {
  display: block; font-size: 15px; font-weight: 700; line-height: 1.3;
  color: var(--ps-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ps-pfe-orgbox .opt .sub {
  display: block; margin-top: 1px; font-size: 12px; line-height: 1.35;
  color: var(--ps-mute-700); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ps-pfe-orgbox .opt.is-active .nm { color: var(--ps-paper); }
.ps-pfe-orgbox .opt.is-active .sub { color: rgba(255, 255, 255, 0.7); }
/* 사전에 없는 기관 — 입력값 그대로 사용 */
.ps-pfe-orgbox .opt.is-free { border-top: 1px solid var(--ps-ink); }


/* ══════════════════════════════════════════════════════════
   마이 > 북마크 (.ps-bm-*) — 타입별 섹션
   공모 = 포스터 카드 / 사무소·건축인 = 정보 카드
   ══════════════════════════════════════════════════════════ */

/* 빈 상태 — 점선 박스 + 둘러보기 링크 */
.ps-bm-empty {
  border: 1px dashed rgba(10, 10, 10, 0.3);
  padding: 48px 24px; text-align: center;
}
.ps-bm-empty .t {
  margin: 0; font-size: 16px; line-height: 1.7; color: var(--ps-mute-700); word-break: keep-all;
}
.ps-bm-empty .go {
  display: inline-block; margin-top: 16px;
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em;
  color: var(--ps-ink); text-decoration: underline; text-underline-offset: 4px;
}
.ps-bm-empty .go:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 2px; }

/* 페이지 제목 — 사이드바 옆 콘텐츠 안 (상단 히어로는 사용자 이름) */
.ps-bm-head { margin: 0 0 48px; }
.ps-bm-head h2 {
  margin: 0; font-size: clamp(1.75rem, 1.4rem + 1.2vw, 2.25rem);
  font-weight: 900; letter-spacing: -0.02em; line-height: 1.15; color: var(--ps-ink);
}
.ps-bm-lead {
  margin: 8px 0 0; max-width: 60ch;
  font-size: 14px; line-height: 1.7; color: var(--ps-mute-700); word-break: keep-all;
}

/* 섹션 헤더 — 제목 + 건수, ink 밑줄 */
.ps-bm-sec + .ps-bm-sec { margin-top: 56px; }
.ps-bm-sechead {
  display: flex; align-items: baseline; justify-content: space-between;
  border-bottom: 1px solid var(--ps-ink); padding-bottom: 8px; margin-bottom: 20px;
}
.ps-bm-sechead.is-tight { margin-bottom: 8px; }
.ps-bm-sechead h2 {
  margin: 0; font-size: 14px; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--ps-ink);
}
.ps-bm-sechead .cnt {
  font-size: 12px; font-weight: 700; letter-spacing: 0.1em; color: var(--ps-mute-700);
}
.ps-bm-secnote { margin: 0 0 20px; font-size: 12px; line-height: 1.7; color: var(--ps-mute-500); }

/* 그리드 */
.ps-bm-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 24px; grid-template-columns: 1fr; }
.ps-bm-grid.is-entity { gap: 16px; }
@media (min-width: 640px)  { .ps-bm-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ps-bm-grid { grid-template-columns: repeat(3, 1fr); } }
/* 해제된 카드 — 새로고침 전까지 흐리게 */
.ps-bm-grid > li.is-off { opacity: 0.4; }

/* ── 포스터 카드 (공모) ── */
.ps-bm-media { position: relative; }
.ps-bm-medialink { display: block; text-decoration: none; color: inherit; }
.ps-bm-medialink .thumb {
  position: relative; display: block; width: 100%;
  border: 1px solid var(--ps-ink); background: var(--ps-mute-50) center / cover no-repeat;
  overflow: hidden;
}
/* aspect-ratio 미지원 브라우저 대비 padding-top 폴백 */
.ps-bm-medialink .thumb.is-poster { padding-top: 75%; }      /* 4:3 */
@supports (aspect-ratio: 4 / 3) {
  .ps-bm-medialink .thumb.is-poster { padding-top: 0; aspect-ratio: 4 / 3; }
}
.ps-bm-medialink .badge {
  position: absolute; top: 8px; left: 8px;
  background: var(--ps-paper); color: var(--ps-ink); border: 1px solid var(--ps-ink);
  padding: 2px 8px; font-size: 11px; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.14em;
}
.ps-bm-medialink .tit {
  display: block; margin-top: 12px;
  font-size: 16px; font-weight: 700; line-height: 1.4; color: var(--ps-ink);
  /* 2줄까지 */
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ps-bm-medialink:hover .tit { text-decoration: underline; text-underline-offset: 4px; }
.ps-bm-medialink:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 3px; }
.ps-bm-medialink .sub {
  display: block; margin-top: 4px;
  font-size: 12px; letter-spacing: 0.1em; color: var(--ps-mute-700);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ── 정보 카드 (사무소·건축인) ── */
.ps-bm-entity {
  position: relative; height: 100%; box-sizing: border-box;
  border: 1px solid var(--ps-ink); padding: 16px;
  transition: background 140ms ease;
}
.ps-bm-entity:hover { background: var(--ps-mute-50); }
.ps-bm-entity .ent-link { display: block; text-decoration: none; color: inherit; }
.ps-bm-entity .ent-link:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 3px; }
.ps-bm-entity .ent-nm {
  margin: 0; padding-right: 40px;   /* 우상단 토글 자리 */
  font-size: 16px; font-weight: 800; line-height: 1.25; letter-spacing: -0.01em; color: var(--ps-ink);
}
.ps-bm-entity .ent-link:hover .ent-nm { text-decoration: underline; text-underline-offset: 4px; }
.ps-bm-entity .ent-sub {
  margin: 6px 0 0; font-size: 12px; line-height: 1.45; color: var(--ps-mute-700);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
/* 알림 안내 목록 */
.ps-bm-entity .ent-noti {
  list-style: none; margin: 16px 0 0; padding: 12px 0 0;
  border-top: 1px solid var(--ps-mute-200);
  display: flex; flex-direction: column; gap: 6px;
}
.ps-bm-entity .ent-noti li {
  display: flex; align-items: flex-start; gap: 6px;
  font-size: 12px; font-weight: 600; line-height: 1.45; color: var(--ps-mute-700);
}
.ps-bm-entity .ent-noti .dot {
  flex: 0 0 auto; margin-top: 4px; width: 6px; height: 6px; border-radius: 50%;
  background: var(--ps-accent);
}

/* ── 카드 우상단 북마크 토글 (담김=ink 반전) ── */
.ps-bmk-mark {
  position: absolute; top: 8px; right: 8px; z-index: 2;
  width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--ps-ink); background: var(--ps-paper); color: var(--ps-ink);
  cursor: pointer; transition: background 140ms ease, color 140ms ease;
}
.ps-bm-entity .ps-bmk-mark { top: 12px; right: 12px; }
.ps-bmk-mark.is-on { background: var(--ps-ink); color: var(--ps-paper); }
.ps-bmk-mark:hover { background: var(--ps-mute-700); color: var(--ps-paper); }
.ps-bmk-mark:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 2px; }
.ps-bmk-mark:disabled { opacity: 0.5; cursor: default; }

/* ── 마이 > 설정 (껍데기, 2026-09-23) ── */
.ps-set-hd { margin-bottom: 8px; }
.ps-set-ttl { margin: 0; font-size: 28px; font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink); }
.ps-set-lead { margin: 8px 0 0; font-size: 14px; color: var(--ps-mute-700); }

.ps-set-form { display: flex; flex-direction: column; gap: 12px; max-width: 48rem; }
.ps-set-form[hidden] { display: none; } 
.ps-set-field { display: block; }
.ps-set-field .lb {
  display: block; margin-bottom: 6px; font-size: 12px; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.1em; color: var(--ps-mute-700);
}
.ps-set-field input {
  width: 100%; box-sizing: border-box; border: 1px solid var(--ps-mute-300); background: transparent;
  padding: 10px 14px; font: inherit; font-size: 14px; color: var(--ps-ink);
}
.ps-set-field input:focus { outline: none; border-color: var(--ps-ink); }
.ps-set-field input::placeholder { color: var(--ps-mute-500); }
.ps-set-field input[readonly] { background: var(--ps-mute-50); color: var(--ps-mute-700); cursor: default; }
.ps-set-field input[readonly]:focus { border-color: var(--ps-mute-300); }

.ps-set-note {
  border: 1px solid var(--ps-seoul-red); background: color-mix(in srgb, var(--ps-seoul-red) 6%, transparent);
  padding: 12px 14px;
}
.ps-set-note .tag {
  display: inline-block; margin: 0 0 8px; border: 1px solid var(--ps-seoul-red); color: var(--ps-seoul-red);
  font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; padding: 2px 8px;
}
.ps-set-note ul { margin: 0; padding-left: 18px; }
.ps-set-note li { font-size: 12px; line-height: 1.6; color: var(--ps-mute-700); }

.ps-set-btn {
  align-self: flex-start; border: 1px solid var(--ps-ink); background: var(--ps-ink); color: var(--ps-paper);
  padding: 10px 20px; font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em;
  cursor: pointer; transition: opacity 140ms ease;
}
.ps-set-btn:hover { opacity: 0.88; }
.ps-set-btn.sm { padding: 6px 14px; font-size: 12px; }
.ps-set-btn.danger { background: var(--ps-paper); color: var(--ps-seoul-red); border-color: var(--ps-seoul-red); }
.ps-set-btn.danger:hover { background: var(--ps-seoul-red); color: var(--ps-paper); }

.ps-set-snslist { list-style: none; margin: 0; padding: 0; border: 1px solid var(--ps-mute-200); max-width: 48rem; }
.ps-set-snslist li {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 12px 16px; border-top: 1px solid var(--ps-mute-200);
}
.ps-set-snslist li:first-child { border-top: 0; }
.ps-set-snslist li[hidden] { display: none; }
.ps-set-snslist li.js-sns-unlink-box { display: block; background: var(--ps-mute-50); }
.ps-set-snslist li.js-sns-unlink-box[hidden] { display: none; }
.ps-set-snslist .l { display: flex; align-items: center; gap: 12px; }
.ps-set-snslist .badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; font-size: 13px; font-weight: 900; flex: none;
}
.ps-set-snslist .nm { font-size: 14px; font-weight: 700; color: var(--ps-ink); }

.ps-set-hint { margin: 0; font-size: 12px; line-height: 1.6; color: var(--ps-mute-500); }

.ps-set-themerow { display: flex; flex-wrap: wrap; gap: 8px; }
.ps-set-theme {
  border: 1px solid var(--ps-mute-300); background: transparent; color: var(--ps-ink);
  padding: 8px 16px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em;
  cursor: pointer; transition: border-color 140ms ease;
}
.ps-set-theme:hover { border-color: var(--ps-ink); }
.ps-set-theme.is-on { background: var(--ps-ink); color: var(--ps-paper); border-color: var(--ps-ink); }

.ps-set-danger .ps-prof-sechd h3 { color: var(--ps-seoul-red); }
.ps-set-danger .ps-prof-sechd { border-color: var(--ps-seoul-red); }
/* 설정 화면만 — 섹션 제목 밑줄을 폼·안내 상자 폭(.ps-set-form 48rem)에 맞춘다. 프로필(.ps-prof 단독)은 본문 폭 그대로 [2026-10-19] */
.ps-set-page .ps-prof-sechd { max-width: 48rem; }

/* ── 마이 > 일정 (2026-09-23) ── */
.ps-sch-hd { margin-bottom: 8px; }
.ps-sch-ttl { margin: 0; font-size: 28px; font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink); }
.ps-sch-lead { margin: 8px 0 0; font-size: 14px; color: var(--ps-mute-700); }

/* 우리 사무소 관리(.ps-ofc-grid)와 같은 2단(본문/레일) 패턴 */
.ps-sch-grid { display: grid; grid-template-columns: 1fr; gap: 32px; max-width: 72rem; margin-top: 24px; }
@media (min-width: 1024px) { .ps-sch-grid { grid-template-columns: 2fr 1fr; gap: 40px; } }
.ps-sch-main { min-width: 0; }

/* 달력 자체는 대민 메인화면 .ps-cal-* 를 그대로 재사용 — 이 페이지에는 배치만 정의 */
.ps-sch-sidekick { margin-top: 24px; }

.ps-sch-aside { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
@media (min-width: 1024px) { .ps-sch-aside { position: sticky; top: 88px; align-self: start; } }
.ps-sch-railhd {
  display: flex; align-items: baseline; gap: 8px; padding: 0 0 13px;
  border-bottom: 1px solid var(--ps-ink); font-size: 12px; font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--ps-ink);
}
.ps-sch-railhd span { margin-left: auto; color: var(--ps-mute-400); font-size: 11px; letter-spacing: 0.04em; font-weight: 500; text-transform: none; }
.ps-sch-empty { padding: 16px 0; font-size: 14px; color: var(--ps-mute-500); }

.ps-sch-acc { border-bottom: 1px solid var(--ps-mute-200); }
.ps-sch-acc > summary { list-style: none; cursor: pointer; padding: 15px 2px 14px; display: flex; align-items: center; gap: 9px; }
.ps-sch-acc > summary::-webkit-details-marker { display: none; }
.ps-sch-acc > summary .nm { font-size: 15px; font-weight: 800; letter-spacing: -0.02em; color: var(--ps-ink); }
/* 심사 배정 공모전의 역할 표시(기술위원/심사위원) */
.ps-sch-acc > summary .nm .role { display: inline-block; margin-left: 4px; padding: 1px 6px; font-size: 10px; font-weight: 700; letter-spacing: 0.02em; vertical-align: 2px; border: 1px solid var(--ps-ink); color: var(--ps-ink); }
.ps-sch-acc > summary .st { margin-left: auto; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; padding: 4px 7px; text-transform: uppercase; flex: none; }
.ps-sch-acc > summary .st.open   { background: var(--ps-accent); color: var(--ps-ink); }
.ps-sch-acc > summary .st.review { background: var(--ps-ink); color: var(--ps-paper); }
.ps-sch-acc > summary .st.done   { background: var(--ps-mute-100); color: var(--ps-mute-500); }
.ps-sch-acc[open] > summary { background: var(--ps-mute-50); }

.ps-sch-stages { list-style: none; margin: 0; padding: 4px 2px 16px; }
.ps-sch-stages li { display: grid; grid-template-columns: 84px 1fr; gap: 10px; padding: 7px 0; font-size: 12.5px; border-bottom: 1px solid var(--ps-mute-100); }
.ps-sch-stages li:last-child { border-bottom: 0; }
.ps-sch-stages .k { color: var(--ps-mute-500); }
.ps-sch-stages .v { color: var(--ps-ink); font-variant-numeric: tabular-nums; letter-spacing: 0.01em; font-size: 12px; }
/* 내 공모 일정 — 6개씩 페이지 */
.ps-sch-acc[hidden] { display: none; }
.ps-sch-pager { display: flex; align-items: center; justify-content: center; gap: 4px; padding: 16px 0 4px; }
.ps-sch-pager button { min-width: 28px; height: 28px; padding: 0 6px; border: 1px solid var(--ps-mute-200); background: var(--ps-paper); color: var(--ps-ink); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; font-variant-numeric: tabular-nums; }
.ps-sch-pager button:hover:not(:disabled) { border-color: var(--ps-ink); }
.ps-sch-pager button.is-on { background: var(--ps-ink); border-color: var(--ps-ink); color: var(--ps-paper); }
.ps-sch-pager button:disabled { color: var(--ps-mute-300); cursor: default; }
.ps-sch-pager .pg-nums { display: inline-flex; gap: 4px; }

/* ── 신고 내역 (심사위원 기피·불공정 신고, 2026-10-07) ──
   알림 화면(.ps-noti) 머리·빈 상태를 그대로 쓰고 목록만 따로 둔다.
   ⚠ 라임(--ps-accent)은 바탕 전용 — 글자색으로 쓰지 않는다(흰 배경에서 안 보인다). */
.ps-rpt-list { list-style: none; margin: 0; padding: 0; }
.ps-rpt-item { padding: 18px 0; border-bottom: 1px solid var(--ps-mute-200); }
.ps-rpt-hd { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ps-rpt-type, .ps-rpt-sts {
  display: inline-block; padding: 2px 8px; font-size: 12px; font-weight: 700; letter-spacing: 0.04em;
  border: 1px solid var(--ps-ink); color: var(--ps-ink); background: var(--ps-paper);
}
.ps-rpt-type.is-dsql { background: var(--ps-ink); color: var(--ps-paper); }
.ps-rpt-sts.is-wait { background: var(--ps-accent); }
.ps-rpt-sts.is-done { border-color: var(--ps-mute-500); color: var(--ps-mute-700); }
.ps-rpt-sts.is-migr { border-style: dashed; border-color: var(--ps-mute-500); color: var(--ps-mute-700); }
.ps-rpt-dt { margin-left: auto; font-size: 13px; color: var(--ps-mute-500); }
.ps-rpt-t { margin: 10px 0 0; font-size: 16px; font-weight: 800; line-height: 1.4; word-break: keep-all; }
.ps-rpt-t a { color: var(--ps-ink); text-decoration: none; }
.ps-rpt-t a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ps-rpt-jd { margin: 4px 0 0; font-size: 14px; color: var(--ps-mute-700); }
.ps-rpt-jd b { color: var(--ps-ink); }
.ps-rpt-files { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.ps-rpt-files li { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.ps-rpt-files a { color: var(--ps-ink); text-decoration: underline; text-underline-offset: 2px; word-break: break-all; }
.ps-rpt-del {
  flex: none; width: 24px; height: 24px; border: 1px solid var(--ps-mute-400); background: var(--ps-paper);
  color: var(--ps-mute-700); font-size: 15px; line-height: 1; cursor: pointer;
}
.ps-rpt-del:hover { border-color: var(--ps-ink); color: var(--ps-ink); }
.ps-rpt-del:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 2px; }
.ps-rpt-lock { margin: 8px 0 0; font-size: 13px; color: var(--ps-mute-500); }
/* 공모전으로 묶기 (2026-10-08) — 공모전 이름이 묶음 머리말, 그 아래 심사위원별 신고 */
.ps-rpt-grp + .ps-rpt-grp { margin-top: 28px; }
.ps-rpt-grp-h {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  margin: 0; padding-bottom: 8px; border-bottom: 1px solid var(--ps-ink);
  font-size: 17px; font-weight: 900; line-height: 1.4; word-break: keep-all;
}
.ps-rpt-grp-h a { color: var(--ps-ink); text-decoration: none; }
.ps-rpt-grp-h a:hover { text-decoration: underline; text-underline-offset: 3px; }
.ps-rpt-grp-h .cnt { font-size: 13px; font-weight: 700; color: var(--ps-mute-700); }
.ps-rpt-grp .ps-rpt-hd .ps-rpt-jd { margin: 0 4px 0 0; font-size: 15px; }
.ps-rpt-grp-h .go { margin-left: auto; font-size: 13px; font-weight: 700; color: var(--ps-ink); text-decoration: underline; text-underline-offset: 3px; }
/* 이미 낸 신고에 파일 추가 (2026-10-08) — 파일 입력은 감추고 라벨을 버튼처럼(키보드로 닿게 display:none 금지) */
.ps-rpt-add { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.ps-rpt-add .ps-rpt-addfile { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.ps-rpt-add .pick {
  border: 1px solid var(--ps-ink); background: var(--ps-paper); color: var(--ps-ink);
  padding: 6px 12px; font-size: 13px; font-weight: 700; cursor: pointer;
}
.ps-rpt-add .pick:hover { background: var(--ps-ink); color: var(--ps-paper); }
.ps-rpt-add .ps-rpt-addfile:focus-visible + .pick { outline: 2px solid var(--ps-focus); outline-offset: 2px; }
.ps-rpt-add .hint { font-size: 12px; color: var(--ps-mute-500); }


/* ── 마이 > 내 활동 (viewMyActivity.jsp) */
.ps-act { min-height: 70vh; background: var(--ps-paper); padding: 24px var(--ps-gutter) 64px; }
.ps-act-back { display: inline-block; font-size: 12px; font-weight: 700; color: var(--ps-ink); text-decoration: none; }
.ps-act-back:hover { text-decoration: underline; text-underline-offset: 3px; }
.ps-act-title { margin: 16px 0 20px; font-size: 26px; font-weight: 900; letter-spacing: -0.02em; color: var(--ps-ink); }
.ps-act-tabs { list-style: none; margin: 0; padding: 0 0 24px; display: flex; flex-wrap: wrap; gap: 8px; border-bottom: 1px solid var(--ps-ink); }
.ps-act-tabs .tab {
  display: inline-flex; align-items: center; gap: 8px; text-decoration: none;
  border: 1px solid var(--ps-mute-300); background: transparent; color: var(--ps-ink);
  padding: 6px 12px; font-size: 13px; font-weight: 700;
  transition: border-color 140ms, background 140ms, color 140ms;
}
.ps-act-tabs .tab:hover { border-color: var(--ps-ink); }
.ps-act-tabs .tab.is-active { border-color: var(--ps-ink); background: var(--ps-ink); color: var(--ps-paper); }
.ps-act-tabs .tab .tab-cnt { font-weight: 600; color: var(--ps-mute-500); }
.ps-act-tabs .tab.is-active .tab-cnt { color: var(--ps-paper); }
.ps-act-tabs .tab:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 2px; }
.ps-act-count { margin: 32px 0 16px; font-size: 12px; font-weight: 700; color: var(--ps-mute-700); }
.ps-act-empty { padding: 40px 0; border-top: 1px solid rgba(10, 10, 10, 0.1); font-size: 14px; color: var(--ps-mute-500); }
.ps-act-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(10, 10, 10, 0.1); }
.ps-act-list > li { border-bottom: 1px solid rgba(10, 10, 10, 0.1); }
.ps-act-row { display: flex; align-items: center; gap: 20px; padding: 16px 0; text-decoration: none; color: var(--ps-ink); }
.ps-act-row .thumb {
  flex: 0 0 92px; width: 92px; aspect-ratio: 4 / 3;
  background: var(--ps-mute-50) center / cover no-repeat; border: 1px solid var(--ps-mute-200);
}
.ps-act-row .body { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ps-act-row .meta { font-size: 12px; font-weight: 700; letter-spacing: 0.04em; color: var(--ps-mute-700); }
.ps-act-row .meta .win { display: inline-block; margin-left: 6px; padding: 1px 6px; background: var(--ps-ink); color: var(--ps-paper); font-size: 11px; }
.ps-act-row .tit { font-size: 20px; font-weight: 900; letter-spacing: -0.02em; line-height: 1.3; overflow-wrap: anywhere; }
.ps-act-row:hover .tit { text-decoration: underline; text-underline-offset: 4px; }
.ps-act-row:focus-visible { outline: 2px solid var(--ps-focus); outline-offset: 2px; }
@media (max-width: 480px) {
  .ps-act-row { gap: 12px; }
  .ps-act-row .thumb { flex-basis: 72px; width: 72px; }
  .ps-act-row .tit { font-size: 16px; }
}