/* =========================================================
   나의 가톨릭 기도집 — 스타일시트
   ========================================================= */

/* ---------------------------------------------------------------
   V1.70 색상 기준 — 앱 전체에서 두 팔레트만 사용
   - 주간: 따뜻한 아이보리/오프화이트 바탕 + ORATIO 블루 포인트
   - 야간: 깊은 네이비 바탕 + 밝은 블루 포인트
   - 홈/설정/기도 상세/더보기/관리 화면이 같은 기본 변수(--bg, --accent,
     --line, --ink)를 공유한다. "시스템 설정"은 별도 3번째 팔레트가 아니라
     위 두 팔레트 중 기기 OS 설정을 따라 선택한다.
   --------------------------------------------------------------- */
:root {
  /* 2026-09-20 폭 통일: #app/.screen/.topbar/.bottom-nav가 640/760/980/1180px로
     제각각 흩어져 있던 것을 하나의 변수로 합친다. 값 자체(980px)는 기존에
     실질적으로 쓰이던 #screen-home/.topbar/.bottom-nav 폭을 그대로 채택 —
     화면마다 상단바/본문/하단바 폭이 어긋나던 문제의 근본 원인. */
  --layout-max: 980px;
  --bg: #faf6ee;
  --bg-elevated: #ffffff;
  --ink: #2b2420;
  --ink-soft: #6b6055;
  --accent: #8a1f2d;      /* 2026-09-13 복원: V1.71 이후 #922844로 어긋나 있던 것을 8/30 원본(전례 적색 계열)으로 되돌림 */
  --accent-soft: #f3e3d9;
  --gold: #b8860b;
  --line: #e6dcc9;
  --leader: #2b2420;
  --response-bg: #f1e6d3;
  --response-ink: #5a3d1f;
  --hero-to: #5c1420;      /* 2026-09-13 복원: 하늘색(#d8e6ff)으로 어긋나 있던 것을 8/30 원본(짙은 와인)으로 되돌림 */
  --shadow: 0 2px 10px rgba(60, 40, 20, 0.08);
  --radius: 14px;
  /* 시스템 고딕(산세리프) 폰트만 사용 — 외부 폰트 로딩 없음 */
  --font-sans: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Segoe UI',
    'Malgun Gothic', 'Roboto', 'Helvetica Neue', system-ui, sans-serif;
  --safe-top: env(safe-area-inset-top, 0px);
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

:root[data-theme="dark"] {
  --bg: #0e1729;
  --bg-elevated: #111b30;
  --ink: #f3f7ff;
  --ink-soft: #aab9d1;
  --accent: #70a0ff;      /* V1.70: 홈과 전 화면을 같은 야간 블루 톤으로 통일 */
  --accent-soft: #1c2a47;
  --gold: #e0b25c;
  --line: #2b3e64;
  --leader: #f3f7ff;
  --response-bg: #182748;
  --response-ink: #d6e3ff;
  --hero-to: #08101e;
  --shadow: 0 2px 16px rgba(0, 0, 0, 0.48);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0e1729;
    --bg-elevated: #111b30;
    --ink: #f3f7ff;
    --ink-soft: #aab9d1;
    --accent: #70a0ff;
    --accent-soft: #1c2a47;
    --gold: #e0b25c;
    --line: #2b3e64;
    --leader: #f3f7ff;
    --response-bg: #182748;
    --response-ink: #d6e3ff;
    --hero-to: #08101e;
    --shadow: 0 2px 16px rgba(0, 0, 0, 0.48);
  }
}

* { box-sizing: border-box; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-sans);
  -webkit-tap-highlight-color: transparent;
  overscroll-behavior-y: none;
}

body {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}

#app {
  max-width: var(--layout-max);
  margin: 0 auto;
  width: 100%;
  flex: 1;
  display: flex;
  flex-direction: column;
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
  position: relative;
}

button {
  font-family: inherit;
  cursor: pointer;
  border: none;
  background: none;
  color: inherit;
}

a { color: inherit; }

/* ---------- Top bar ---------- */
.topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  padding: calc(12px + var(--safe-top)) 14px 12px;
  background: var(--bg-elevated);
  border-bottom: 1px solid var(--line);
}

.topbar h1 {
  grid-column: 2;
  justify-self: stretch;
  width: 100%;
  max-width: 100%;
  font-size: 17px;
  font-weight: 700;
  margin: 0;
  min-width: 0;
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.topbar > #btn-back {
  grid-column: 1;
  justify-self: start;
}

.topbar-actions {
  grid-column: 3;
  justify-self: end;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

/* 2026-08-29 "레지오 마리애 문양 아이콘 재배치": legio-today 제목의 비둘기
   이모지(🕊️) 자리를 대체하는 문양 — h1 텍스트와 같은 줄에 인라인으로
   놓인다(위 index.html의 h1 구조 참고). 원본이 세로로 긴 메달형이라
   폭(width) 기준으로 키우면 줄 높이가 깨지므로 높이만 지정하고 폭은
   auto로 비율을 그대로 유지한다. 28px는 상단바의 다른 아이콘 버튼
   (.icon-btn, 34px)보다 작아 상단바 높이를 늘리지 않으면서, 기존 22px
   보다 눈에 잘 띄도록 키운 값이다. vertical-align으로 텍스트와 세로
   중앙을 맞추고, margin-right로 뒤따르는 글자와 간격을 둔다. */
.topbar-legio-crest {
  height: 28px;
  width: 28px;
  vertical-align: middle;
  margin-right: 6px;
  margin-top: -2px;
  overflow: visible;
}

/* 2026-09-05 레지오 아이콘 최종안(C): 기존 세부 문양 이미지는 20px 전후의
   하단 탭에서 형태가 뭉개져 보였으므로, 방패 + 십자가 + M만 남긴 전용
   Marian Shield 심볼을 사용한다. 두 색 모두 기존 테마 변수만 사용해서
   다크에서는 금색/밝은 M, 라이트에서는 금색/짙은 M으로 자동 대응한다. */
.legio-mark { display: inline-block; flex: none; }
.legio-mark-shield {
  fill: none;
  stroke: var(--gold);
  stroke-width: 4.8;
  stroke-linejoin: round;
}
.legio-mark-cross { fill: var(--gold); }
.legio-mark-letter {
  fill: var(--ink);
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 34px;
  font-weight: 700;
}

/* 2026-09-22 상단바 단순화: 로그인/MY/관리자 중 상태별 주 진입 하나만 둔다.
   가운데 열은 남은 폭만 사용하며, 제목이 길면 액션을 침범하지 않고 말줄임한다. */
.topbar-account {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.topbar-account-btn {
  background: none;
  border: none;
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  padding: 6px 4px;
  color: var(--ink-soft);
  white-space: nowrap;
}
.topbar-account-my { color: var(--accent); font-weight: 700; }
/* 관리자 세션 전용 topbar 버튼 — 회원용 로그인/MY와 색을 다르게 해서
   "지금 관리 기능에 접근할 수 있다"는 것을 한눈에 구분한다. */
.topbar-account-admin { position: relative; color: var(--accent); font-weight: 700; }

.icon-btn {
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: 18px;
  color: var(--ink);
}
.icon-btn:active { background: var(--accent-soft); }

/* ---------- Screens ---------- */
.screen {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 16px 16px calc(90px + var(--safe-bottom));
  -webkit-overflow-scrolling: touch;
}
/* V1.24 버그 수정: .hidden이 단독으로는 아무 효과가 없어서(.screen.hidden,
   .modal-backdrop.hidden 등 조합 선택자에서만 숨겨짐) account-guest-box/
   account-loggedin-box 등 일반 div에 class="hidden"만 붙인 곳들이 전부
   실제로는 안 숨겨지고 있었음(로그인 폼과 "로그인됨" 상태가 동시에 보이던
   버그, 로그아웃해도 이름이 안 지워지는 것처럼 보이던 버그의 근본 원인).
   전역 규칙 하나로 모든 .hidden 사용처를 한 번에 고침. */
.hidden { display: none !important; }

.screen.hidden { display: none; }

/* ---------- Home ---------- */
.hero {
  background: linear-gradient(160deg, var(--accent) 0%, var(--hero-to) 100%);
  color: #fff8f0;
  border-radius: 18px;
  padding: 20px 18px;
  box-shadow: var(--shadow);
  margin-bottom: 20px;
}
.hero-label {
  font-size: 12px;
  letter-spacing: 0.08em;
  opacity: 0.85;
  display: flex;
  align-items: center;
  gap: 6px;
}
.hero-date {
  font-size: 15px;
  margin-top: 6px;
  opacity: 0.95;
}
.hero-devotion {
  display: inline-block;
  margin-top: 6px;
  font-size: 12px;
  background: rgba(255,255,255,0.16);
  padding: 3px 9px;
  border-radius: 999px;
}
.hero-list {
  list-style: none;
  margin: 14px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.hero-list li { display: block; }
.hero-list .hl-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  background: rgba(255,255,255,0.1);
  border: none;
  border-radius: 10px;
  padding: 9px 12px;
  font-size: 14.5px;
  font-family: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.hero-list .hl-row:active { background: rgba(255,255,255,0.2); }
/* 메인 「나의 기도 바로보기 + 요일별 묵주기도 자동 표시」(2026-08-25):
   "나의 기도 >"/"묵주기도 지향 >" 처럼 번호 없이 바로 열람하는 행 —
   번호 원(.num) 없이도 시각적으로 구분되도록 살짝 진한 배경만 추가. */
.hero-list .hl-row.hl-nav { background: rgba(255,255,255,0.16); font-weight: 600; }
.hero-list .hl-row.hl-nav:active { background: rgba(255,255,255,0.26); }
.hero-list .hl-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hero-list .hl-arrow { margin-left: auto; opacity: 0.75; font-size: 15px; flex-shrink: 0; }
.hero-list .num {
  width: 20px; height: 20px;
  border-radius: 50%;
  background: rgba(255,255,255,0.25);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; flex-shrink: 0;
}
.hero-cta {
  margin-top: 16px;
  width: 100%;
  background: #fff;
  color: var(--accent);
  font-weight: 700;
  font-size: 15px;
  padding: 13px;
  border-radius: 12px;
  text-align: center;
}
.hero-cta:active { opacity: 0.85; }
.hero-edit {
  margin-top: 10px;
  font-size: 12px;
  opacity: 0.85;
  text-align: center;
  text-decoration: underline;
}

.section-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--ink-soft);
  margin: 22px 2px 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.section-title .more { font-size: 12px; font-weight: 500; color: var(--accent); }

.quick-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
}
.quick-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 15px 14px;
  text-align: center;
  box-shadow: var(--shadow);
}
/* 아이콘은 빼고 분류 카드와 같은 "텍스트 중심" 언어로 통일 — 대신 분류명을
   작은 라벨(eyebrow)로 위에 얹어서 빠른 기도 카드만의 위계를 살림. */
.quick-card .qc-icon { display: none; }
.quick-card .qc-sub {
  order: -1;
  font-size: 10.5px;
  font-weight: 700;
  color: var(--accent);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin: 0 0 5px;
}
.quick-card .qc-title { font-size: 15px; font-weight: 700; line-height: 1.35; }

.menu-list {
  display: flex;
  flex-direction: column;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--shadow);
}
.menu-list button {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 15px;
  font-size: 15px;
  border-bottom: 1px solid var(--line);
  text-align: left;
}
.menu-list button:last-child { border-bottom: none; }
.menu-list button:active { background: var(--accent-soft); }
/* 카드 계열(빠른 기도/분류)의 강조색 언어를 메뉴 리스트에도 옮겨서, 아이콘을
   작은 강조색 배지로 감싸 화면 전체의 시각적 통일감을 맞춤. */
.menu-list .mi-icon {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  background: var(--accent-soft);
  border-radius: 9px;
}
.menu-list .mi-arrow { margin-left: auto; color: var(--ink-soft); }

/* ---------- Category / list rows ---------- */
.cat-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.cat-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px 8px;
  text-align: center;
  box-shadow: var(--shadow);
}
.cat-card .cc-icon { font-size: 22px; }
.cat-card .cc-name { font-size: 12.5px; margin-top: 6px; font-weight: 600; line-height: 1.3; }

/* 홈 화면 전용 축약형 — 빠르고 간편한 사용이 목적이므로 더 작고 조밀하게.
   아이콘은 빼고(사용자 피드백: 안 보임/불필요) 이름 글자를 크게 키워서
   3열로 표시 — 텍스트만으로 바로 읽히도록 함. */
.cat-grid.compact {
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.cat-grid.compact .cat-card {
  padding: 14px 6px;
  border-radius: 12px;
}
.cat-grid.compact .cat-card .cc-icon { display: none; }
.cat-grid.compact .cat-card .cc-name { font-size: 14px; margin-top: 0; font-weight: 700; line-height: 1.3; }
.cat-grid.compact .cat-card .qc-sub { display: none; }
.cat-grid.compact .cat-card.featured::after { font-size: 7.5px; top: 4px; right: 4px; }
.cat-group-title.compact { font-size: 11px; margin-top: 10px; margin-bottom: 4px; }
.cat-card.featured {
  border-color: var(--gold);
  background: linear-gradient(160deg, var(--accent-soft), var(--bg-elevated));
  position: relative;
}
.cat-card.featured::after {
  content: '⭐ 전용';
  position: absolute;
  top: 6px; right: 6px;
  font-size: 9px;
  color: var(--gold);
  font-weight: 700;
}
.cat-group-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ink-soft);
  margin: 18px 2px 9px;
}
.cat-group-title:first-child { margin-top: 0; }
.cat-desc-banner {
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: 10px;
  padding: 10px 12px;
  font-size: 12.5px;
  line-height: 1.6;
  margin-bottom: 14px;
}
/* V1.55 테스트 수정 4-1: "본당" 화면 상단 — 교구는 작게(보조정보), 본당명은
   크게(주정보)로 위계를 나눔. "내 본당"이라는 화면 제목은 위 topbar-title
   (메뉴 이름)로만 남기고, 화면 안에서는 실제 본당 이름이 가장 먼저 눈에
   띄어야 한다는 원칙("교구 · 본당명" 한 줄 동일 크기 표기에서 변경). */
.parish-header { margin-bottom: 14px; }
.parish-header-diocese {
  font-size: 12px;
  color: var(--ink-soft);
  letter-spacing: 0.02em;
  margin-bottom: 2px;
}
.parish-header-name {
  font-size: 21px;
  font-weight: 800;
  color: var(--ink);
  line-height: 1.3;
}
/* 로그인 성공 상태 강조(V1.24) — 일반 안내 배너(연한 색)와 뚜렷이 구분되도록
   초록 계열로 표시. "내 계정"/"관리자 화면" 세션 배너 양쪽에서 재사용. */
.session-banner-active {
  background: #1f6f43 !important;
  color: #ffffff !important;
  font-weight: 700;
  border: none;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .session-banner-active { background: #2e8b57 !important; }
}
:root[data-theme="dark"] .session-banner-active { background: #2e8b57 !important; }
.list-subheader {
  font-size: 12px;
  font-weight: 700;
  color: var(--ink-soft);
  padding: 14px 4px 6px;
}
/* ORATIO 기도 목록 MASTER STYLE(2026-08-28): 2차분류(SECTION HEADER) 전환을
   박스나 색상이 아니라 여백 + 얇은 구분선으로만 표현한다. 목록의 첫 번째
   SECTION HEADER는 위에 구분할 대상이 없으므로(padding-top:0과 동일한
   이유) 상단 여백·구분선을 만들지 않는다. */
.list-subheader:not(:first-child) {
  margin-top: 8px;
  border-top: 1px solid var(--line);
}
.list-subheader:first-child { padding-top: 0; }
.list-subheader-count {
  font-weight: 600;
  color: var(--ink-soft);
  opacity: 0.75;
}

.prayer-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 4px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  width: 100%;
}
.prayer-row .pr-main { flex: 1; min-width: 0; }
.prayer-row .pr-title { font-size: 15px; font-weight: 700; color: var(--ink); }
/* 홈 화면 카드(빠른 기도/분류)와 같은 "강조색 라벨" 언어로 통일 — 제목과
   분류가 같은 색이라 구분이 안 된다는 피드백 반영. */
.prayer-row .pr-sub {
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
  margin-top: 3px;
  letter-spacing: 0.02em;
}
.prayer-row .pr-fav { font-size: 18px; color: var(--ink-soft); flex-shrink: 0; }

/* 2026-08-28 "기도 카테고리 화면 보정": 2차 분류를 접고 펴던 아코디언
   (.cat-sub-accordion/button.cat-sub-header/button.cat-sub-toggle-all)
   자체를 없앴다 — 소제목은 다시 평범한 .list-subheader로 표시하고, 그
   아래 기도 목록은 항상 펼쳐져 있다. */

/* 2026-08-29 "ORATIO 화면 디자인 보정" PART A~G: 기도 카테고리 화면에서
   소분류(및 대분류 직속 묶음)마다 독립된 카드로 보이도록 하는 wrapper.
   새 디자인 시스템을 만들지 않고 기존 --bg-elevated/--line/--shadow 변수와
   .list-subheader/.prayer-row를 그대로 재사용한다 — 바뀐 건 이 카드
   래퍼와 카드 사이 여백뿐이다. */
.prayer-section-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: var(--shadow);
  margin-bottom: 22px;
}
.prayer-section-card:last-child { margin-bottom: 0; }
/* 카드 안에서는 heading이 항상 카드의 첫 자식이라 기존
   .list-subheader:first-child { padding-top:0 } 규칙이 그대로 적용되면
   카드 윗변에 제목이 너무 붙어 보인다 — 카드 전용으로 상단 여백을 다시
   준다(다른 화면의 .list-subheader는 그대로 영향 없음: 이 선택자는
   .prayer-section-card 안에 있을 때만 적용됨). */
.prayer-section-card > .prayer-section-title.list-subheader:first-child {
  padding: 16px 16px 10px;
  margin-top: 0;
  border-top: none;
}
/* 카드 안 기도 row는 좌우 여백을 카드 패딩에 맞춰 살짝 넓히고, 마지막
   row의 아래쪽 구분선은 카드 하단 테두리와 겹치지 않도록 없앤다. 기본
   .prayer-row(다른 화면에서도 쓰는 공용 스타일)는 건드리지 않고, 이
   컴파운드 선택자로 카드 안에서만 재정의한다. */
.prayer-section-card .prayer-row {
  padding: 14px 16px;
  min-height: 58px;
}
.prayer-section-card .prayer-row:last-child { border-bottom: none; }

/* 2026-08-28 "ORATIO 추가 UX 개선" Part A: 내 계정 화면 — 사람 정보 카드,
   접히는 세례명/연결된 로그인/기도 관리. 새 색상 시스템 없이 기존
   .legio-card/변수만 사용. */
.account-info-card { padding: 16px; }
.account-info-name { font-size: 18px; font-weight: 800; color: var(--ink); }
.account-info-baptismal { font-size: 13.5px; color: var(--ink-soft); margin-top: 2px; }
.account-info-sub { font-size: 13px; color: var(--ink-soft); margin-top: 6px; }
.account-role-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.account-role-badges:empty { margin-top: 0; }

.account-settings-card { padding: 4px 16px; }
.account-baptismal-row {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 0; border-bottom: 1px solid var(--line);
}
.account-baptismal-row .acc-row-label { font-size: 13px; font-weight: 700; color: var(--ink-soft); flex-shrink: 0; }
.account-baptismal-row .acc-row-value { flex: 1; font-size: 14px; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
button.acc-row-btn { width: auto; padding: 6px 12px; font-size: 12.5px; flex-shrink: 0; }
.account-baptismal-editbox { padding: 0 0 14px; border-bottom: 1px solid var(--line); }
.account-baptismal-editbox input[type="text"] {
  width: 100%; box-sizing: border-box; padding: 11px 13px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--bg-elevated); color: var(--ink); font-size: 14.5px;
}
.account-accordion-header {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  background: none; border: none; border-bottom: 1px solid var(--line);
  padding: 14px 0; font-size: 14px; font-weight: 700; color: var(--ink); text-align: left; cursor: pointer;
}
.account-accordion-body:last-child .account-accordion-header,
.account-accordion-body:empty { border-bottom: none; }
.account-accordion-arrow { color: var(--ink-soft); font-weight: 400; }
.account-accordion-body { padding: 4px 0 14px; border-bottom: 1px solid var(--line); }
.account-accordion-body:last-child { border-bottom: none; }
.account-accordion-note { font-size: 11.5px; color: var(--ink-soft); margin-bottom: 8px; line-height: 1.6; }
.account-intention-row {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 10px 0; border-top: 1px solid var(--line);
}
.account-intention-row:first-child { border-top: none; padding-top: 0; }
.account-intention-row .air-title { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.account-intention-row .air-status { font-size: 11.5px; color: var(--ink-soft); margin-top: 2px; }
.account-intention-row .air-status.air-set { color: var(--accent); }
.account-intention-row .air-arrow { color: var(--ink-soft); flex-shrink: 0; }

/* 2026-08-28 "ORATIO 추가 UX 개선" Part B 14번: 수정 상태 표시는 새 색상을
   만들지 않고 기존 강조색(--accent)만 씀 — 제목의 작은 "수정 중" 배지,
   입력 영역 border(위 인라인 style에서 var(--accent)), 저장 버튼(기존
   .primary-btn) 정도만. */
.detail-editing-badge {
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: 999px;
  padding: 3px 9px;
  white-space: nowrap;
}
.prayer-row .pr-fav.active { color: var(--gold); }
.badge-sample {
  display: inline-block;
  font-size: 10px;
  color: var(--accent);
  border: 1px solid var(--accent);
  border-radius: 6px;
  padding: 1px 5px;
  margin-left: 6px;
  vertical-align: middle;
}

.search-box {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 11px 14px;
  margin-bottom: 16px;
}
.search-box input {
  border: none;
  outline: none;
  background: transparent;
  font-size: 15px;
  flex: 1;
  color: var(--ink);
}

.empty-state {
  text-align: center;
  color: var(--ink-soft);
  padding: 50px 20px;
  font-size: 14px;
  line-height: 1.7;
}

/* ---------- Prayer detail ---------- */
.detail-header {
  padding: 4px 2px 14px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 18px;
}
.detail-title { font-size: 21px; font-weight: 800; }
.detail-meta { font-size: 12px; color: var(--ink-soft); margin-top: 5px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }

.prayer-text {
  font-family: var(--font-sans);
  /* 기도문 JSON의 줄바꿈은 그대로 보존하되 화면에서 두 줄 간격처럼 벌어지지 않게 한다. */
  line-height: 1.72;
}
.prayer-text .ln {
  margin-bottom: 12px;
  white-space: pre-line;
}
.prayer-text .ln.leader,
.prayer-text .ln.reply,
.prayer-text .ln.response,
.prayer-text .ln.cross {
  margin-bottom: 9px;
}
.prayer-text .ln.leader {
  text-align: left;
  color: var(--leader);
  padding-left: 1.3em;
  text-indent: -1.3em;
}
.prayer-text .ln.leader::before { content: '○ '; color: var(--accent); font-weight: 700; }
.prayer-text .ln.reply {
  /* V1.34: 추가 블록 들여쓰기(margin-left:22px)를 빼고 선창(leader)과
     완전히 같은 위치에서 시작하도록 통일 — 기호 뒤 글자는 여전히
     hanging indent로 줄바꿈 시 첫 글자 위치에 맞춰짐(들여쓰기 "블록"이
     아니라 그냥 불릿 정렬). 사용자가 준 참고 이미지(에디터 불릿 목록)와
     같은 모양. */
  text-align: left;
  color: var(--leader);
  padding-left: 1.3em;
  text-indent: -1.3em;
  opacity: 0.92;
}
.prayer-text .ln.reply::before { content: '● '; color: var(--gold); font-weight: 700; }
.prayer-text .ln.response {
  text-align: left;
  color: var(--response-ink);
  padding-left: 1.3em;
  text-indent: -1.3em;
  opacity: 0.92;
}
.prayer-text .ln.response::before { content: '◎ '; font-weight: 700; }
/* ✝ 십자가(성호를 그으며) — V1.39: 선창(○)/후창(●)/모두(◎)와 완전히
   같은 "기호 + 문단" 구조로 통일. 그동안 십자가만 별도 여백(8px)·별도
   들여쓰기(들여쓰기 없음)·별도 글자 색으로 처리되어 있어서, 아무리
   색/굵기만 고쳐도 계속 다르게 보였음 — 진짜 원인은 애초에 다른 규칙을
   쓰고 있었던 것. 이제 padding-left/text-indent(행잉 인덴트)와 문단
   간격(.ln 공통 간격 사용)까지 선창/후창과
   동일하게 맞추고, 기호(✝) 자체만 다른 기호들처럼 색을 줘서 구분되게
   함 — 기능·모양 모두 선창/후창/모두와 같은 레벨의 "기호 종류 하나"가 됨. */
.prayer-text .ln.cross {
  text-align: left;
  color: var(--ink);
  padding-left: 1.3em;
  text-indent: -1.3em;
}
.prayer-text .ln.cross::before { content: '✝ '; color: var(--accent); font-weight: 700; }
.prayer-text .ln.tts-audio-current { background: rgba(174, 135, 59, .14); border-radius: 6px; }
.tts-audio-status { text-align: center; color: var(--ink-soft); font-size: 12px; margin: 0 0 8px; }
.prayer-text .ln .emphasis {
  color: var(--accent);
  font-weight: 700;
}
.prayer-text .ln.rubric {
  font-style: italic;
  font-size: 13px;
  color: var(--ink-soft);
  font-family: var(--font-sans);
}
/* h3 정도 크기의 실제 소제목처럼 — 세종도원성당 기도문처럼 한 화면 안에
   "초대의 말씀/본기도/마침기도" 같은 여러 섹션이 있는 긴 기도문에서 각
   구간을 한눈에 구분할 수 있도록 확대(기존엔 13px짜리 작은 라벨 수준이라
   거의 안 보였음). */
.prayer-text .ln.heading {
  font-family: var(--font-sans);
  font-weight: 800;
  color: var(--accent);
  font-size: 18px;
  letter-spacing: 0.01em;
  margin: 26px 0 10px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--accent-soft);
}
.prayer-text .ln.heading:first-child { margin-top: 0; }

.source-note {
  margin-top: 24px;
  padding-top: 14px;
  border-top: 1px dashed var(--line);
  font-size: 12px;
  color: var(--ink-soft);
  line-height: 1.6;
}
.source-note.warn { color: var(--accent); }

/* ---------- TTS bar ---------- */
/* 2026-08-30 "TTS UI 재보정": 이전 시도들(position:fixed 큰 흰색 바 →
   fixed 작은 캡슐)은 모두 "TTS 컨트롤을 담는 시각적 컨테이너를 화면에
   떠 있게 고정"하는 전제 자체가 문제였다 — 컨테이너가 있는 한 그 뒤로
   기도문 본문이 지나가며 마지막 문장/응답문/출처가 가려질 위험이
   구조적으로 남는다. 이번에는 컨테이너 자체를 없앤다:
   - position:fixed를 제거하고 정상 문서 흐름(normal flow)에 배치한다.
     TTS 재생은 Web Speech API(speechSynthesis)로 동작하므로 버튼이
     화면에 보이는지 여부와 재생 진행 자체는 무관하다 — 스크롤로 버튼이
     화면 밖에 나가도 재생은 계속된다(조작하려면 다시 스크롤해서 버튼을
     보이게 해야 할 뿐). 화면에 항상 고정해야 할 기술적 이유가 없다.
   - .tts-bar는 이제 흰 배경·테두리·그림자·padding이 전혀 없는 투명한
     정렬용 wrapper일 뿐이다 — 화면에 실제로 보이는 것은 버튼 3개뿐.
   - normal flow로 배치되므로, "화면 맨 아래부터 tts-bar 위치까지의
     거리"를 실측해서 여백을 만들던 전용 spacer(.tts-safe-area,
     updateTtsSafeArea())는 더 이상 필요 없어 완전히 제거했다(이 파일의
     .tts-safe-area 규칙 삭제, js/app.js의 관련 함수·호출부 삭제,
     index.html의 spacer div 삭제 — 각각 참고).
   - 다만 화면 맨 아래(.bottom-nav, position:fixed로 항상 고정)는 여전히
     존재하므로, #screen-detail 화면 전체에는 다른 화면과 똑같은 기본
     하단 여백(.screen의 기존 padding-bottom: calc(90px + safe-bottom),
     하단 메뉴 높이만큼)만 유지한다 — 예전처럼 "TTS 높이"를 위한 별도의
     큰 여백은 전혀 남기지 않는다(아래 #screen-detail.screen 규칙
     자체를 삭제해 다른 화면과 동일한 기본값을 그대로 물려받게 함). */
.tts-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 16px 0 4px;
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}
.tts-bar button {
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--accent-soft);
  font-size: 14px;
}
.tts-bar .tts-play { background: var(--accent); color: #fff; width: 38px; height: 38px; font-size: 16px; }
.tts-bar .tts-play:disabled { opacity: .65; cursor: wait; }
.tts-bar.has-audio { justify-content: flex-start; }
.tts-bar.has-audio #tts-back { display: none; }
.tts-bar.has-audio button { flex: 0 0 auto; }
.tts-bar.has-audio .tts-play { width: 34px; height: 34px; font-size: 14px; }
.tts-audio-timeline { display: flex; align-items: center; gap: 6px; flex: 1 1 auto; min-width: 0; }
.tts-audio-timeline[hidden] { display: none; }
.tts-audio-time { flex: 0 0 auto; color: var(--ink-soft); font-size: 11px; font-variant-numeric: tabular-nums; }
.tts-audio-seek { flex: 1 1 auto; min-width: 36px; width: 100%; height: 28px; margin: 0; padding: 0; background: transparent; -webkit-appearance: none; appearance: none; cursor: pointer; }
.tts-audio-seek:disabled { cursor: default; opacity: .65; }
.tts-audio-seek::-webkit-slider-runnable-track { height: 5px; border-radius: 999px; background: linear-gradient(to right, var(--accent) var(--audio-progress, 0%), var(--line) var(--audio-progress, 0%)); }
.tts-audio-seek::-moz-range-track { height: 5px; border-radius: 999px; background: linear-gradient(to right, var(--accent) var(--audio-progress, 0%), var(--line) var(--audio-progress, 0%)); }
.tts-audio-seek::-webkit-slider-thumb { width: 16px; height: 16px; margin-top: -5.5px; border: 2px solid #fff; border-radius: 50%; background: var(--accent); box-shadow: 0 1px 4px rgba(0,0,0,.25); -webkit-appearance: none; appearance: none; }
.tts-audio-seek::-moz-range-thumb { width: 12px; height: 12px; border: 2px solid #fff; border-radius: 50%; background: var(--accent); box-shadow: 0 1px 4px rgba(0,0,0,.25); }
.tts-audio-seek:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 999px; }

/* ---------- Bottom nav ---------- */
/* position:fixed로 뷰포트 하단에 항상 고정 — sticky는 #app이 스크롤 컨테이너가
   아니라 문서 전체 높이만큼 늘어나는 구조라, 콘텐츠가 길어지면 화면 하단이
   아니라 문서 중간 어딘가에 붕 떠 보이는 문제가 있었음(사용자 피드백으로 발견).
   fixed로 바꾸고 #app과 같은 폭(var(--layout-max))에 맞춰 중앙 정렬.
   (2026-09-20: 하드코딩된 640px는 3311행 근처의 App shell 오버라이드에서
   덮어써지고 있었음 — 변수로 통일해 이중 선언을 제거) */
.bottom-nav {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  max-width: var(--layout-max);
  margin: 0 auto;
  z-index: 20;
  display: flex;
  background: var(--bg-elevated);
  border-top: 1px solid var(--line);
  padding: 6px 4px calc(6px + var(--safe-bottom));
  box-shadow: 0 -2px 10px rgba(0,0,0,0.06);
}
.bottom-nav button {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 6px 2px;
  font-size: 10.5px;
  color: var(--ink-soft);
  border-radius: 10px;
}
.bottom-nav button .bn-icon { font-size: 19px; }
/* 2026-08-25 "레지오 마리애 홈 화면 디자인 적용": 레지오 전용 하단 탭만
   이모지 대신 이미지 아이콘 사용(#legio-bottom-nav) — ORATIO 일반 하단
   탭(#main-bottom-nav)의 .bn-icon 이모지는 그대로 유지, 새 디자인
   시스템을 만들지 않고 같은 크기 자리(19px 상당)에 이미지만 대체. */
.bottom-nav button .bn-icon-img { width: 20px; height: 20px; object-fit: contain; }
/* 메인 ORATIO 하단의 레지오 진입 심볼은 일반 이미지보다 2px 크게 잡아
   방패 윤곽과 M이 다른 이모지 탭과 같은 시각적 무게로 보이게 한다. */
.bottom-nav button .legio-nav-mark { width: 22px; height: 22px; }
.bottom-nav button.active { color: var(--accent); }

/* ---------- Order builder ---------- */
.order-item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 11px 12px;
  margin-bottom: 8px;
}
.order-item .oi-title { flex: 1; font-size: 14.5px; font-weight: 600; }
.order-item .oi-btn { width: 30px; height: 30px; border-radius: 50%; background: var(--accent-soft); font-size: 14px; }
.order-item .oi-btn.danger { color: var(--accent); }

.preset-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 12px;
  box-shadow: var(--shadow);
}
.preset-card .pc-name { font-weight: 700; font-size: 15px; }
.preset-card .pc-list { font-size: 12.5px; color: var(--ink-soft); margin-top: 5px; line-height: 1.6; }
.preset-card .pc-actions { margin-top: 10px; display: flex; gap: 8px; }
.preset-card .pc-actions button {
  font-size: 12.5px;
  padding: 7px 12px;
  border-radius: 8px;
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 600;
}

.form-group { margin-bottom: 16px; }
.form-group label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; color: var(--ink-soft); }
.form-group input[type="text"] {
  width: 100%;
  padding: 11px 13px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 15px;
}

/* 관리자 기도문 본문 편집 — 줄 선택 후 형식 지정 툴바 */
.mark-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 8px;
}
.mark-toolbar .mark-btn {
  padding: 7px 11px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--accent-soft);
  color: var(--accent);
  font-size: 12.5px;
  font-weight: 700;
}
.mark-toolbar .mark-btn:active { background: var(--accent); color: #fff; }

/* 「기도 수정 화면·본당관리자 아이콘 통일」(2026-08-29): 일반 기도 수정
   (admin-body-input) / 본당 직접 작성 기도 수정(같은 admin-body-input 재사용) /
   나의 기도·묵주기도 지향 수정(detail-intention-edit-input) 세 화면이 모두
   이 클래스 하나만 공유한다. 기존에는 나의 기도 수정 textarea에만 인라인
   style로 border: 1px solid var(--accent)를 항상 걸어두고 있었는데, 브라우저
   기본 파란 포커스 outline까지 함께 나타나면서 "파란색+빨간색(전례 적색
   accent) 이중 테두리"로 보이는 문제가 있었다. outline은 완전히 없애고,
   포커스 시에만 accent 색 테두리 + accent-soft 톤의 은은한 box-shadow 링
   하나로 강조한다(새 색상 값을 추가하지 않고 기존 --accent/--accent-soft만
   재사용). */
.prayer-body-editor {
  width: 100%;
  box-sizing: border-box;
  padding: 12px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 14.5px;
  font-family: var(--font-sans);
  line-height: 1.7;
  outline: none;
  resize: vertical;
}
.prayer-body-editor:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 2px var(--accent-soft);
}
/* 「나의 기도 수정창 높이 보정」(2026-08-29): 서식 도구·테두리 등 편집기
   디자인은 위 .prayer-body-editor로 이미 통일했지만, 나의 기도/묵주기도
   지향 수정창(#detail-intention-edit-input)에만 예전 rows="6"(일반 기도
   수정창은 rows="12")이 남아 있어 높이가 절반으로 작게 보이던 문제를
   고친다. 다른 .prayer-body-editor 사용처(일반 기도·본당 직접 작성 기도
   수정창인 #admin-body-input)는 rows="12"를 그대로 쓰고 있으므로 이
   min-height는 이 textarea에만 스코프를 한정해서 적용한다. 사용자가
   오른쪽 아래를 드래그해 직접 늘리고 줄이는 기존 resize: vertical 기능은
   .prayer-body-editor에서 그대로 물려받아 유지된다. */
#detail-intention-edit-input {
  min-height: 300px;
}
@media (max-width: 600px) {
  #detail-intention-edit-input {
    min-height: 260px;
  }
}

/* 설정 > 소속 활동단체 선택 칩 */
.chip-toggle {
  padding: 7px 12px;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink-soft);
  font-size: 12.5px;
  font-weight: 600;
}
.chip-toggle.active {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent);
}
/* 2026-08-26 도입, 2026-08-28 app.js 전체 파일 교체본 복원 시 함께 복원:
   레지오 마리애 외 아직 실제 기능이 없는 소속 활동단체 칩의 비활성 표시. */
.chip-toggle-disabled {
  opacity: 0.55;
  cursor: not-allowed;
}
.chip-toggle-disabled.active {
  background: var(--bg-elevated);
  color: var(--ink-soft);
  border-color: var(--line);
}

.primary-btn {
  width: 100%;
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  padding: 13px;
  border-radius: 12px;
  font-size: 15px;
}
.ghost-btn {
  width: 100%;
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 600;
  padding: 12px;
  border-radius: 12px;
  font-size: 14px;
}

/* ---------- Settings ---------- */
.setting-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 4px;
  border-bottom: 1px solid var(--line);
}
.setting-row .sr-label { font-size: 14.5px; font-weight: 600; }
.setting-row .sr-desc { font-size: 12px; color: var(--ink-soft); margin-top: 2px; }

.settings-footer {
  text-align: center;
  font-size: 11.5px;
  color: var(--ink-soft);
  padding: 22px 4px 8px;
}

/* ---------- 레지오 마리애 전용 모드 브랜딩 ----------
   V2.90부터 대표 표식은 초록 방패·십자가·M 심벌 하나로 통일한다.
   "오늘 기록"에서만 보이는 브랜딩 영역이며 Pr.명/회원명/세례명/본당은
   이미지에 합성하지 않고 실제 로그인 회원 데이터로 채운다. */
.legio-branding {
  text-align: center;
  padding: 22px 16px 18px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 10px;
}
.legio-branding-logo {
  display: block;
  width: 72px;
  max-width: 72px;
  height: 72px;
  object-fit: contain;
  margin: 0 auto 8px;
}
.legio-branding-pr { font-size: 14.5px; font-weight: 700; color: var(--accent); margin-top: 8px; }
.legio-branding-name { font-size: 13.5px; font-weight: 600; color: var(--ink); margin-top: 3px; }
.legio-branding-parish { font-size: 12px; color: var(--ink-soft); margin-top: 2px; }

/* V2.90: 별도 레지오 스플래시를 없애고 실제 화면 자체만 짧게 전환한다. */
.legio-screen-enter { animation: legio-screen-enter .24s ease-out both; }
@keyframes legio-screen-enter {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.legio-hub-crest { display:block; width:62px; height:62px; object-fit:contain; margin:0 auto 10px; }
@media (prefers-reduced-motion: reduce) {
  .legio-screen-enter { animation:none !important; }
}


/* ---------- 레지오 활동기록부 (2026-08-25) ---------- */
.legio-menu-row {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  background: none;
}
.legio-menu-row:active { background: var(--accent-soft); }
.legio-menu-label { display: block; font-size: 14.5px; font-weight: 600; }
.legio-menu-desc { display: block; font-size: 12px; color: var(--ink-soft); margin-top: 2px; }
.legio-menu-arrow { color: var(--ink-soft); font-size: 18px; }
.legio-menu-row-soon .legio-menu-label,
.legio-menu-row-soon .legio-menu-desc { opacity: .6; }

/* 2026-08-25 "오늘 기록 화면 보완" — 기존 Project Xavier V5.21의 날짜
   스트립/상태 표시/자동저장 UX를 그대로 재현. 색상은 기존 토큰
   (--accent/--line/--ink-soft 등)만 쓰고 새 팔레트를 만들지 않음. */
.legio-datebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 4px 4px;
}
.legio-arw {
  width: 34px;
  height: 34px;
  flex: none;
  border-radius: 10px;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  color: var(--ink);
  font-size: 17px;
  line-height: 1;
}
.legio-arw:disabled { opacity: .35; }
.legio-date-title { flex: 1; text-align: center; }
.legio-date-title b { font-size: 14.5px; }
.legio-date-status { font-size: 12px; color: var(--ink-soft); margin-top: 2px; }
.legio-date-label { font-weight: 700; font-size: 14.5px; text-align: center; flex: 1; }
.legio-closed-badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
  background: var(--accent-soft);
  border-radius: 999px;
  padding: 2px 8px;
  margin-left: 6px;
  vertical-align: middle;
}
/* 7일 요일 스트립(V5.21과 동일한 사용 흐름) — 선택된 주 안에서 날짜를
   눌러 바로 그 날짜 기록을 불러옴. */
.legio-date-strip {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  padding: 4px 2px 10px;
}
.legio-date-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 6px 2px;
  border-radius: 10px;
  background: var(--bg-elevated);
  border: 1px solid transparent;
  color: var(--ink-soft);
  font-size: 11px;
}
.legio-date-cell .ldc-dd { font-size: 13px; font-weight: 700; color: var(--ink); }
.legio-date-cell.is-selected { border-color: var(--accent); background: var(--accent-soft); }
.legio-date-cell.is-selected .ldc-dd { color: var(--accent); }
/* M(확정)/A(자동 마감) — V5.21과 같은 두 가지 마감 상태 배지를 점으로 표시 */
.legio-date-cell.is-m .ldc-dd::after,
.legio-date-cell.is-a .ldc-dd::after {
  content: '';
  display: block;
  width: 4px; height: 4px;
  border-radius: 50%;
  margin: 2px auto 0;
  background: var(--accent);
}
.legio-date-cell.is-a .ldc-dd::after { background: var(--ink-soft); }
.legio-date-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 4px 14px;
}
.legio-date-tools input[type="date"] {
  flex: 1;
  padding: 8px 10px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13px;
}
/* 2026-08-28 "레지오 활동기록부 및 계정 기능 개선" 1번: "즐겨찾는 항목" 위
   활동항목 검색창(legio- 전용 클래스, 전역 CSS 변경 없음). */
.legio-search-bar { padding: 0 4px 10px; }
.legio-search-bar input[type="search"] {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13px;
}
/* 자동 저장 상태 표시(V5.21의 "저장 대기/저장 중/저장됨/저장 실패") */
.legio-save-indicator { font-size: 11.5px; color: var(--ink-soft); white-space: nowrap; }
.legio-save-indicator.is-active { color: var(--accent); }
.legio-save-indicator.is-error { color: #b00; font-weight: 700; }
.legio-lockbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: 10px;
  padding: 10px 12px;
  margin: 0 4px 12px;
  font-size: 12.5px;
}
.legio-editnote {
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: 10px;
  padding: 10px 12px;
  margin: 0 4px 12px;
  font-size: 12.5px;
}
.legio-item-row.is-locked .legio-stepper-btn { opacity: .35; }
.legio-section-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--ink-soft);
  padding: 16px 4px 6px;
}
.legio-item-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 4px;
  border-bottom: 1px solid var(--line);
}
.legio-fav-btn {
  width: 26px;
  height: 26px;
  flex: none;
  border-radius: 8px;
  background: var(--bg-elevated);
  color: var(--line);
  font-size: 14px;
  line-height: 1;
}
.legio-fav-btn.on { color: #f0b429; }
.legio-item-name { flex: 1; font-size: 14px; }
.legio-item-unit { color: var(--ink-soft); font-size: 11.5px; margin-left: 4px; }
.legio-stepper { display: flex; align-items: center; gap: 8px; flex: none; }
.legio-stepper-btn {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 700;
  font-size: 16px;
  line-height: 1;
}
/* 2026-08-25 "숫자 입력 영역 재점검": 가운데 숫자를 순수 텍스트(span)가
   아니라 실제 입력 요소로 바꿈(V5.21과 동일 — 직접 눌러서 숫자를 입력할
   수 있어야 함). 숫자 스피너가 붙는 type="number" 대신 V5.21처럼
   inputmode="numeric"인 텍스트 입력으로 둬서 leading zero 정리를
   onchange에서 직접 제어. */
.legio-qty-input {
  min-width: 34px;
  max-width: 46px;
  text-align: center;
  font-weight: 700;
  font-size: 14.5px;
  padding: 5px 2px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
}
.legio-qty-input:focus { border-color: var(--accent); outline: none; }
.legio-qty-input[readonly] { opacity: .6; background: transparent; }

/* ---------------------------------------------------------------
   2026-08-27 레지오 UI 원형 복원: 주간 보고 / 기도 지향 / 통계 /
   활동기록부 설정 4개 화면 전용 CSS. 기존 독립형 Project Xavier
   V5.21의 화면 구조(card/dnav/whobox/seg/table/btn/note)를 legio-*
   네임스페이스로 재현. 전역 .card/.table/.btn 정의는 만들지 않고,
   버튼 크기 등 전역 클래스(.primary-btn/.ghost-btn)를 조정해야 하는
   부분은 .legio-report-actions 같은 legio-* 부모 아래로 범위를
   한정해서만 오버라이드함(전역 규칙 자체는 손대지 않음).
   --------------------------------------------------------------- */

/* 주간 기간 카드(주간 이동 + 연/월 점프를 한 카드로 묶음) */
.legio-week-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 2px 4px 4px;
  margin: 4px 0 12px;
}
.legio-week-card .legio-datebar { padding: 8px 4px 6px; }
.legio-week-jump {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 6px 8px;
  border-top: 1px solid var(--line);
}
.legio-week-jump select {
  flex: 1;
  min-width: 0;
  padding: 7px 6px;
  border-radius: 9px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13px;
}
.legio-week-jump-today {
  flex: none;
  padding: 7px 12px;
  border-radius: 9px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--accent);
  font-size: 13px;
  font-weight: 700;
}

/* Pr.명 · 단원명 정보 박스 */
.legio-member-box {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 8px 10px;
  margin: 0 0 10px;
  background: var(--accent-soft);
  border-radius: 10px;
  font-size: 13px;
}
.legio-mb-pr { font-weight: 700; color: var(--accent); }
.legio-mb-name { color: var(--ink); font-weight: 600; }
.legio-mb-sep { color: var(--ink-soft); }

/* 양식 1 · 원본 / 양식 2 · 합산 2분할 세그먼트 */
.legio-seg {
  display: flex;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
  margin: 0 0 10px;
}
.legio-seg-btn {
  flex: 1;
  padding: 9px 4px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ink-soft);
  background: var(--bg-elevated);
  border: none;
  border-radius: 0;
}
.legio-seg-btn + .legio-seg-btn { border-left: 1px solid var(--line); }
.legio-seg-btn.on { background: var(--accent); color: #fff; }

/* 카드형 3열 표(번호 좁게 고정 / 활동명 가변 / 수량 우측정렬) — 주간
   보고·기도 지향·통계 3개 화면이 공통으로 씀 */
.legio-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  margin: 0 0 10px;
}
.legio-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.legio-table tr { border-top: 1px solid var(--line); }
.legio-table tr:first-child { border-top: none; }
.legio-table td, .legio-table th { padding: 9px 10px; vertical-align: middle; }
.legio-table th {
  font-size: 11.5px;
  color: var(--ink-soft);
  font-weight: 700;
  text-align: right;
  background: var(--accent-soft);
  border-top: none;
}
.legio-table th:first-child, .legio-table td:first-child {
  width: 30px;
  text-align: center;
  color: var(--ink-soft);
  font-size: 12px;
  white-space: nowrap;
}
.legio-table th:nth-child(2), .legio-table td:nth-child(2) { text-align: left; }
.legio-table .legio-tnum { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.legio-table td.legio-empty { text-align: center; color: var(--ink-soft); padding: 22px 10px; }
.legio-table tr.legio-tot { font-weight: 700; background: var(--accent-soft); }
.legio-table tr.legio-tot td:first-child { color: var(--ink); }
.legio-left { color: var(--accent); font-weight: 700; }
.legio-leftz { color: var(--ink-soft); }

.legio-warn {
  font-size: 12.5px;
  color: #b06a00;
  background: #fff4e0;
  border-radius: 10px;
  padding: 8px 10px;
  margin: 0 0 10px;
}
.legio-note { font-size: 12px; color: var(--ink-soft); line-height: 1.6; padding: 4px 4px 0; }

/* 2026-09-23 콘텐츠 캐싱 — 마지막 성공 값을 보여줄 때 공통으로 쓰는 배너
   (홈 공지, 레지오 오늘의 기록, 본당 홈/게시판 공용). legio-warn과 톤을
   맞추되 "경고"가 아니라 "지금 오프라인 상태 안내"라 색만 중립적으로. */
.content-offline-banner {
  font-size: 12.5px;
  color: var(--ink-soft);
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 8px 10px;
  margin: 0 0 10px;
}

/* 로사리오 월별 누계(2026-08-28 복원 + 레이아웃 개선) — 달마다 표 한 줄씩
   쓰던 기존 구조는 내용(월 이름 + 숫자 하나)에 비해 가로로 너무 넓고 빈
   공간이 많이 남아서, 조밀한 3열 그리드로 바꿈. 카드/여백/골드 포인트 등
   기존 톤은 그대로 유지. */
.legio-rosary-card { padding: 12px; }
/* 2026-08-28 "설정·오늘 기록 화면 구조 정비" 8번: 예전엔 "OOOO년 누계"
   숫자만 크게 강조하는 카드형이었는데(통계 화면의 주인공처럼 지나치게
   커짐), "2860단 | 총 4675단" 한 줄로 줄이고 강조 정도도 월별 그리드보다
   살짝 위 정도로만 낮췄다. 계산 로직은 전혀 건드리지 않았다(연도 누계는
   기존처럼 월별 로사리오 합, 전체 누계는 API가 새로 내려주는
   rosaryAllTimeTotal). */
.legio-rosary-total-line {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 4px 4px 12px;
  margin-bottom: 10px;
  border-bottom: 1px solid var(--line);
}
.legio-rosary-total-line b { font-size: 12px; font-weight: 600; color: var(--ink-soft); }
.legio-rosary-total-line span { font-size: 12px; font-weight: 800; color: var(--gold); }
.legio-rosary-month-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.legio-rosary-month {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  background: var(--accent-soft);
  border-radius: 10px;
  padding: 10px 4px;
}
.legio-rosary-month .lrm-label { font-size: 11px; color: var(--ink-soft); }
.legio-rosary-month .lrm-val {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
/* 기록이 없는(0단) 달은 칸이 휑하게 비어 보이지 않게 채우되, 값이 있는
   달과는 톤을 낮춰 시각적으로 구분함. */
.legio-rosary-month.zero { background: transparent; border: 1px dashed var(--line); }
.legio-rosary-month.zero .lrm-val { color: var(--ink-soft); font-weight: 600; }

/* 하단 복사 버튼 — 전역 .primary-btn/.ghost-btn(width:100%)은 그대로
   두고, 이 컨테이너 안에서만 크기를 이전 화면 수준으로 줄임 */
.legio-report-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 2px 0 4px; }
.legio-report-actions .primary-btn,
.legio-report-actions .ghost-btn {
  width: auto;
  flex: none;
  min-width: 128px;
  padding: 10px 16px;
  font-size: 13.5px;
}

/* 기도 지향 카드 세부(제목/기간/진행률 + 구분·지향·현재·잔여 표) */
.legio-ihead { padding: 10px 10px 8px; }
.legio-ihead-actions { float: right; display: flex; gap: 6px; }
.legio-ihead h4 { font-size: 14.5px; }
.legio-ino { color: var(--accent); font-weight: 700; margin-right: 4px; }
.legio-imeta { font-size: 12px; color: var(--ink-soft); margin-top: 3px; }
.legio-progress-bar { height: 6px; background: var(--line); border-radius: 4px; margin-top: 8px; overflow: hidden; }
.legio-progress-bar i { display: block; height: 100%; background: var(--accent); }
.legio-mini-btn {
  padding: 5px 10px;
  font-size: 11.5px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink-soft);
}
.legio-mini-btn.legio-mini-danger { color: #c0392b; border-color: #eecccc; }

/* 지향 등록/수정 폼, 합산 설정 그룹 편집 폼 공통 필드 */
.legio-fld { padding: 8px 10px; }
.legio-fld label { display: block; font-size: 12px; color: var(--ink-soft); margin-bottom: 4px; }
.legio-fld input, .legio-fld select {
  width: 100%;
  padding: 9px 10px;
  border-radius: 9px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13.5px;
}
.legio-fld-two { display: flex; gap: 8px; padding: 0 10px 8px; }
.legio-fld-two > div { flex: 1; }
.legio-fld-two input, .legio-fld-two select {
  width: 100%;
  padding: 9px 10px;
  border-radius: 9px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13.5px;
}
.legio-goal-list { padding: 0 10px 8px; }
.legio-goal-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 0;
  border-top: 1px solid var(--line);
  font-size: 12.5px;
}
.legio-goal-row span { flex: 1; }
.legio-goal-qty {
  width: 64px;
  padding: 6px 8px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13px;
}

/* 활동기록부 설정: 즐겨찾는 항목 / 활동 항목 목록 / 합산 그룹 편집 행 */
.legio-fav-row, .legio-cat-row, .legio-agg-assign-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 10px;
  border-top: 1px solid var(--line);
  font-size: 13.5px;
}
.legio-fav-row:first-child, .legio-cat-row:first-child, .legio-agg-assign-row:first-child { border-top: none; }
.legio-agg-assign-row select { max-width: 46%; padding: 7px 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--bg-elevated); color: var(--ink); font-size: 12.5px; }
.legio-agg-group-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  border-top: 1px solid var(--line);
}
.legio-agg-group-row:first-child { border-top: none; }
.legio-agg-name {
  flex: 1;
  min-width: 0;
  padding: 8px 9px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13px;
}
.legio-agg-group-row select { flex: none; width: 40%; padding: 7px 8px; border-radius: 8px; border: 1px solid var(--line); background: var(--bg-elevated); color: var(--ink); font-size: 12.5px; }

/* ---------- 활동항목 관리 (Pr. 담당자 2단계, 2026-08-28) ---------- */
.legio-item-manage-row { padding: 10px; border-top: 1px solid var(--line); }
.legio-item-manage-row:first-child { border-top: none; }
.legio-item-manage-row.legio-item-inactive { opacity: .55; }
.legio-im-row1, .legio-im-row2, .legio-im-row3 { display: flex; gap: 6px; align-items: center; }
.legio-im-row2, .legio-im-row3 { margin-top: 6px; }
.legio-item-manage-row input, .legio-item-manage-row select {
  padding: 7px 8px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 12.5px;
  min-width: 0;
}
.legio-im-name { flex: 1; }
.legio-im-category { flex: 1; }
/* 2026-08-28 "설정·오늘 기록 화면 구조 정비" 6번: 분류를 직접 입력하던
   텍스트 필드를 "등록된 분류 선택 + 없을 때만 새 분류 입력"으로 바꾸면서
   생긴 짝 텍스트 입력(평소엔 숨김, "+ 새 분류 추가" 선택 시에만 보임). */
.legio-im-category-new { flex: 1; }
.legio-im-reportno, .legio-im-sort { width: 46px; text-align: center; }
.legio-im-unit { width: 40px; text-align: center; }
.legio-im-status { font-size: 11px; color: var(--ink-soft); white-space: nowrap; }
/* 2026-08-28 "레지오 활동기록부 및 계정 기능 개선" 5번: 비활성화/활성화
   버튼을 체크박스로 교체하면서 추가. 빨간 글씨로 "이 활동항목을 비활성화
   합니다"라는 뜻을 명확히 표시(legio- 전용 클래스, 전역 CSS 변경 없음). */
.legio-im-deactivate-label { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; cursor: pointer; }
.legio-im-deactivate-label input[type="checkbox"] { margin: 0; }
.legio-im-deactivate-text { color: #c0392b; }
/* 2026-08-28 "레지오 설정 및 활동항목 관리 최종 보정" PART B: 좌측
   숫자칸(고유번호=legacy_code, 읽기전용) / 우측 숫자칸(노출번호=report_no,
   기존 입력칸) 위에 작은 라벨을 붙이기 위한 세로 묶음. */
.legio-im-numfield { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.legio-im-numlabel { font-size: 10px; color: var(--ink-soft); line-height: 1; white-space: nowrap; }
/* 2026-09-21: 노출번호=0(보고서 제외) 안내 문구 — 항상 작게 표시, 별도
   활성/비활성 상태에 따른 색 변화는 두지 않는다(체크박스와 헷갈리지 않게
   단순 안내 텍스트로만 유지). */
.legio-im-reportno-hint { font-size: 9.5px; color: var(--ink-soft); line-height: 1.2; white-space: nowrap; }
.legio-im-legacyno {
  display: inline-block;
  width: 46px;
  text-align: center;
  padding: 7px 8px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-inset, var(--bg-elevated));
  color: var(--ink-soft);
  font-size: 12.5px;
}
/* PART D: 체크박스는 왼쪽, "활성/비활성 상태 + 저장" 버튼은 하나의
   묶음으로 오른쪽 정렬(좁은 화면에서는 이 묶음째로 다음 줄로 줄바꿈,
   상태와 저장 버튼은 항상 붙어있음). */
.legio-im-row3 { flex-wrap: wrap; justify-content: space-between; }
.legio-im-save-group { display: flex; align-items: center; gap: 8px; margin-left: auto; }

/* 2026-08-28 "설정·오늘 기록 화면 구조 정비": 레지오 전용 아코디언 —
   설정 화면(합산 목록/활동 항목 목록/활동항목 관리/즐겨찾는 항목)과 오늘
   기록 화면("그 밖의 항목")이 함께 쓰는 공통 컴포넌트. 전역 .card 등은
   손대지 않고 legio- 네임스페이스로만 새로 추가했다. */
.legio-accordion { margin: 0 0 8px; }
.legio-accordion-header {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 12px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  font-size: 13.5px;
  font-weight: 700;
  text-align: left;
}
.legio-accordion-title { flex: 1; min-width: 0; }
.legio-accordion-count {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--ink-soft);
  white-space: nowrap;
}
/* 오늘 기록 화면에서 "n건 기록"처럼 실제 기록이 있음을 알리는 배지는
   조금 더 눈에 띄게(강조색) — 등록 개수만 보여주는 설정 화면 배지와는
   구분한다. */
.legio-accordion-count-active { color: var(--accent); }
.legio-accordion-arrow { flex: none; font-size: 15px; font-weight: 700; color: var(--ink-soft); }
.legio-accordion-body { padding-top: 8px; }
.legio-accordion-body.hidden { display: none; }

/* 섹션 제목 옆에 "전체 펼치기/접기" 같은 보조 버튼을 나란히 둘 때 */
.legio-section-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 16px 4px 6px;
}
.legio-section-title-row .legio-section-title { padding: 0; }

/* ---------------------------------------------------------------
   2026-08-29 "Pr. 조직과 이력"(3단계 2차 구현) 전용 CSS.
   기존 .legio-card/.legio-fld/.legio-fld-two/.legio-mini-btn/.legio-note/
   .primary-btn/.ghost-btn 등 이미 정의된 클래스는 그대로 재사용하고,
   여기서는 이 화면에서만 쓰는 새 클래스(조직표 4행 카드, 이력 카드 목록,
   인라인 폼 컨테이너)만 추가한다. 새 디자인 시스템/아이콘 세트를 만들지
   않는다(작업지시서 15번). 모바일(작은 화면)을 기본으로 하고, 필요한
   부분만 넓은 화면에서 손질한다(작업지시서 4·18-34번 — 모바일 대응). */

/* 현재/과거 기준 조직표 카드 — 단장/부단장/서기/회계 4행 */
.legio-org-chart-card { padding: 2px 4px; }
.legio-org-role-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 10px;
  padding: 12px 8px;
  border-top: 1px solid var(--line);
}
.legio-org-role-row:first-child { border-top: none; }
.legio-org-role-name {
  flex: none;
  width: 46px;
  font-size: 13px;
  font-weight: 700;
  color: var(--accent);
}
.legio-org-role-holder {
  flex: 1;
  min-width: 80px;
  font-size: 14.5px;
  font-weight: 600;
  color: var(--ink);
}
.legio-org-vacant { color: var(--ink-soft); font-weight: 500; }
.legio-org-role-actions {
  flex: none;
  width: 100%;
  display: flex;
  gap: 6px;
  justify-content: flex-end;
}

/* 기준일(asOf) 입력 영역은 .legio-fld-two를 그대로 쓰되, 버튼 두 개가
   좁은 화면에서도 줄바꿈 없이 붙어 있도록 최소 폭만 지정 */
.legio-org-asof-input { min-width: 0; }

/* 역대 직책 이력 — 모바일 기본은 세로 카드 목록(작업지시서 15번:
   "이력 목록은 모바일 우선으로 세로 카드형") */
.legio-org-hist-list { padding: 0; }
.legio-org-hist-item {
  padding: 10px 12px;
  border-top: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 3px 8px;
}
.legio-org-hist-item:first-child { border-top: none; }
.legio-org-hist-period {
  flex: 1 1 100%;
  font-size: 13px;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.legio-org-hist-role { flex: 1; min-width: 0; font-size: 12.5px; color: var(--ink-soft); }
.legio-org-current-badge {
  display: inline-block;
  background: var(--accent-soft);
  color: var(--accent);
  font-size: 10.5px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 6px;
  margin-left: 2px;
}
.legio-org-hist-list .legio-empty {
  text-align: center;
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.6;
  padding: 26px 14px;
}

/* 지정/교체/종료/과거입력/정정 — 인라인 폼(모달 없이 화면 중간에 삽입,
   작업지시서 15번). 위험한 동작(종료·정정)은 저장 버튼 자체 색상으로
   구분하며(각 렌더 함수에서 style="background:#b00" 등으로 지정), 여기서는
   폼 컨테이너 공통 여백만 잡는다. */
.legio-org-form { padding-bottom: 4px; }
.legio-org-form .legio-note { color: #b06a00; }
#legio-org-form-err:empty { display: none; }

/* PC 등 넓은 화면에서는 조직표 행에서 담당자명과 버튼을 한 줄에 나란히 */
@media (min-width: 480px) {
  .legio-org-role-actions { width: auto; }
}

/* ---------- About ---------- */
.about-hero { text-align: center; padding: 28px 0 22px; }
.help-hub-guide {
  margin: 0 0 12px;
  color: var(--ink-soft);
  font-size: 12.5px;
  line-height: 1.6;
}
.about-icon { font-size: 40px; margin-bottom: 10px; }
.about-name { font-size: 18px; font-weight: 800; }
.about-version { font-size: 12px; color: var(--ink-soft); margin-top: 4px; }
.about-text { font-size: 14px; line-height: 1.8; color: var(--ink); }

.switch {
  width: 46px; height: 27px;
  background: var(--line);
  border-radius: 999px;
  position: relative;
  flex-shrink: 0;
  transition: background 0.2s;
}
.switch.on { background: var(--accent); }
.switch::after {
  content: '';
  position: absolute;
  top: 3px; left: 3px;
  width: 21px; height: 21px;
  background: #fff;
  border-radius: 50%;
  transition: transform 0.2s;
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
}
.switch.on::after { transform: translateX(19px); }

/* ---------- Modal ---------- */
.modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(20, 15, 10, 0.5);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  z-index: 50;
}
.modal-backdrop.hidden { display: none; }
.modal-sheet {
  background: var(--bg-elevated);
  width: 100%;
  max-width: 640px;
  border-radius: 20px 20px 0 0;
  padding: 22px 20px calc(24px + var(--safe-bottom));
  text-align: center;
  animation: slideUp 0.22s ease-out;
}
@keyframes slideUp { from { transform: translateY(30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.modal-sheet .ms-icon { font-size: 32px; }
.modal-sheet .ms-title { font-size: 17px; font-weight: 700; margin-top: 10px; }
.modal-sheet .ms-desc { font-size: 13.5px; color: var(--ink-soft); margin-top: 8px; line-height: 1.6; }
.modal-sheet .ms-actions { display: flex; gap: 10px; margin-top: 18px; }
.modal-sheet .ms-actions button { flex: 1; padding: 13px; border-radius: 12px; font-size: 14.5px; font-weight: 700; }
.modal-sheet .ms-primary { background: var(--accent); color: #fff; }
.modal-sheet .ms-secondary { background: var(--accent-soft); color: var(--accent); }

.toast {
  position: fixed;
  bottom: calc(76px + var(--safe-bottom));
  left: 50%;
  transform: translateX(-50%);
  background: var(--ink);
  color: var(--bg);
  padding: 10px 18px;
  border-radius: 999px;
  font-size: 13px;
  z-index: 10050; /* 회원 상세 권한관리 모달(z-index:9999) 위에도 안내 표시 */
  opacity: 0;
  transition: opacity 0.25s, transform 0.25s;
  pointer-events: none;
  white-space: nowrap;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(-6px); }

/* ---------- Queue bar (오늘의 기도 / 순서 재생) ---------- */
.queue-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: 10px;
  padding: 9px 10px;
  font-size: 12.5px;
  font-weight: 600;
  margin-bottom: 16px;
}
.queue-bar button {
  width: 26px; height: 26px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  color: var(--accent);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.queue-bar .qb-progress { flex: 1; text-align: center; }

/* 기도문 하단 이전/다음 이동 */
.queue-nav-bottom {
  display: flex;
  gap: 8px;
  margin-top: 18px;
}
.qnb-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 12px;
  box-shadow: var(--shadow);
  text-align: left;
  min-width: 0;
}
.qnb-btn.next { text-align: right; align-items: flex-end; }
.qnb-btn .qnb-dir { font-size: 10.5px; color: var(--ink-soft); font-weight: 700; }
.qnb-btn .qnb-title {
  font-size: 12.5px; font-weight: 600; color: var(--ink);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%;
}

/* ORATIO 경미 수정(2026-08-24): 이전/다음 기도 사이 카테고리 바로가기
   버튼 — 이전/다음과 높이·스타일은 맞추되(같은 .qnb-btn 기반), 폭은
   더 좁게(flex-grow 없음) 줘서 시각적으로 과하게 강조되지 않게 하고,
   좁은 화면에서 3개 버튼이 넘치지 않도록 함. */
.qnb-btn.mid {
  flex: 0 1 auto;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-width: 64px;
  max-width: 38%;
  padding: 10px 8px;
  background: var(--accent-soft);
  border-color: transparent;
}
.qnb-btn.mid .qnb-title {
  color: var(--accent);
  white-space: normal;
  text-align: center;
  line-height: 1.25;
  word-break: keep-all;
}
/* 「기도 상세 화면 UI 통일」 재수정(2026-08-25): 이전/중앙/다음 중 대상이
   없는 칸 — display:none이 아니라 visibility:hidden을 써서 flex 자리를
   그대로 차지하게 함. 그래야 남은 버튼(예: 중앙 "오늘의 기도")이 원래
   3칸 네비게이션과 똑같은 위치에 그대로 남는다(새 레이아웃 아님). */
.qnb-btn.qnb-empty { visibility: hidden; pointer-events: none; }

/* ---------- Wake-lock / prayer-mode banner ---------- */
.prayer-mode-banner {
  background: var(--gold);
  color: #2b1f00;
  font-size: 12px;
  text-align: center;
  padding: 7px 10px;
  font-weight: 600;
}
.prayer-mode-banner.hidden { display: none; }
/* 관리자 화면 개편(2026-08-23) 요청 문서 8번: 관리자 화면 안에서는
   기도 모드 배너를 숨김(기도 모드 자체는 계속 유지됨, 표시만 숨김). */
.prayer-mode-banner.pm-admin-hide { display: none; }

/* =========================================================
   ADMIN v2 — 관리자 화면 개편(2026-08-23)
   ORATIO 관리자 화면 체계 개편안: 권한 표시 / 메뉴 그룹화 /
   슈퍼관리자·본당관리자·PR관리자 화면 분리 / 카드형 2열 UI /
   운영 현황 / 로그아웃 위치 조정 / 모바일 반응형.
   ========================================================= */
.admin-role-header {
  background: linear-gradient(160deg, var(--accent-soft), var(--bg-elevated));
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px 16px 14px;
  margin-bottom: 12px;
}
.admin-role-header-row {
  display: flex; align-items: center; gap: 10px;
}
.admin-role-title { font-size: 17px; font-weight: 800; flex: 1; min-width: 0; }
.role-badge {
  display: inline-block;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.03em;
  padding: 4px 9px;
  border-radius: 999px;
  color: #fff;
  white-space: nowrap;
  flex-shrink: 0;
}
.role-badge-super { background: #7d3247; }   /* 기존 전례 적색 계열(진한 와인) */
.role-badge-parish { background: #1f4e5f; }  /* 짙은 네이비/틸 */
.role-badge-pr { background: #8a6a1f; }      /* 차분한 금/갈색 */
:root[data-theme="dark"] .role-badge-super,
:root:not([data-theme="light"]) .role-badge-super { background: #9c4a63; }
:root[data-theme="dark"] .role-badge-parish,
:root:not([data-theme="light"]) .role-badge-parish { background: #2c6a80; }
:root[data-theme="dark"] .role-badge-pr,
:root:not([data-theme="light"]) .role-badge-pr { background: #a5824a; }
.admin-role-user { font-size: 13.5px; font-weight: 600; margin-top: 8px; }
.admin-role-scope { font-size: 12px; color: var(--ink-soft); margin-top: 3px; }
/* 2026-09-23: 관리자 세션 중에도 개인 계정(MY) 화면으로 바로 갈 수 있도록
   역할 헤더에 항상 보이는 버튼 — role-badge 옆에 나란히, 눈에 띄되 배지처럼
   "상태"로 오해되지 않게 테두리만 있는 스타일로 구분. */
.admin-role-my-btn {
  flex-shrink: 0;
  background: transparent;
  border: 1.5px solid var(--accent);
  color: var(--accent);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.03em;
  padding: 4px 10px;
  border-radius: 999px;
}

/* ---- 사용자 메뉴(우측 상단 드롭다운) — 로그아웃 위치 조정(요청 7번) ---- */
.admin-user-menu { position: relative; display: flex; justify-content: flex-end; margin-bottom: 14px; }
.admin-user-menu-btn {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  color: var(--ink-soft);
  font-size: 13px;
  font-weight: 600;
  padding: 7px 12px;
  border-radius: 10px;
}
.admin-user-menu-panel {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 20;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: var(--shadow);
  min-width: 160px;
  overflow: hidden;
}
.admin-user-menu-panel.hidden { display: none; }
.admin-user-menu-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 11px 14px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  border-bottom: 1px solid var(--line);
}
.admin-user-menu-item:last-child { border-bottom: none; }
.admin-user-menu-item:active { background: var(--accent-soft); }
.admin-user-menu-item.danger { color: var(--accent); }

/* ---- 운영 현황(슈퍼관리자 전용, 요청 6번) ---- */
.admin-stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 16px;
}
.admin-stats-row.hidden { display: none; }
.admin-stat-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 4px;
  text-align: center;
  position: relative;
}
.admin-stat-card .asc-num { font-size: 18px; font-weight: 800; color: var(--accent); }
.admin-stat-card .asc-label { font-size: 10.5px; color: var(--ink-soft); margin-top: 2px; }
.admin-stat-pending.has-badge .asc-num { color: #c0392b; }

/* ---- 업무 영역별 섹션 + 카드형 2열 메뉴(요청 2·5번) ---- */
.admin-section { margin-bottom: 18px; }
/* 인접한 두 섹션 사이에만 구분선 — 역할에 따라 중간 섹션들이 DOM에서
   빠지므로(:first-of-type 대신 인접 형제 선택자를 써야 어떤 섹션이
   실제로 맨 처음/사이에 오는지와 무관하게 항상 올바르게 그려짐). */
.admin-section + .admin-section { padding-top: 14px; border-top: 1px solid var(--line); }
.admin-section-title {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--ink-soft);
  margin: 10px 0 10px;
}
.admin-card-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.admin-card-btn {
  position: relative;
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 600;
  font-size: 13.5px;
  line-height: 1.4;
  padding: 14px 12px;
  border-radius: 12px;
  text-align: left;
  min-height: 58px;
}
.admin-card-btn .acb-sub {
  display: block;
  font-size: 11px;
  font-weight: 500;
  color: var(--ink-soft);
  margin-top: 3px;
}
.admin-card-badge {
  position: absolute;
  top: -6px;
  right: -6px;
  background: #c0392b;
  color: #fff;
  font-size: 10.5px;
  font-weight: 800;
  min-width: 18px;
  height: 18px;
  border-radius: 999px;
  display: flex; align-items: center; justify-content: center;
  padding: 0 4px;
}
.admin-card-badge.hidden { display: none; }

/* ---- ORATIO 관리자 「기도문 관리」 화면 개편(2026-08-25) — 일렬 목록을
   카테고리별 아코디언 + 검색/필터/정렬로 재구성. 기존 관리자 화면 색상
   토큰(--accent/--accent-soft/--gold/--ink-soft/--line)만 그대로 쓰고 새
   색상체계를 만들지 않음(작업지시서 18번). 카드처럼 크게 만들지 않고,
   과도한 pill 형태도 피해서(게시판 관리 버튼 개편과 같은 원칙) 촘촘하되
   읽기 쉬운 목록 밀도를 유지. ---- */
.admin-prayer-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 4px;
}
.admin-prayer-count { font-size: 13px; font-weight: 700; color: var(--ink); }
.admin-prayer-refresh {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  color: var(--ink-soft);
}
.admin-prayer-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}
.admin-filter-select {
  flex: 1 1 140px;
  min-width: 0;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 8px 10px;
  font-size: 12.5px;
  color: var(--ink);
}

/* 카테고리 아코디언 — 헤더(▶/▼ + 이름 + 개수)를 누르면 펼침/접힘. */
.admin-cat-acc {
  border: 1px solid var(--line);
  border-radius: 10px;
  margin-bottom: 8px;
  overflow: hidden;
  background: var(--bg-elevated);
}
.admin-cat-acc-header {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 11px 12px;
  background: transparent;
  text-align: left;
}
.admin-cat-acc-header:active { background: var(--accent-soft); }
.admin-cat-acc-caret { width: 14px; color: var(--ink-soft); font-size: 11px; flex-shrink: 0; }
.admin-cat-acc-name { flex: 1; font-weight: 700; font-size: 13.5px; color: var(--ink); }
.admin-cat-acc-count { font-size: 11.5px; color: var(--ink-soft); flex-shrink: 0; }
.admin-cat-acc-body { border-top: 1px solid var(--line); }
.admin-cat-acc-body .empty-state { padding: 14px; font-size: 12.5px; }
/* 2026-08-29 카테고리 관리(잠금/다시 공개/삭제) 버튼 — 작업지시서 4·5번:
   왼쪽(펼침 화살표+이름+개수)은 .admin-cat-acc-toggle, 오른쪽(상태 배지+
   관리 버튼)은 .admin-cat-acc-actions로 분리해서 헤더 자체를 <button>으로
   두지 않고(중첩 버튼 금지 원칙 유지) 각 버튼에서 개별로 preventDefault/
   stopPropagation을 건다(js/app.js buildAdminCategoryAccordion 참고).
   flex-wrap이 있어 화면이 좁으면(모바일) 오른쪽 버튼들이 자동으로 다음
   줄로 내려가 겹치거나 화면 밖으로 잘리지 않는다. */
.admin-cat-acc-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 160px;
  min-width: 0;
  cursor: pointer;
}
.admin-cat-acc-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  margin-left: auto;
  flex-wrap: wrap;
}
.admin-cat-acc-status-badge {
  font-size: 11px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 999px;
  white-space: nowrap;
}
.admin-cat-acc-status-badge.is-active { background: var(--accent-soft); color: var(--accent); }
.admin-cat-acc-status-badge.is-inactive { background: rgba(140,140,140,.2); color: var(--ink-soft); }
.admin-cat-acc-action-btn {
  padding: 5px 9px;
  font-size: 11.5px;
  font-weight: 600;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  white-space: nowrap;
}
.admin-cat-acc-action-btn:active { background: var(--accent-soft); }
.admin-cat-acc-action-btn:disabled { opacity: .45; }
.admin-cat-acc-action-btn-danger { color: #d33; border-color: #d33; }

.admin-prayer-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-top: 1px solid var(--line);
}
.admin-cat-acc-body .admin-prayer-row:first-child { border-top: none; }
.admin-prayer-row-main { flex: 1; min-width: 0; }
.admin-prayer-row-title { font-size: 13.5px; font-weight: 700; color: var(--ink); }
.admin-prayer-row-sub {
  font-size: 11.5px;
  color: var(--gold);
  margin-top: 2px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.admin-prayer-row-updated { font-size: 11px; color: var(--ink-soft); margin-top: 2px; }
.admin-prayer-row-actions {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex-shrink: 0;
}

/* 출처 여부 배지 — 작은 라운드 사각형(게시판 관리 버튼 개편과 같은
   형태 원칙), 원색이 아닌 ORATIO 톤 안에서만. */
.admin-prayer-badge {
  display: inline-flex;
  align-items: center;
  border-radius: 6px;
  padding: 1px 6px;
  font-size: 10.5px;
  font-weight: 600;
  line-height: 1.6;
}
.admin-prayer-badge.is-yes { background: var(--accent-soft); color: var(--accent); }
.admin-prayer-badge.is-no { background: rgba(120,120,120,0.12); color: var(--ink-soft); }

.admin-prayer-btn {
  min-height: 28px;
  padding: 4px 10px;
  border-radius: 7px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink-soft);
  font-size: 11.5px;
  font-weight: 600;
  white-space: nowrap;
}
.admin-prayer-btn.is-edit { background: var(--accent-soft); color: var(--accent); border-color: transparent; }

@media (max-width: 380px) {
  .admin-prayer-row { flex-wrap: wrap; }
  .admin-prayer-row-actions { flex-direction: row; }
}

/* 향후 지원 예정 플레이스홀더(레지오 관리 등, 요청 문서 23·24번 —
   이번 단계에서는 실제 기능을 만들지 않고 자리만 안내) */
.admin-section-future .admin-section-title { color: var(--ink-soft); }
.admin-future-tag {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  color: var(--ink-soft);
  background: var(--line);
  border-radius: 999px;
  padding: 2px 8px;
  margin-left: 6px;
  vertical-align: middle;
}
.admin-card-placeholder {
  background: var(--bg-elevated);
  border: 1px dashed var(--line);
  border-radius: 12px;
  padding: 16px 14px;
  font-size: 12.5px;
  color: var(--ink-soft);
  line-height: 1.6;
}

/* ---- 모바일 반응형(요청 9번): 좁은 화면에서 카드 2열 → 1열 ---- */
@media (max-width: 480px) {
  .admin-card-grid { grid-template-columns: 1fr; }
  .admin-stats-row { grid-template-columns: repeat(2, 1fr); }
}

/* ---- 관리자 화면 수정안(2026-08-24) 7번: 교구/본당/사용자 검색 결과처럼
   길어질 수 있는 목록은 페이지 자체를 늘리지 않고 내부 스크롤로 고정 ---- */
.admin-list-scrollbox {
  max-height: 360px;
  overflow-y: auto;
}
@media (max-width: 480px) {
  .admin-list-scrollbox { max-height: min(360px, 45vh); }
}

/* ---- ORATIO 로컬정보·로그아웃 및 UI 경미 수정안(2026-08-24) 6번:
   설정 화면의 "캐시 삭제" 버튼(과 같은 자리의 다른 버튼들)이 좁은
   화면에서 글자가 두 줄로 깨지던 문제 — 폭이 부족해도 줄바꿈되지 않고
   자기 크기를 유지하게 함. .setting-row 안의 모든 ghost-btn에 똑같이
   적용되어 높이·정렬도 함께 통일됨. ---- */
.setting-row .ghost-btn {
  white-space: nowrap;
  flex-shrink: 0;
  min-width: 72px;
}

/* ---- ORATIO 로컬정보·로그아웃 및 UI 경미 수정안(2026-08-24) 7번:
   "본당기도 관리" 목록의 보기/켜기·끄기/삭제/제거처럼 글자가 있는 버튼이
   기본 원형 아이콘 버튼(.oi-btn, 지름 30px) 크기에 눌려 세로로 깨지던
   문제 — 텍스트 라벨 버튼 전용 스타일(.oi-btn-wide)만 이 목록에 추가로
   적용. 다른 화면의 원형 아이콘 버튼(.oi-btn만 쓰는 곳)은 그대로 둠. ---- */
.oi-btn-wide {
  width: auto;
  height: auto;
  min-width: 0;
  padding: 4px 8px;
  border-radius: 7px;
  white-space: nowrap;
  flex-shrink: 0;
  font-size: 12px;
  line-height: 1.5;
}
/* 「기도 수정 화면 최종 보정」(2026-08-29): 위 .oi-btn-wide가 실제로는
   적용되지 못하고 있었다 — 이 버튼들이 놓인 컨테이너에 이미 걸려 있던
   `.order-item .oi-btn`(지름 30px 원형, 명시도 0,0,2,0)과 `.menu-list
   button`(패딩 14px 15px·글자 15px, 명시도 0,0,1,1)이 `.oi-btn-wide`
   (명시도 0,0,1,0)보다 더 구체적인 선택자라서 폭/높이/모서리/패딩/글자
   크기를 전부 덮어쓰고 있었음(코드는 텍스트 버튼처럼 보이도록 짜여 있었지만
   실제로는 30px 원형 박스 안에 "목록에서 제거" 같은 긴 글자가 넘쳐
   옆 버튼과 겹쳐 보이는 문제로 이어짐 — 스크린샷에서는 우연히 배경색이
   비슷해 눈에 덜 띄었을 뿐, 실제 클릭 히트박스도 30px로 좁아져 있었다).
   ID로 한정한 선택자로 명시도를 올려 이 목록의 버튼에서만 확실히
   .oi-btn-wide 값이 이기도록 함(다른 화면의 .oi-btn/.menu-list button은
   전혀 건드리지 않음). */
#parish-notice-parish-manage-list .oi-btn.oi-btn-wide {
  width: auto;
  height: auto;
  min-width: 0;
  padding: 4px 8px;
  border-radius: 7px;
  font-size: 12px;
  line-height: 1.5;
}

/* 2026-08-29 "관리자 진입 경로 보완" — admin-legio 화면의 Pr. 목록에
   "수정"/"조직과 이력" 두 글자 버튼을 나란히 붙이면서 위 parish-notice
   목록과 똑같은 문제(.order-item .oi-btn의 30px 원형 규칙이 .oi-btn-wide
   보다 명시도가 높아 이김)가 재현되어, 같은 방식(ID로 명시도를 올림)으로
   범위를 한정해 고쳤다. 다른 화면의 .oi-btn/.menu-list button은 그대로. */
#admin-legio-presidium-list .oi-btn.oi-btn-wide {
  width: auto;
  height: auto;
  min-width: 0;
  padding: 4px 8px;
  border-radius: 7px;
  font-size: 12px;
  line-height: 1.5;
}
#admin-legio-presidium-list .order-item {
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

/* ORATIO 3-2A-3(2026-08-30): "현재 관리자" 목록(admin-parishes 지정 화면)에
   "권한 관리" 텍스트 버튼을 새로 추가하면서 위와 똑같은 문제(.order-item
   .oi-btn의 30px 원형 규칙이 .oi-btn-wide보다 명시도가 높아 이겨서, 글자가
   원형 박스 안에서 세로로 겹쳐 깨짐)가 재현되어 같은 방식(ID로 명시도를
   올림)으로 이 목록에서만 고쳤다. 다른 화면의 .oi-btn/.menu-list button은
   전혀 건드리지 않음. 320px 좁은 화면에서 "해제"+"권한 관리" 두 버튼이
   제목 옆에 다 안 들어가면 버튼 묶음이 통째로 다음 줄로 내려가도록
   flex-wrap도 함께 준다(제목이 먼저 줄바꿈되게 하는 기존 parish-notice
   목록 패턴과 동일). 읽기 전용 요약 패널(.oi-detail)은 항상 새 줄 전체
   폭을 차지하고, 긴 값도 옆으로 넘치지 않고 줄바꿈되도록 word-break을
   함께 지정한다. */
#admin-parish-assign-current-list .order-item {
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
#admin-parish-assign-current-list .oi-btn.oi-btn-wide {
  width: auto;
  height: auto;
  min-width: 0;
  padding: 4px 8px;
  border-radius: 7px;
  font-size: 12px;
  line-height: 1.5;
}
#admin-parish-assign-current-list .oi-detail {
  flex: 1 1 100%;
  word-break: break-word;
  overflow-wrap: anywhere;
}

/* ORATIO 경미 수정(2026-08-24) 2번: 이 목록만 — 제목이 길면 버튼이 아니라
   제목이 먼저 줄바꿈되게 하고(오른쪽 끝 버튼 그룹은 항상 한 줄 유지),
   버튼 사이 간격을 title-버튼 간격보다 조금 좁게 정리. 삭제/제거 계열은
   기존처럼 danger 색상(빨강 계열) 그대로 유지 — 위험한 동작이라는 구분은
   남긴다. 삭제 로직·확인창·권한 체크는 전혀 건드리지 않음.
   「기도 수정 화면·본당관리자 아이콘 통일」(2026-08-29) 6.6 반영: 그 사이
   좁은 화면·긴 제목에서는 "제목이 먼저 줄바꿈"만으로 부족해 버튼 4개
   (보기/켜기·끄기/수정/삭제)가 서로 겹치는 사례가 있었다. flex-wrap을
   nowrap→wrap으로 바꿔, 버튼 묶음(.pop-actions, 아래)이 한 덩어리로
   다음 줄에 내려갈 수 있게 한다 — 데스크톱 등 넓은 화면에서는 한 줄에
   다 들어가므로 기존 배치와 똑같이 보인다. */
#parish-notice-parish-manage-list .order-item {
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
#parish-notice-parish-manage-list .oi-title {
  flex: 1 1 auto;
  min-width: 0;
  white-space: normal;
  word-break: keep-all;
}
/* 버튼 4개(보기/켜기·끄기/수정/삭제)를 한 묶음으로 감싸서, 좁은 화면에서는
   이 묶음 전체가 제목 아래 새 줄로 내려가고(모바일: 위 제목, 아래 버튼
   묶음), 그 안에서도 필요하면 두 줄로 자연스럽게 줄바꿈된다(음수 margin이나
   절대 위치를 쓰지 않음 — 지시서 6.6 예시 그대로). */
#parish-notice-parish-manage-list .pop-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
  flex: 0 0 auto;
  margin-left: auto;
}

/* ---- 게시판 기능 추가(2026-08-25): 관리자 공지 목록 — 제목/날짜/본문
   미리보기가 여러 줄이라 위 "본당기도 관리" 목록과 달리 제목과 버튼을
   한 줄에 억지로 맞추지 않고, 버튼 그룹을 아래로 줄바꿈되게 해서 각
   버튼(노출/고정/수정/삭제)이 모바일에서도 충분히 커 보이게 함(작업
   지시서 2번 "버튼이 너무 작아지지 않도록"). ---- */
.notice-admin-row {
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
}
.notice-admin-btn-group {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 8px;
}

/* ---- 게시판 관리 버튼 UI 수정 작업지시서(2026-08-25): 노출/고정/수정/
   삭제 버튼을 원형·pill 형태에서 작고 단정한 라운드 사각형으로 교체.
   기능(이벤트/API 호출)은 그대로 두고 표현만 바꾼 것 — 상태별 클래스
   (is-visible/is-hidden/is-pinned/is-edit/is-delete)는 loadAdminNoticeList()
   에서 그대로 토글해서 붙임. 색상은 ORATIO 기존 톤(와인/로즈/베이지/
   골드) 안에서만 구성, 새 원색은 쓰지 않음. ---- */
.board-admin-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 30px;
  padding: 5px 9px;
  border-radius: 7px;
  border: 1px solid #e4d5cc;
  background: #f8f1ea;
  color: #6d5147;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
}

/* 노출 ON */
.board-admin-btn.is-visible {
  background: #f6e7e8;
  border-color: #d8a7aa;
  color: #981f32;
}
/* 노출 OFF */
.board-admin-btn.is-hidden {
  background: #f1eeea;
  border-color: #ddd6d0;
  color: #8c827b;
}
/* 상단 고정 ON(📌) — 고정 OFF는 기본 베이지(.board-admin-btn) 그대로 사용 */
.board-admin-btn.is-pinned {
  background: #f6ecd7;
  border-color: #dfc58f;
  color: #8a6420;
}
/* 수정 */
.board-admin-btn.is-edit {
  background: #f8eeee;
  border-color: #e4c8c8;
  color: #8f2434;
}
/* 삭제 — 위험 동작이지만 강한 빨강은 쓰지 않음 */
.board-admin-btn.is-delete {
  background: #faeeee;
  border-color: #eccaca;
  color: #a14343;
}

/* 다크 모드에서도 같은 톤 계열을 유지하되 어두운 배경에서 읽히도록
   명도만 조정. 설정에서 명시적으로 "다크"를 선택한 경우([data-theme=
   "dark"])와, 설정이 "시스템"이라 OS가 다크일 때(@media)를 분리해서
   처리 — 상단 :root 색상변수 정의부(52행)와 동일한 방식. 시스템 설정이
   "라이트"이면 이 블록이 전혀 적용되지 않아야 하므로, role-badge-*처럼
   @media 없이 :not([data-theme="light"])만 쓰는 방식은 쓰지 않음. */
:root[data-theme="dark"] .board-admin-btn {
  background: #2a241f;
  border-color: #4a3f36;
  color: #cabdb2;
}
:root[data-theme="dark"] .board-admin-btn.is-visible {
  background: #3a2226;
  border-color: #7a3f47;
  color: #e79aa4;
}
:root[data-theme="dark"] .board-admin-btn.is-hidden {
  background: #2a241f;
  border-color: #4a3f36;
  color: #9b9086;
}
:root[data-theme="dark"] .board-admin-btn.is-pinned {
  background: #3a3120;
  border-color: #7a6435;
  color: #e0c179;
}
:root[data-theme="dark"] .board-admin-btn.is-edit {
  background: #362324;
  border-color: #6b4448;
  color: #e2a7ac;
}
:root[data-theme="dark"] .board-admin-btn.is-delete {
  background: #362424;
  border-color: #6b4444;
  color: #e0a3a3;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .board-admin-btn { background: #2a241f; border-color: #4a3f36; color: #cabdb2; }
  :root:not([data-theme="light"]) .board-admin-btn.is-visible { background: #3a2226; border-color: #7a3f47; color: #e79aa4; }
  :root:not([data-theme="light"]) .board-admin-btn.is-hidden { background: #2a241f; border-color: #4a3f36; color: #9b9086; }
  :root:not([data-theme="light"]) .board-admin-btn.is-pinned { background: #3a3120; border-color: #7a6435; color: #e0c179; }
  :root:not([data-theme="light"]) .board-admin-btn.is-edit { background: #362324; border-color: #6b4448; color: #e2a7ac; }
  :root:not([data-theme="light"]) .board-admin-btn.is-delete { background: #362424; border-color: #6b4444; color: #e0a3a3; }
}

/* 게시글 상세(펼친 상태)의 첨부사진 나열 — 모바일 폭을 넘지 않게
   grid로 배치(작업지시서 11번). */
.notice-photo-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
  gap: 8px;
  margin-top: 10px;
}
.notice-photo-gallery img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 10px;
  background: var(--bg-elevated);
}

/* 관리자 글쓰기/수정 화면의 사진 첨부 미리보기 카드 — 삭제(✕)/순서
   이동(↑↓) 버튼과 "대표" 배지 포함(작업지시서 7·9번). */
.notice-photo-thumb {
  position: relative;
  width: 92px;
}
.notice-photo-thumb img {
  width: 92px;
  height: 92px;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  display: block;
}
.notice-photo-cover-tag {
  position: absolute;
  top: 4px;
  left: 4px;
  background: var(--accent);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 6px;
}
.notice-photo-thumb-btns {
  display: flex;
  gap: 4px;
  margin-top: 4px;
  justify-content: center;
}
.notice-photo-thumb-btns button {
  width: 24px;
  height: 24px;
  border-radius: 6px;
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  font-size: 11px;
  color: var(--ink);
}
.notice-photo-thumb-btns button.danger {
  color: #b00;
}
.notice-photo-thumb-btns button:disabled {
  opacity: 0.35;
}

::-webkit-scrollbar { width: 0; height: 0; }
/* ---- 3-2A-2 회원 현황: 슈퍼관리자 전용 조회 화면 ---- */
.ms-stats-row {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  margin-bottom: 14px;
}
@media (max-width: 600px) {
  .ms-stats-row { grid-template-columns: repeat(2, 1fr); }
}
.ms-filter-panel {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
  margin-bottom: 12px;
}
.ms-filter-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px 12px;
}
@media (max-width: 480px) {
  .ms-filter-grid { grid-template-columns: 1fr; }
}
.ms-filter-grid select,
.ms-filter-grid input {
  width: 100%;
  box-sizing: border-box;
}
.ms-member-card {
  background: var(--bg-elevated);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
  margin-bottom: 8px;
  cursor: pointer;
}
.ms-member-card:active { opacity: 0.85; }
.ms-member-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.ms-member-name { font-weight: 700; font-size: 14.5px; overflow-wrap: anywhere; }
.ms-member-sub { font-size: 12px; color: var(--ink-soft); margin-top: 2px; overflow-wrap: anywhere; }
.ms-member-badges { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.ms-badge {
  border: 1px solid var(--line); border-radius: 999px; padding: 3px 7px;
  font-size: 11px; color: var(--ink-soft);
}
.ms-badge-admin { background: #f3d9a3; color: #7a5a12; border-color: transparent; }
.ms-badge-ok { background: #dff3e3; color: #1a7f37; border-color: transparent; }
.ms-badge-warn { background: #fff3cd; color: #8a6300; border-color: transparent; }
.ms-badge-error { background: #fde2e1; color: #c0392b; border-color: transparent; }
.ms-pagination { display: flex; gap: 6px; align-items: center; justify-content: center; margin-top: 14px; flex-wrap: wrap; }
.ms-pagination button {
  min-width: 34px; padding: 7px 10px; border: 1px solid var(--line);
  background: var(--bg-elevated); color: var(--ink); border-radius: 8px;
}
.ms-pagination button:disabled { opacity: 0.4; cursor: default; }
.ms-pagination button.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.ms-detail-section { margin-bottom: 16px; }
.ms-detail-title { font-size: 12.5px; font-weight: 700; color: var(--ink-soft); margin-bottom: 6px; text-transform: uppercase; }
.ms-detail-row { display: flex; justify-content: space-between; gap: 10px; font-size: 13.5px; padding: 5px 0; border-bottom: 1px solid var(--line); }
.ms-detail-row .k { color: var(--ink-soft); flex-shrink: 0; }
.ms-detail-row .v { text-align: right; overflow-wrap: anywhere; }
.ms-status-control { padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg-elevated); }
.ms-status-control label { display: block; margin: 8px 0 5px; font-size: 12px; font-weight: 700; color: var(--ink-soft); }
.ms-status-control select, .ms-status-control textarea { width: 100%; box-sizing: border-box; }
.ms-status-control textarea { min-height: 72px; resize: vertical; }
.ms-status-actions { display: flex; gap: 8px; margin-top: 10px; }
.ms-status-actions button { flex: 1; }
.ms-status-preview { margin-top: 10px; padding: 10px; border-radius: 10px; background: var(--accent-soft); font-size: 12.5px; line-height: 1.55; }
.ms-status-preview ul { margin: 6px 0 0; padding-left: 18px; }
.ms-status-preview.ms-inline-error { background: #fde8e8; color: #9b1c1c; }
html[data-theme="dark"] .ms-status-preview.ms-inline-error { background: #4a2024; color: #ffb4b4; }
.ms-super-admin-control { border-color: var(--accent); }
.ms-super-admin-caution { margin: 8px 0; padding: 10px; border-radius: 10px; background: #fff3cd; color: #6a4b00; font-size: 12.5px; line-height: 1.5; }
html[data-theme="dark"] .ms-super-admin-caution { background: #443710; color: #ffe39a; }
.ms-diag-msg { font-size: 13px; padding: 6px 10px; border-radius: 8px; margin-bottom: 6px; background: var(--bg); }
.ms-diag-msg.warn { background: #fff3cd; color: #8a6300; }
.ms-diag-msg.error { background: #fde2e1; color: #c0392b; }

/* ORATIO STABILITY ADMIN V2: 관리자 텍스트 액션 공통 컴포넌트 */
.admin-action-btn{width:auto;height:auto;min-width:54px;padding:7px 11px;border-radius:8px;white-space:nowrap;flex:0 0 auto;font-size:12.5px;line-height:1.35;font-weight:650;background:var(--accent-soft);color:var(--accent);border:1px solid transparent}
.admin-action-btn.danger{color:#b43838;background:rgba(180,56,56,.08)}
.admin-action-btn.secondary{color:var(--ink-soft);background:var(--bg-elevated);border-color:var(--line)}
.admin-action-group{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;align-items:center}
.admin-legio-member-row{flex-wrap:wrap;align-items:center}.admin-legio-member-row .oi-title{min-width:180px}
.ms-member-card{padding:9px 11px;margin-bottom:5px;border-radius:9px}.ms-member-top{align-items:center}.ms-member-name{font-size:14px}.ms-member-sub{font-size:11.5px}
.ms-member-expand{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.ms-member-expand.hidden{display:none}.ms-member-detail-actions{display:flex;justify-content:flex-end;margin-top:8px}
.admin-approval-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.admin-approval-chip{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--bg-elevated)}.admin-approval-chip b{display:block;font-size:20px;margin-bottom:2px}
@media(max-width:480px){.admin-action-group{flex:1 1 100%;justify-content:flex-start}.admin-legio-member-row .oi-title{min-width:0;flex:1 1 100%}}


/* MEMBER_EXIT_V01 + MEMBER_PROFILE_LOCK */
.account-profile-lock-note{font-size:11.5px;color:var(--ink-soft);flex:0 0 auto;white-space:nowrap}
.account-deletion-box{margin-top:4px;padding-top:4px}
.account-deletion-pending-title{font-size:14px;font-weight:750;color:#a73535;margin:6px 0}
.admin-member-exit-row{flex-wrap:wrap;align-items:center}.admin-member-exit-row .oi-title{min-width:220px;flex:1 1 320px}
@media(max-width:480px){.account-baptismal-row{flex-wrap:wrap}.account-profile-lock-note{flex:1 1 100%;padding-left:0}.admin-member-exit-row .oi-title{min-width:0;flex:1 1 100%}}

/* =========================================================
   ADMIN OPERATION CENTER V01 — 운영 중요도 기반 메인 화면
   기존 카드/권한/API는 유지하고 정보구조와 시각적 우선순위만 정리.
   ========================================================= */
.admin-section-priority {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg-elevated);
}
.admin-section-priority + .admin-section {
  margin-top: 2px;
}
.admin-section-priority .admin-section-title {
  color: var(--ink);
  margin-top: 0;
}
.admin-section-priority .admin-card-btn {
  min-height: 64px;
}
@media (max-width:480px) {
  .admin-section-priority { padding: 10px; }
  .admin-card-btn { min-height: 54px; padding: 12px 11px; }
}

/* =========================================================
   전례·성월 자동기도 설정 (2026-09-02)
   관리자 전체 기본설정 / 본당관리자 본당별 설정 공통.
   ========================================================= */
.auto-prayer-settings-box {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
  background: var(--bg-elevated);
  margin-bottom: 10px;
}
.auto-prayer-settings-title {
  font-size: 13.5px;
  font-weight: 800;
  margin-bottom: 8px;
}
.auto-prayer-settings-box label {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  padding: 5px 0;
}
.auto-prayer-current {
  font-size: 11.5px;
  color: var(--ink-soft);
  line-height: 1.55;
  margin: 5px 0 8px;
}

/* =========================================================
   레지오 수첩 (2026-09-03)
   기존 레지오/ORATIO 디자인 변수만 사용하고 별도 디자인 시스템은 만들지 않는다.
   ========================================================= */
.legio-notebook-entry {
  width: 100%; display: flex; align-items: center; gap: 12px;
  margin: 0 0 14px; padding: 13px 14px; border: 1px solid var(--line);
  border-radius: 14px; background: var(--bg-elevated); color: var(--ink);
  text-align: left; box-shadow: var(--shadow); cursor: pointer;
}
.legio-notebook-entry-icon { font-size: 25px; line-height: 1; }
.legio-notebook-entry-copy { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.legio-notebook-entry-copy b { font-size: 15px; }
.legio-notebook-entry-copy small { color: var(--ink-soft); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.legio-notebook-entry-arrow { font-size: 24px; color: var(--ink-soft); }

.legio-notebook-hero { padding: 18px 16px; border: 1px solid var(--line); border-radius: 16px; background: var(--bg-elevated); margin-bottom: 16px; }
.legio-notebook-kicker { font-size: 11px; letter-spacing: .12em; color: var(--accent); font-weight: 800; }
.legio-notebook-hero h2 { margin: 5px 0 6px; font-size: 20px; line-height: 1.3; }
.legio-notebook-hero p { margin: 0; color: var(--ink-soft); font-size: 13px; line-height: 1.55; }
.legio-notebook-section-title { margin: 18px 4px 8px; font-weight: 800; font-size: 14px; color: var(--ink); }
.legio-notebook-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.legio-notebook-list { display: grid; grid-template-columns: 1fr; gap: 8px; }
.legio-notebook-card {
  width: 100%; min-height: 74px; display: flex; align-items: center; gap: 10px;
  padding: 12px; border: 1px solid var(--line); border-radius: 13px;
  background: var(--bg-elevated); color: var(--ink); text-align: left; cursor: pointer;
}
.legio-notebook-card.is-emergency { border-width: 2px; }
.legio-notebook-card.is-muted { opacity: .72; }
.legio-notebook-card-icon { font-size: 22px; width: 28px; flex: 0 0 28px; text-align: center; }
.legio-notebook-card-copy { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.legio-notebook-card-copy b { font-size: 14px; line-height: 1.3; }
.legio-notebook-card-copy small { font-size: 11.5px; color: var(--ink-soft); line-height: 1.35; }
.legio-notebook-card-arrow { color: var(--ink-soft); font-size: 20px; }
.legio-notebook-footnote { margin: 20px 4px 32px; font-size: 11.5px; line-height: 1.55; color: var(--ink-soft); }

.legio-notebook-subhead { margin-bottom: 14px; }
.legio-notebook-subhead h2 { margin: 10px 0 4px; font-size: 20px; }
.legio-notebook-subhead p { margin: 0; color: var(--ink-soft); font-size: 12.5px; line-height: 1.5; }
.legio-notebook-back { border: 0; background: transparent; color: var(--accent); padding: 6px 0; font: inherit; font-weight: 700; cursor: pointer; }
.legio-notebook-info, .legio-notebook-article, .legio-notebook-report-form, .legio-notebook-alert {
  border: 1px solid var(--line); border-radius: 14px; background: var(--bg-elevated); padding: 14px;
}
.legio-notebook-info p { margin: 0; line-height: 1.7; }
.legio-notebook-alert { margin-bottom: 10px; line-height: 1.55; font-size: 13px; }
.legio-notebook-alert.is-soft { margin-top: 10px; color: var(--ink-soft); }
.legio-notebook-article h3 { margin: 18px 0 6px; font-size: 15px; }
.legio-notebook-article h3:first-child { margin-top: 0; }
.legio-notebook-article p { margin: 0; font-size: 13.5px; line-height: 1.75; }
.legio-notebook-formula { margin: 9px 0; padding: 14px; border-radius: 10px; border: 1px solid var(--line); font-weight: 800; font-size: 16px; line-height: 1.7; text-align: center; }
.legio-notebook-small { color: var(--ink-soft); font-size: 12px !important; }
.legio-notebook-report-form { display: grid; grid-template-columns: 1fr; gap: 10px; }
.legio-notebook-report-row { display: grid; grid-template-columns: 105px 1fr; align-items: start; gap: 8px; font-size: 12.5px; }
.legio-notebook-report-row b { padding-top: 10px; line-height: 1.35; }
.legio-notebook-report-row input,
.legio-notebook-report-row select,
.legio-notebook-report-row textarea {
  width: 100%; min-width: 0; box-sizing: border-box;
  border: 1px solid var(--line); border-radius: 10px;
  background: var(--bg-elevated); color: var(--ink);
  padding: 9px 10px; font: inherit; font-size: 13.5px; line-height: 1.4;
}
.legio-notebook-report-row textarea { resize: vertical; min-height: 72px; }
.legio-notebook-report-row input:focus,
.legio-notebook-report-row select:focus,
.legio-notebook-report-row textarea:focus { outline: 2px solid color-mix(in srgb, var(--accent) 28%, transparent); outline-offset: 1px; border-color: var(--accent); }
.legio-baptism-draft-note { margin-bottom: 12px; }
.legio-baptism-actions { display: grid; grid-template-columns: 1.35fr 1fr; gap: 8px; margin-top: 14px; }
.legio-baptism-actions .primary-btn, .legio-baptism-actions .ghost-btn { margin: 0; }
.legio-notebook-steps { display: grid; gap: 8px; }
.legio-notebook-step { display: grid; grid-template-columns: 34px 1fr; gap: 10px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg-elevated); }
.legio-notebook-step > span { width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line); display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800; }
.legio-notebook-step div { display: flex; flex-direction: column; gap: 3px; }
.legio-notebook-step b { font-size: 13.5px; }
.legio-notebook-step small { font-size: 11.5px; color: var(--ink-soft); line-height: 1.4; }
.legio-notebook-inline-actions { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; margin-top: 12px; }

@media (max-width: 380px) {
  .legio-notebook-grid { grid-template-columns: 1fr; }
  .legio-notebook-report-row { grid-template-columns: 90px 1fr; }
  .legio-baptism-actions { grid-template-columns: 1fr; }
}


/* 레지오 수첩 V4 — 주회합 순서형 내비게이션 */
.legio-notebook-meeting-start{margin:14px 0 12px}
.legio-notebook-meeting-start .primary-btn{width:100%;min-height:48px}
.legio-notebook-meeting-list{display:flex;flex-direction:column;gap:8px}
.legio-notebook-meeting-row{width:100%;display:grid;grid-template-columns:30px 34px 1fr 20px;align-items:center;gap:8px;text-align:left;border:1px solid var(--line);background:var(--bg-elevated);border-radius:14px;padding:11px 10px;color:var(--ink);cursor:pointer}
.legio-notebook-meeting-row:active{transform:scale(.99)}
.legio-notebook-meeting-no{font-size:12px;opacity:.55;text-align:center}
.legio-notebook-meeting-icon{font-size:21px;text-align:center}
.legio-notebook-meeting-copy{display:flex;flex-direction:column;gap:3px;min-width:0;word-break:keep-all;overflow-wrap:break-word}
.legio-notebook-meeting-copy b{font-size:15px}
.legio-notebook-meeting-copy small{font-size:12px;color:var(--ink-soft)}
.legio-notebook-meeting-arrow{font-size:24px;opacity:.4;text-align:right}

/* 레지오 수첩 최종 마감 */
.legio-prayer-after-title{margin-top:18px!important;margin-bottom:8px!important}
.quick-card-legio-notebook .qc-title{font-weight:800}

/* 레지오 수첩 2026-09-05 체감 UX */
.legio-notebook-onboarding{margin:12px 0 18px;padding:14px 15px;border:1px solid var(--line);border-radius:14px;background:var(--bg-elevated);line-height:1.55}
.legio-notebook-onboarding p{margin:6px 0 10px;color:var(--ink-soft);font-size:13px}.legio-notebook-onboarding>div{display:flex;gap:8px;flex-wrap:wrap}.legio-notebook-onboarding .ghost-btn{width:auto}
.legio-notebook-meeting-static{display:grid;grid-template-columns:30px 34px 1fr;align-items:center;gap:8px;padding:11px 10px;border-bottom:1px solid var(--line)}
.legio-notebook-meeting-copy em{display:block;margin-top:5px;font-style:normal;font-size:12px;color:var(--ink-soft);line-height:1.45}
.prayer-assets{margin:18px 0;display:grid;gap:12px}.prayer-assets figure{margin:0}.prayer-assets img{display:block;width:100%;height:auto;border-radius:12px;border:1px solid var(--line);background:#fff}.prayer-assets figcaption{font-size:12px;color:var(--ink-soft);padding-top:5px}
.admin-prayer-assets-list{display:grid;gap:8px;margin-top:10px}.admin-prayer-asset{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:7px}.admin-prayer-asset img{width:64px;height:52px;object-fit:cover;border-radius:7px}.admin-prayer-asset .ghost-btn{width:auto;padding:7px 10px}

/* 2026-09-05 final review — 레지오 초대/수첩 네비게이션 */
.legio-notebook-onboarding.is-invite{
  position:relative;overflow:hidden;
  padding:16px 16px 14px;
  background:linear-gradient(145deg,var(--bg-elevated),var(--bg));
}
.legio-notebook-onboarding.is-invite::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gold);
}
.legio-notebook-onboarding.is-invite b{font-size:15px;letter-spacing:-.2px}
.legio-notebook-onboarding.is-invite p{font-size:13px;line-height:1.65;margin:7px 0 11px}
.legio-notebook-onboarding.is-invite small{display:block;margin-top:10px;color:var(--ink-soft);font-size:11.5px;line-height:1.5}
.legio-notebook-onboarding.is-invite .primary-btn,
.legio-notebook-onboarding.is-invite .ghost-btn{width:auto;min-height:38px;padding:8px 13px}

/* ===== 2026-09-05 레지오 초대/수첩 최종 통합 ===== */
.legio-invite-panel{
  max-width:680px;margin:26px auto;padding:0 18px 24px;text-align:center;
}
.legio-invite-visual{
  width:min(460px,92%);margin:0 auto 18px;border-radius:24px;overflow:hidden;
  background:var(--bg-elevated);box-shadow:0 12px 34px rgba(80,52,35,.08);
}
.legio-invite-visual img{
  display:block;
  width:100%;
  height:auto;
  max-height:none;
  object-fit:contain;
  object-position:center center;
  background:#f5efe6;
}
.legio-invite-kicker{font-size:12px;letter-spacing:.19em;font-weight:800;color:var(--accent);margin-bottom:7px}
.legio-invite-panel h2{font-size:25px;margin:0 0 10px;letter-spacing:-.7px}
.legio-invite-panel>p{margin:0 auto 10px;max-width:460px;color:var(--ink-soft);font-size:15px;line-height:1.65}
.legio-invite-meaning{max-width:500px;margin:12px auto 18px;padding:12px 14px;border-radius:14px;background:var(--bg-elevated);font-size:12.5px;color:var(--ink-soft);line-height:1.65}
.legio-invite-actions{display:grid;gap:9px;max-width:460px;margin:0 auto}
.legio-invite-actions .primary-btn,.legio-invite-actions .ghost-btn{width:100%;min-height:48px}
.legio-invite-more{border:0;background:transparent;color:var(--ink-soft);font-size:12.5px;margin-top:14px;padding:7px}
.legio-notebook-hero h2{letter-spacing:-.7px}
.legio-notebook-hero p{white-space:nowrap}
.prayer-assets figure{background:var(--bg-elevated);padding:8px;border-radius:14px}
.prayer-assets figcaption{padding:8px 4px 3px;font-size:11.5px;line-height:1.55;color:var(--ink-soft);text-align:left}
@media (max-width:480px){
  .legio-invite-panel{margin-top:18px;padding-left:12px;padding-right:12px}
  .legio-invite-panel h2{font-size:22px}
  .legio-invite-panel>p{font-size:14px}
  .legio-notebook-hero p{font-size:13px;white-space:nowrap}
}

.legio-gate-status{max-width:560px;margin:34px auto;padding:24px 20px;border:1px solid var(--line);border-radius:20px;background:var(--bg-elevated);text-align:center}
.legio-gate-status h3{margin:5px 0 10px;font-size:21px}.legio-gate-status p{color:var(--ink-soft);font-size:14px;line-height:1.65}

/* 초대 이미지 크롭 보정 */
.legio-invite-visual{
  aspect-ratio:auto;
}
@media (max-width:480px){
  .legio-invite-visual{
    width:94%;
    border-radius:20px;
  }
  .legio-invite-visual img{
    width:100%;
    height:auto;
    object-fit:contain;
  }
}


/* ===== 레지오 허브 V1 · 2026-09-05 ===== */
.legio-hub-hero,.legio-about-hero-copy{border-radius:18px}
.legio-hub-hero{padding:20px 18px;margin-bottom:14px;border:1px solid var(--line);background:linear-gradient(145deg,var(--bg-elevated),var(--bg));}
.legio-hub-kicker{font-size:11px;letter-spacing:.18em;font-weight:800;color:var(--accent)}
.legio-hub-hero h2{margin:5px 0 6px;font-size:24px;letter-spacing:-.7px}.legio-hub-hero p{margin:0;color:var(--ink-soft);font-size:13.5px}
.legio-hub-status{margin:0 0 14px}.legio-hub-state{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid var(--line);border-radius:15px;background:var(--bg-elevated)}
.legio-hub-state>div{min-width:0}.legio-hub-state b{display:block;font-size:14.5px}.legio-hub-state p{margin:4px 0 0;font-size:12px;color:var(--ink-soft);line-height:1.5}.legio-hub-state .ghost-btn,.legio-hub-state .primary-btn{width:auto;flex:0 0 auto;padding:8px 12px}.legio-hub-state.is-active{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.legio-hub-state.is-waiting{background:color-mix(in srgb,var(--gold) 6%,var(--bg-elevated))}.legio-hub-state.is-loading{display:block;color:var(--ink-soft);font-size:12.5px}
.legio-hub-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.legio-hub-card{min-height:94px;border:1px solid var(--line);border-radius:15px;background:var(--bg-elevated);color:var(--ink);display:grid;grid-template-columns:34px 1fr 18px;align-items:center;gap:9px;text-align:left;padding:13px;cursor:pointer}.legio-hub-card.is-primary{border-width:2px}.legio-hub-card.is-about{background:linear-gradient(145deg,var(--bg-elevated),var(--bg))}.legio-hub-icon{font-size:24px}.legio-hub-card span:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}.legio-hub-card b{font-size:14.5px}.legio-hub-card small{font-size:11.5px;line-height:1.4;color:var(--ink-soft)}.legio-hub-card i{font-style:normal;color:var(--ink-soft);font-size:21px}

/* 레지오 알아보기 */
.legio-about-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:0;margin-bottom:18px;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:var(--bg-elevated)}.legio-about-hero>img{width:100%;height:100%;min-height:250px;object-fit:contain;object-position:center;background:#f5efe6}.legio-about-hero-copy{padding:24px 22px;display:flex;flex-direction:column;justify-content:center}.legio-about-hero-copy h2{margin:7px 0 10px;font-size:25px;line-height:1.3;letter-spacing:-.8px}.legio-about-hero-copy p{margin:0;color:var(--ink-soft);font-size:13.5px;line-height:1.7}
.legio-about-section{margin:22px 0}.legio-about-section h3{margin:0 0 10px;font-size:17px;letter-spacing:-.4px}.legio-stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.legio-stat-card{padding:14px 12px;border:1px solid var(--line);border-radius:14px;background:var(--bg-elevated);text-align:center}.legio-stat-card strong{display:block;color:var(--accent);font-size:17px;line-height:1.25}.legio-stat-card span{display:block;margin-top:6px;color:var(--ink-soft);font-size:11.5px;line-height:1.45}
.legio-activity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.legio-activity-grid>div{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--bg-elevated)}.legio-activity-grid span{font-size:21px}.legio-activity-grid b{display:block;margin-top:5px;font-size:14px}.legio-activity-grid p{margin:4px 0 0;color:var(--ink-soft);font-size:11.5px;line-height:1.5}.legio-about-quote{margin:12px 0 0;padding:13px 14px;border-left:3px solid var(--gold);background:var(--bg-elevated);border-radius:0 12px 12px 0;font-size:13px;line-height:1.65}
.legio-org-flow{display:flex;align-items:center;gap:5px;overflow-x:visible;padding:4px 0 7px}.legio-org-flow>div{box-sizing:border-box;flex:1 1 0;min-width:0;padding:10px 6px;border:1px solid var(--line);border-radius:12px;background:var(--bg-elevated);text-align:center}.legio-org-flow b{display:block;color:var(--accent);font-size:13px}.legio-org-flow span{display:block;font-size:11px;line-height:1.35;color:var(--ink-soft)}.legio-org-flow i{font-style:normal;color:var(--ink-soft);flex:0 0 12px;min-width:12px}.legio-about-note{color:var(--ink-soft);font-size:11px;line-height:1.5}.legio-about-note-box{margin:0 0 12px;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:var(--bg-elevated);font-size:12px;line-height:1.65;color:var(--ink-soft)}
.legio-journey{display:grid;gap:8px}.legio-journey-step{display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg-elevated);opacity:.66}.legio-journey-step>span{width:28px;height:28px;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}.legio-journey-step div{display:flex;flex-direction:column;gap:2px}.legio-journey-step b{font-size:13px}.legio-journey-step small{font-size:11px;color:var(--ink-soft)}.legio-journey-step.done,.legio-journey-step.current{opacity:1}.legio-journey-step.done>span{background:var(--accent);color:#fff;border-color:var(--accent)}.legio-journey-step.current{border-width:2px}.legio-journey-status{padding:12px 13px;border-radius:12px;background:var(--bg-elevated);display:flex;flex-direction:column;gap:3px}.legio-journey-status b{font-size:13.5px}.legio-journey-status span{font-size:11.5px;color:var(--ink-soft);line-height:1.5}.legio-journey-status.is-active{border-left:3px solid var(--accent)}.legio-journey-status.is-waiting{border-left:3px solid var(--gold)}.legio-journey-status.is-alert{border-left:3px solid #a33}.legio-about-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:5px}.legio-about-actions .primary-btn,.legio-about-actions .ghost-btn{width:auto;flex:1 1 145px}.legio-about-loading{padding:14px;border:1px solid var(--line);border-radius:12px;color:var(--ink-soft);font-size:12px}
.legio-about-sources{margin:26px 0 34px;padding:14px;border-top:1px solid var(--line);color:var(--ink-soft)}.legio-about-sources b{display:block;color:var(--ink);font-size:12px;margin-bottom:8px}.legio-about-sources>div{display:flex;gap:10px;flex-wrap:wrap}.legio-about-sources a{color:var(--accent);font-size:11.5px;text-decoration:none}.legio-about-sources small{display:block;margin-top:8px;font-size:10.5px;line-height:1.5}.legio-gate-links{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
@media(max-width:600px){.legio-hub-grid{grid-template-columns:1fr}.legio-hub-state{align-items:flex-start;flex-direction:column}.legio-about-hero{grid-template-columns:1fr}.legio-about-hero>img{min-height:0;height:auto;object-fit:contain}.legio-about-hero-copy{padding:18px 16px}.legio-stat-grid{grid-template-columns:1fr}.legio-activity-grid{grid-template-columns:1fr 1fr}}
@media(max-width:380px){.legio-activity-grid{grid-template-columns:1fr}}

.legio-member-types{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.legio-member-types>div{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--bg-elevated)}.legio-member-types b{display:block;color:var(--accent);font-size:14px;margin-bottom:4px}.legio-member-types span{font-size:11.5px;line-height:1.5;color:var(--ink-soft)}
@media(max-width:480px){.legio-member-types{grid-template-columns:1fr}}

/* 2026-09-05 레지오 허브 V1 마감 — 조직도 반응형
   데스크톱/태블릿: 가로 흐름(→), 모바일: 세로 흐름(↓). */
.legio-org-flow > i{font-size:0;min-width:14px;text-align:center}
.legio-org-flow > i::before{content:'→';font-size:15px;color:var(--ink-soft)}
@media (max-width:680px){
  .legio-org-flow{flex-direction:column;align-items:stretch;overflow-x:visible;gap:5px}
  .legio-org-flow>div{width:100%;min-width:0;box-sizing:border-box}
  .legio-org-flow>i{min-width:0;line-height:1;text-align:center}
  .legio-org-flow>i::before{content:'↓';font-size:15px}
}


/* V1.57 앱 릴리스 안내 — 화면 전체를 가리지 않는 compact card */
.oratio-app-update-card{
  position:fixed;right:18px;bottom:86px;z-index:10040;
  width:min(420px,calc(100vw - 28px));
  padding:16px;border:1px solid var(--line,#ddd6cf);border-radius:18px;
  background:var(--card,#fff);color:var(--ink,#2b2724);
  box-shadow:0 12px 34px rgba(34,28,24,.16);
  transition:opacity .18s ease,transform .18s ease;
}
.oratio-app-update-card.out{opacity:0;transform:translateY(8px)}
.oratio-app-update-head{display:flex;align-items:center;gap:10px}
.oratio-app-update-mark{font-size:25px;line-height:1}
.oratio-app-update-head div{display:flex;flex-direction:column;gap:2px;min-width:0}
.oratio-app-update-head b{font-size:15px;line-height:1.35}
.oratio-app-update-head small{font-size:11px;color:var(--ink-soft,#756d66)}
.oratio-app-update-summary{display:flex;flex-direction:column;gap:5px;margin:11px 0 13px;font-size:12px;line-height:1.55;color:var(--ink-soft,#625b55)}
.oratio-app-update-actions{display:flex;justify-content:flex-end;gap:8px}
.oratio-app-update-actions button{border:0;border-radius:11px;padding:9px 12px;background:var(--accent,#8e2630);color:#fff;font:inherit;font-size:12px;font-weight:800}
.oratio-app-update-actions button.ghost{background:var(--accent-soft,#f1e3da);color:var(--accent,#8e2630)}
@media(max-width:640px){
  .oratio-app-update-card{left:14px;right:14px;bottom:78px;width:auto;padding:14px}
  .oratio-app-update-summary{font-size:11.5px}
}

/* 2026-09-05 내 본당 게시판 긴급보정 — 기본 요약은 짧게 유지하고,
   펼쳐보기에서는 10건 단위 이전/다음 페이지 이동을 제공한다. */
.notice-board-nav {
  margin: 10px 0 4px;
}
.notice-board-expand,
.notice-board-collapse,
.notice-board-pager button {
  border: 1px solid var(--line);
  background: var(--bg-elevated);
  color: var(--ink);
  border-radius: 9px;
  font: inherit;
}
.notice-board-expand {
  width: 100%;
  padding: 9px 12px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--accent);
}
.notice-board-nav-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 9px;
}
.notice-board-count {
  font-size: 12px;
  color: var(--ink-soft);
}
.notice-board-collapse {
  padding: 6px 10px;
  font-size: 12px;
}
.notice-board-pager {
  display: grid;
  grid-template-columns: minmax(80px, 1fr) auto minmax(80px, 1fr);
  align-items: center;
  gap: 8px;
}
.notice-board-pager button {
  padding: 8px 10px;
  font-size: 12.5px;
  font-weight: 700;
}
.notice-board-pager button:last-child {
  justify-self: stretch;
}
.notice-board-pager button:disabled {
  opacity: .35;
  cursor: default;
}
.notice-board-page-status {
  min-width: 48px;
  text-align: center;
  font-size: 12px;
  font-weight: 700;
  color: var(--ink-soft);
}

/* 2026-09-05 계정 관리 UI HOTFIX:
   내 계정 하단의 동기화/로그아웃/회원탈퇴를 큰 전체폭 버튼 카드로
   보이게 하던 레거시 표현을 제거하고, 2026-08-28~29 최종 방향인
   작고 간결한 텍스트 액션으로 통일한다. 기능/ID는 변경하지 않는다. */
.account-management-panel {
  padding: 4px 2px 2px;
}
.account-management-main-actions {
  display: flex;
  align-items: center;
  gap: 9px;
  min-height: 34px;
}
.account-management-action,
.account-delete-link,
.account-delete-cancel-link {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  background: none;
  font: inherit;
  cursor: pointer;
  padding: 5px 0;
}
.account-management-action {
  color: var(--ink-soft);
  font-size: 13px;
  font-weight: 650;
}
.account-management-sync {
  color: var(--accent);
  font-weight: 750;
}
.account-management-divider {
  color: var(--line);
  font-size: 15px;
  user-select: none;
}
.account-deletion-compact,
.account-deletion-pending-compact {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}
.account-delete-link {
  color: #a73535;
  font-size: 12px;
  font-weight: 650;
}
.account-delete-cancel-link {
  color: var(--accent);
  font-size: 12px;
  font-weight: 700;
  margin-top: 3px;
}
.account-deletion-help {
  color: var(--ink-soft);
  font-size: 11px;
  line-height: 1.55;
  margin-top: 1px;
}
.account-deletion-pending-title {
  font-size: 12.5px;
  font-weight: 750;
  color: var(--ink);
  margin-bottom: 2px;
}
@media (max-width: 480px) {
  .account-management-main-actions { gap: 8px; }
  .account-management-action { font-size: 12.5px; }
}

/* ===== 설정 화면 업무별 재구성 (2026-09-11 / v2.47) =====
   기존 설정 ID와 이벤트는 그대로 유지하고, 일반 사용자가 목적별로 찾을 수
   있도록 시각적 위계만 재구성한다. 실험·복구 기능은 고급 설정으로 접는다. */
#screen-settings { padding-top: 10px; }
.settings-intro {
  margin: 0 0 14px;
  padding: 16px 17px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg-elevated);
}
.settings-intro-title { font-size: 17px; font-weight: 800; color: var(--ink); }
.settings-intro-desc { margin-top: 5px; font-size: 13px; line-height: 1.5; color: var(--ink-soft); }
.settings-group {
  margin: 0 0 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: var(--bg-elevated);
}
.settings-group-head {
  padding: 14px 16px 10px;
  border-bottom: 1px solid var(--line);
  background: color-mix(in srgb, var(--bg-elevated) 88%, var(--accent) 12%);
}
.settings-group-title { font-size: 15.5px; font-weight: 800; color: var(--ink); }
.settings-group-desc { margin-top: 3px; font-size: 12.5px; line-height: 1.45; color: var(--ink-soft); }
.settings-group .setting-row { margin: 0 14px; }
.settings-group .setting-row:last-child { border-bottom: none; }
.settings-advanced {
  margin: 0 0 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: var(--bg-elevated);
}
.settings-advanced > summary {
  cursor: pointer;
  list-style: none;
  padding: 15px 16px;
  font-weight: 800;
  color: var(--ink);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.settings-advanced > summary::-webkit-details-marker { display: none; }
.settings-advanced > summary::after { content: '▾'; font-size: 13px; color: var(--ink-soft); transition: transform .18s ease; }
.settings-advanced[open] > summary::after { transform: rotate(180deg); }
.settings-advanced > summary span { margin-left: auto; font-size: 12px; font-weight: 500; color: var(--ink-soft); }
.settings-advanced-body { border-top: 1px solid var(--line); }
.settings-advanced-body .setting-row { margin: 0 14px; }
@media (max-width: 560px) {
  .settings-group-head { padding: 13px 14px 9px; }
  .settings-group .setting-row, .settings-advanced-body .setting-row { margin: 0 10px; }
  .settings-advanced > summary { align-items: flex-start; flex-wrap: wrap; }
  .settings-advanced > summary span { width: 100%; margin-left: 0; order: 2; }
}

/* =========================================================
   ORATIO SETTINGS STUDIO V1.63 — 2026-09-11
   목적: 기능 나열형 설정을 '기도 환경을 설계하는 화면'으로 재구성한다.
   기존 기능 ID/저장 로직은 유지하고 정보 구조와 시각 계층만 개선한다.
   ========================================================= */
#screen-settings {
  --settings-accent: var(--accent);
  --settings-card: color-mix(in srgb, var(--bg-elevated) 96%, var(--accent) 4%);
  --settings-card-2: color-mix(in srgb, var(--bg-elevated) 92%, var(--accent) 8%);
  scroll-behavior: smooth;
}
.settings-orbit-hero {
  position: relative;
  overflow: hidden;
  margin: 2px 0 18px;
  padding: 24px;
  border: 1px solid color-mix(in srgb, var(--line) 72%, #6d97ff 28%);
  border-radius: 24px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--bg-elevated) 86%, #0f2b5d 14%), color-mix(in srgb, var(--bg-elevated) 90%, #171f43 10%));
  box-shadow: 0 18px 44px rgba(4, 14, 32, .16);
  isolation: isolate;
}
.settings-orbit-sky { position:absolute; inset:0; pointer-events:none; z-index:-1; opacity:.9; }
.settings-orbit-sky::before {
  content:''; position:absolute; inset:0;
  background: radial-gradient(circle at 76% 10%, rgba(255,206,107,.16), transparent 20%), linear-gradient(180deg, rgba(38,79,141,.12), transparent 72%);
}
.settings-orbit-glow { position:absolute; border-radius:999px; filter:blur(28px); opacity:.34; }
.settings-orbit-glow-a { width:210px; height:210px; right:-40px; top:-76px; background:#6b8cff; }
.settings-orbit-glow-b { width:180px; height:180px; left:28%; bottom:-122px; background:#4b9a8c; }
.settings-orbit-cross { position:absolute; right:9%; top:26px; width:5px; height:34px; border-radius:4px; background:rgba(255,255,255,.22); box-shadow:0 0 18px rgba(255,255,255,.18); }
.settings-orbit-cross::before { content:''; position:absolute; left:-9px; top:9px; width:23px; height:5px; border-radius:4px; background:inherit; }
.settings-orbit-copy { max-width:760px; }
.settings-orbit-kicker { font-size:11px; letter-spacing:.18em; font-weight:800; color:var(--settings-accent); }
.settings-orbit-copy h2 { margin:7px 0 7px; font-size:clamp(22px,3.2vw,34px); line-height:1.18; color:var(--ink); letter-spacing:-.035em; }
.settings-orbit-copy p { margin:0; max-width:720px; font-size:13.5px; line-height:1.7; color:var(--ink-soft); }
.settings-orbit-nav { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; margin-top:20px; }
.settings-orbit-link { min-width:0; display:flex; align-items:center; gap:10px; padding:12px 13px; border:1px solid color-mix(in srgb, var(--line) 85%, #6d97ff 15%); border-radius:15px; background:color-mix(in srgb, var(--bg-elevated) 88%, transparent); color:var(--ink); text-decoration:none; transition:transform .15s ease,border-color .15s ease,background .15s ease; }
.settings-orbit-link:hover { transform:translateY(-1px); border-color:color-mix(in srgb, var(--settings-accent) 58%, var(--line)); }
.settings-orbit-link.is-primary { border-color:color-mix(in srgb, var(--settings-accent) 72%, var(--line)); background:linear-gradient(135deg,rgba(91,136,244,.22),rgba(91,136,244,.07)); box-shadow:0 0 0 1px rgba(102,151,255,.08) inset; }
.settings-orbit-symbol { flex:0 0 32px; width:32px; height:32px; display:grid; place-items:center; border-radius:10px; background:rgba(107,151,255,.14); color:var(--settings-accent); font-size:16px; font-weight:900; }
.settings-orbit-link b,.settings-orbit-link small { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-orbit-link b { font-size:13px; }
.settings-orbit-link small { margin-top:2px; font-size:10.5px; color:var(--ink-soft); font-weight:500; }

.settings-studio { --studio-accent:#6d97ff; margin:0 0 16px; border:1px solid color-mix(in srgb,var(--line) 78%,var(--studio-accent) 22%); border-radius:22px; overflow:hidden; background:linear-gradient(145deg,color-mix(in srgb,var(--bg-elevated) 96%,var(--studio-accent) 4%),var(--bg-elevated)); box-shadow:0 12px 32px rgba(4,14,32,.08); scroll-margin-top:90px; }
.settings-studio-affiliation { --studio-accent:#4fc7ad; }
.settings-studio-listen { --studio-accent:#9678ff; }
.settings-studio-account { --studio-accent:#e1ad55; }
.settings-studio-help { --studio-accent:#8da4ca; }
.settings-studio-head { display:flex; align-items:center; gap:12px; padding:17px 18px; border-bottom:1px solid color-mix(in srgb,var(--line) 82%,var(--studio-accent) 18%); background:linear-gradient(90deg,color-mix(in srgb,var(--studio-accent) 12%,transparent),transparent 55%); }
.settings-studio-icon { flex:0 0 38px; width:38px; height:38px; display:grid; place-items:center; border-radius:12px; background:color-mix(in srgb,var(--studio-accent) 17%,var(--bg-elevated)); color:var(--studio-accent); font-size:18px; font-weight:900; box-shadow:0 8px 24px color-mix(in srgb,var(--studio-accent) 12%,transparent); }
.settings-studio-title { font-size:16px; font-weight:850; color:var(--ink); letter-spacing:-.02em; }
.settings-studio-desc { margin-top:3px; font-size:12.5px; line-height:1.45; color:var(--ink-soft); }
.settings-studio-note { margin-left:auto; align-self:flex-start; padding:6px 9px; border-radius:999px; font-size:10.5px; font-weight:700; color:color-mix(in srgb,var(--studio-accent) 86%,var(--ink)); background:color-mix(in srgb,var(--studio-accent) 10%,transparent); white-space:nowrap; }
.settings-studio-grid { display:grid; gap:10px; padding:12px; }
.settings-studio-grid-3 { grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr)); }
.settings-studio-grid-2 { grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); }
.settings-studio-grid-affiliation { grid-template-columns:minmax(220px,.8fr) minmax(0,1.8fr); }
.setting-tile { min-width:0; min-height:116px; display:flex; flex-direction:column; justify-content:space-between; gap:14px; padding:15px; border:1px solid color-mix(in srgb,var(--line) 88%,var(--studio-accent) 12%); border-radius:16px; background:color-mix(in srgb,var(--settings-card) 94%,var(--studio-accent) 6%); color:var(--ink); box-sizing:border-box; }
.setting-tile-wide { grid-column:1/-1; min-height:auto; }
.setting-tile-stack { justify-content:flex-start; }
.setting-tile-action { flex-direction:row; flex-wrap:wrap; align-items:center; min-height:98px; }
.setting-tile-switch { min-height:116px; }
.setting-tile .sr-label { font-size:14.5px; font-weight:800; letter-spacing:-.01em; word-break:keep-all; overflow-wrap:anywhere; }
.setting-tile .sr-desc { margin-top:4px; font-size:11.8px; line-height:1.5; color:var(--ink-soft); word-break:keep-all; overflow-wrap:anywhere; }
.settings-control-select { width:100%; padding:9px 11px; border:1px solid color-mix(in srgb,var(--line) 84%,var(--studio-accent) 16%); border-radius:10px; background:var(--bg-elevated); color:var(--ink); font-size:13px; }
.settings-range { width:100%; accent-color:var(--studio-accent); }
.settings-chip-list { display:flex; flex-wrap:wrap; gap:8px; width:100%; }
.settings-inline-status { width:100%; font-size:12px; color:var(--ink-soft); }
.settings-fullwidth { width:100%; }
.settings-strong { font-weight:750; font-size:13.5px; margin-bottom:8px; }
.settings-profile-edit { display:flex; flex-direction:column; gap:8px; width:100%; }
.setting-tile-copy { min-width:0; flex:1 1 160px; }
.settings-action { width:auto!important; min-width:72px; padding:9px 13px!important; flex:0 0 auto; }
.settings-danger { color:#d95151!important; }
.setting-tile-link { min-height:88px; flex-direction:row; align-items:center; text-align:left; text-decoration:none; appearance:none; font:inherit; cursor:pointer; }
.setting-tile-link:hover { border-color:color-mix(in srgb,var(--studio-accent) 44%,var(--line)); }
.setting-tile-arrow { flex:0 0 auto; font-size:22px; color:var(--studio-accent); }
#row-open-admin:not(.hidden) { display:contents; }
#btn-open-admin { width:100%; }

.settings-studio .settings-advanced { margin:0 12px 12px; border:1px solid color-mix(in srgb,var(--line) 88%,var(--studio-accent) 12%); border-radius:16px; background:color-mix(in srgb,var(--bg-elevated) 97%,var(--studio-accent) 3%); overflow:hidden; }
.settings-studio .settings-advanced > summary { padding:14px 15px; display:flex; align-items:center; cursor:pointer; list-style:none; }
.settings-studio .settings-advanced > summary::-webkit-details-marker { display:none; }
.settings-studio .settings-advanced > summary > span { display:flex; flex-direction:column; gap:2px; }
.settings-studio-help .settings-advanced > summary > span { margin-left:0; width:auto; order:0; min-width:0; text-align:left; }
.settings-studio .settings-advanced > summary b { font-size:13.5px; color:var(--ink); }
.settings-studio .settings-advanced > summary small { font-size:11px; color:var(--ink-soft); font-weight:500; }
.settings-studio .settings-advanced > summary::after { content:'＋'; margin-left:auto; color:var(--studio-accent); font-size:18px; transition:transform .18s ease; }
.settings-studio .settings-advanced[open] > summary::after { transform:rotate(45deg); }
.settings-studio .settings-advanced-body { border-top:1px solid var(--line); }
.settings-studio .settings-advanced-body .setting-row { margin:0 14px; }

/* Legacy responsive overrides removed; V1.68 UI MASTER below is the single source of truth. */

/* =========================================================
   ORATIO V1.68 — UI MASTER
   승인 시안과 실제 기능을 1:1로 맞춘다.
   본질: 오늘의 기도 + 전체 기도 카테고리 / 맥락형 설정 / 접근 쉬운 관리자.
   주간=따뜻하고 편안한 종이·햇빛 톤, 야간=깊고 고요한 마리아 블루 톤.
   ========================================================= */
:root{
  --oratio-focus:#a33a59;--oratio-touch:44px;
  --ui-blue:var(--accent);--ui-blue-2:#b44c6a;--ui-blue-soft:var(--accent-soft);
  --ui-green:#2fa77c;--ui-purple:#7658d8;--ui-gold:#cf8a22;--ui-red:#c84f52;
  --ui-surface:var(--bg-elevated);--ui-surface-2:var(--bg);--ui-card-border:var(--line);
  --ui-shadow:0 14px 38px rgba(84,63,34,.08);
  --hero-image:url('../images/ui/home-hero-day.jpg');
  --hero-overlay:linear-gradient(90deg,rgba(255,253,248,.95) 0%,rgba(255,253,248,.75) 48%,rgba(255,253,248,.12) 100%);
  --hero-title:#2b2420;--hero-copy:#4f596b;
}
:root[data-theme="dark"]{
  --oratio-focus:#8bb4ff;--ui-blue:#70a0ff;--ui-blue-2:#4380f1;--ui-blue-soft:rgba(91,137,245,.16);
  --ui-green:#5bd0ad;--ui-purple:#a68cf5;--ui-gold:#e0b25c;--ui-red:#ff777d;
  --ui-surface:var(--bg-elevated);--ui-surface-2:var(--bg);--ui-card-border:var(--line);
  --ui-shadow:0 18px 48px rgba(0,0,0,.28);
  --hero-image:url('../images/ui/home-hero-night.jpg');
  --hero-overlay:linear-gradient(90deg,rgba(5,17,37,.94) 0%,rgba(6,24,49,.72) 52%,rgba(5,15,30,.1) 100%);
  --hero-title:#f3f7ff;--hero-copy:#c6d3ea;
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --oratio-focus:#8bb4ff;--ui-blue:#70a0ff;--ui-blue-2:#4380f1;--ui-blue-soft:rgba(91,137,245,.16);
    --ui-green:#5bd0ad;--ui-purple:#a68cf5;--ui-gold:#e0b25c;--ui-red:#ff777d;
    --ui-surface:var(--bg-elevated);--ui-surface-2:var(--bg);--ui-card-border:var(--line);--ui-shadow:0 18px 48px rgba(0,0,0,.28);
    --hero-image:url('../images/ui/home-hero-night.jpg');
    --hero-overlay:linear-gradient(90deg,rgba(5,17,37,.94) 0%,rgba(6,24,49,.72) 52%,rgba(5,15,30,.1) 100%);
    --hero-title:#f3f7ff;--hero-copy:#c6d3ea;
  }
}
button,a,select,input,summary,[role="button"],[role="tab"],[role="switch"]{touch-action:manipulation}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,[role="button"]:focus-visible,[role="tab"]:focus-visible,[role="switch"]:focus-visible{outline:3px solid var(--oratio-focus)!important;outline-offset:3px!important}

/* App shell
   2026-09-20: 이 블록이 88행 #app/229행 .screen 기본값을 화면마다 다른 값
   (760/980/1180px)으로 다시 덮어써서, 상단바·본문·하단바 폭이 화면별로
   어긋나는 문제의 원인이었다. #app은 이미 위에서 var(--layout-max)를
   쓰므로 여기서 다시 선언하지 않고, .screen/.bottom-nav도 같은 변수로
   통일한다 — 이제 #screen-home 등 개별 화면 오버라이드는 불필요. */
.screen{width:100%;max-width:var(--layout-max);margin-inline:auto;box-sizing:border-box}
.bottom-nav{max-width:var(--layout-max)}

/* Top bar: management access is deliberately visible for users with management roles. */
.topbar{min-height:calc(58px + var(--safe-top));padding:calc(11px + var(--safe-top)) clamp(10px,2vw,18px) 11px}
.topbar-account-btn{height:34px;min-height:34px;display:inline-flex;align-items:center;justify-content:center}
.topbar-account-admin{padding:6px 6px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:10px;color:var(--accent);font-weight:700}
.topbar-account-admin:not(.hidden){background:transparent}
.topbar-account-admin.is-current:not(.hidden){background:var(--accent-soft);border-color:var(--accent);font-weight:800}
.topbar-account-admin .admin-card-badge:not(.hidden){display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:3px;border-radius:999px;background:var(--accent);color:#fff;font-size:10px}

/* HOME --------------------------------------------------- */
#screen-home{--home-line:color-mix(in srgb,var(--line) 76%,var(--ui-blue) 24%);padding-top:14px}
.home-master-hero{position:relative;overflow:hidden;isolation:isolate;margin-bottom:12px;min-height:230px;padding:clamp(24px,4.6vw,42px);border:1px solid var(--home-line);border-radius:26px;background-image:var(--hero-overlay),var(--hero-image);background-size:cover;background-position:center;box-shadow:var(--ui-shadow)}
.home-master-hero-sky{display:none}.home-master-hero::after{display:none}
.home-master-brand,.home-master-kicker{font-size:10px;letter-spacing:.18em;font-weight:900;color:var(--ui-blue)}
.home-master-hero h2{max-width:600px;margin:17px 0 12px;font-size:clamp(28px,4.4vw,42px);line-height:1.17;letter-spacing:-.04em;color:var(--hero-title);text-shadow:0 1px 18px rgba(0,0,0,.08)}
.home-master-quote{max-width:560px;margin:0;color:var(--hero-copy);font-size:13px;line-height:1.7;font-weight:600}
.home-master-cross{display:none}
.home-master-day{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding:14px 17px;border:1px solid var(--ui-card-border);border-radius:17px;background:var(--ui-surface);box-shadow:0 6px 20px rgba(24,38,66,.035)}
.home-master-day>div{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.home-master-day strong{font-size:14px;color:var(--ink)}.home-master-day .hero-devotion{margin:0;padding:5px 9px;border-radius:999px;background:var(--ui-blue-soft);color:var(--ink-soft);font-size:11px}.home-master-day-more{width:var(--oratio-touch);height:var(--oratio-touch);min-width:var(--oratio-touch);border-radius:12px;color:var(--ui-blue);font-size:25px}
.home-master-prayer{padding:18px;border:1px solid color-mix(in srgb,var(--ui-card-border) 70%,var(--ui-blue) 30%);border-radius:22px;background:var(--ui-surface);box-shadow:var(--ui-shadow)}
.home-master-prayer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.home-master-prayer-head h2{margin:5px 0 3px;font-size:clamp(22px,3vw,29px);color:var(--ink)}.home-master-prayer-head p{margin:0;color:var(--ink-soft);font-size:12px}.home-master-count{flex:0 0 auto;padding:7px 10px;border-radius:999px;background:var(--ui-blue-soft);font-size:12px;color:var(--ink-soft)}
.home-master-resume-meta{display:flex;align-items:center;justify-content:space-between;margin-top:14px;color:var(--ink-soft);font-size:12.5px}.home-master-resume-meta strong{color:var(--ui-blue);font-size:13.5px}
.home-master-progress{height:7px;margin:7px 0 4px;border-radius:99px;background:color-mix(in srgb,var(--line) 82%,transparent);overflow:hidden}.home-master-progress i{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,var(--ui-blue),#79a7ff);transition:width .2s ease}
.home-master-primary{display:flex!important;align-items:center;justify-content:center;gap:8px;width:100%!important;min-height:53px!important;margin:14px 0 16px!important;border-radius:15px!important;background:linear-gradient(135deg,#2f70ea,#4d86f3)!important;color:#fff!important;box-shadow:0 10px 24px rgba(47,112,234,.21)!important;font-size:15px!important;font-weight:850!important}
/* 오늘의 기도: 승인된 시안 반영 — 카드 전체를 와인 그라데이션으로 채우고
   헤더(아이콘+제목·날짜·성월 태그)를 카드 안으로 합친다. 리스트 항목의
   글자/테두리/번호원/화살표/태그를 전부 흰색 계열로 반전한다. */
.home-master-order{overflow:hidden;border:0;border-radius:20px;background:linear-gradient(160deg,var(--accent) 0%,var(--hero-to) 100%);color:#fff;box-shadow:var(--shadow)}
.home-master-order-top{padding:20px 16px 14px}
.home-master-order-kicker{font-size:17px;font-weight:800;letter-spacing:-.01em}
/* V1.79: 인사말 문장("OOO님, 오늘도 주님과 함께 걸어요.") 복원 — 예전 히어로
   섹션에 있던 문장을 카드 제목 바로 아래로 옮겼다. 채우는 로직은 예전 그대로
   #home-greeting-prefix를 쓰므로 js는 손대지 않는다. */
.home-master-order-hello{margin:6px 0 0;font-size:13.5px;font-weight:600;line-height:1.45;color:rgba(255,255,255,.95)}
/* V1.79: 날짜와 성월 태그를 한 줄에 붙여 두지 않고 세로 2줄로 분리한다.
   #today-devotion이 .hidden(display:none)일 때는 flex gap도 함께 사라져
   성월이 없는 달에는 날짜 한 줄만 남는다. */
.home-master-order-date{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:10px;font-size:13px;color:rgba(255,255,255,.92)}
.home-master-order-date strong{font-weight:700}
.home-master-order-date .hero-devotion{margin-top:0;color:#fff}
.home-day-more{color:rgba(255,255,255,.8)!important}
.home-master-order-head{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-height:44px;padding:0 14px;border-bottom:1px solid rgba(255,255,255,.18)}
.home-master-order-toggle{min-width:var(--oratio-touch);min-height:var(--oratio-touch);padding:8px;color:#fff;font:inherit;font-size:11px;font-weight:850;opacity:.85}
.home-master-today-list{margin:0!important;padding:0!important;list-style:none}
.home-master-today-list.is-collapsed li:nth-child(n+8){display:none}
.home-master-today-list li{margin:0!important}
.home-master-today-list .hl-row{width:100%;min-height:44px!important;margin:0!important;padding:7px 14px!important;border:0!important;border-bottom:1px solid rgba(255,255,255,.16)!important;border-radius:0!important;background:transparent!important;color:#fff!important;box-shadow:none!important}
.home-master-today-list li:last-child .hl-row{border-bottom:0!important}
.home-master-today-list .hl-row:hover{background:rgba(255,255,255,.08)!important}
.home-master-today-list .num{background:rgba(255,255,255,.16)!important;color:#fff!important}
.home-master-today-list .hl-arrow{color:rgba(255,255,255,.7)!important}
.home-master-today-list .hl-tag{color:#fff!important;background:rgba(255,255,255,.18);padding:2px 8px;border-radius:999px}
.home-master-order .home-textbtn{color:#fff;opacity:.9;padding-left:14px;padding-right:14px}
/* V1.78: 오늘의 기도 중 전례시기/성월에 따라 자동으로 들어온 항목 표시(카드 밖 다른 곳에서 재사용될 경우의 기본값) */
.hl-tag{flex:0 0 auto;margin-right:6px;color:var(--accent,var(--ui-blue));font-size:11px;font-weight:700}

.home-master-actions,.home-prayer-library{margin-top:22px}.home-master-section-head,.home-prayer-library-head{margin:0 2px 10px}.home-master-section-head span,.home-prayer-library-head .home-master-kicker{font-size:9.5px;letter-spacing:.16em;font-weight:900;color:var(--ui-blue)}.home-master-section-head h2,.home-prayer-library-head h2{margin:4px 0 0;font-size:19px;letter-spacing:-.025em}
.home-master-action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:9px}.home-master-action-card{--tone:var(--ui-blue);min-width:0;min-height:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;padding:13px;border:1px solid var(--ui-card-border);border-radius:14px;background:var(--ui-surface);text-align:left;color:var(--ink)}.home-master-action-card.tone-violet{--tone:var(--ui-purple)}.home-master-action-card.tone-green{--tone:var(--ui-green)}.home-master-action-card.tone-gold{--tone:var(--ui-gold)}.home-master-action-card:hover{border-color:color-mix(in srgb,var(--tone) 48%,var(--ui-card-border))}.home-master-action-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--tone) 13%,transparent);color:var(--tone)}.home-master-action-icon img{width:22px;height:22px;display:block;filter:none}.home-master-action-copy{display:flex;flex-direction:column;min-width:0;gap:3px}.home-master-action-copy b{font-size:14px;line-height:1.25}.home-master-action-copy small{font-size:12px;line-height:1.4;color:var(--ink-soft)}

/* 전체 기도 카테고리 — ORATIO의 본질을 홈에서 제거하지 않는다. */
.home-prayer-library{padding:17px;border:1px solid var(--ui-card-border);border-radius:20px;background:var(--ui-surface);box-shadow:0 8px 26px rgba(20,34,60,.035)}
.home-prayer-library-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.home-prayer-library-more{min-height:var(--oratio-touch);padding:8px 4px;color:var(--ui-blue);font-size:11px;font-weight:850;white-space:nowrap}.home-prayer-library-desc{margin:0 2px 14px;color:var(--ink-soft);font-size:13px;line-height:1.55}
.home-categories-body .cat-group-title{margin:14px 2px 7px!important;font-size:11px!important;color:var(--ink-soft)!important}.home-categories-body .cat-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:8px!important}.home-categories-body .cat-card{min-height:88px!important;padding:10px 6px!important;border:1px solid var(--ui-card-border)!important;border-radius:14px!important;background:color-mix(in srgb,var(--ui-surface) 95%,var(--ui-blue) 5%)!important;box-shadow:none!important}.home-categories-body .cc-icon{font-size:22px!important}.home-categories-body .cc-name{font-size:13px!important;line-height:1.25!important}.home-categories-body .qc-sub{font-size:11.5px!important;color:var(--ink-soft)!important}.home-categories-body .cat-card:hover{border-color:color-mix(in srgb,var(--ui-blue) 42%,var(--ui-card-border))!important}

/* SETTINGS — 현재 compact shell은 V2.73 블록을 단일 기준으로 사용. */
.settings-studio[data-settings-panel][hidden]{display:none!important}.settings-studio[role="tabpanel"]{scroll-margin-top:80px;animation:none!important}.settings-studio,.setting-tile{border-color:var(--ui-card-border)!important}.switch{appearance:none;-webkit-appearance:none;border:0;padding:0;flex:0 0 auto}.switch[role="switch"]{min-width:48px;min-height:28px}

/* MORE --------------------------------------------------- */
.more-master-hero{margin-bottom:14px;padding:22px;border:1px solid var(--ui-card-border);border-radius:20px;background:linear-gradient(145deg,color-mix(in srgb,var(--ui-surface) 94%,var(--ui-green) 6%),var(--ui-surface));box-shadow:var(--ui-shadow)}.more-master-hero h2{margin:7px 0 8px;font-size:25px;letter-spacing:-.03em}.more-master-hero p{margin:0;color:var(--ink-soft);font-size:12.5px;line-height:1.65}.more-master-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.more-master-card{min-height:116px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;padding:15px;border:1px solid var(--ui-card-border);border-radius:16px;background:var(--ui-surface);text-align:left}.more-master-card>span{font-size:20px;color:var(--ui-blue)}.more-master-card b{font-size:14px}.more-master-card small{font-size:11px;color:var(--ink-soft);line-height:1.4}.more-master-card-primary{border-color:color-mix(in srgb,var(--ui-green) 50%,var(--ui-card-border));background:linear-gradient(145deg,color-mix(in srgb,var(--ui-surface) 91%,var(--ui-green) 9%),var(--ui-surface))}.more-master-svg{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:color-mix(in srgb,var(--ui-green) 13%,transparent)!important;color:var(--ui-green)!important}.more-master-svg img{width:23px;height:23px}

/* MAIN BOTTOM NAV */
#main-bottom-nav{display:grid;grid-template-columns:repeat(var(--main-nav-count,5),minmax(0,1fr));overflow:hidden;background:color-mix(in srgb,var(--bg-elevated) 96%,transparent);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px)}#main-bottom-nav button{min-width:0;min-height:56px;padding:6px 2px}#main-bottom-nav .bn-icon{font-size:18px;line-height:1}
#legio-bottom-nav .bn-label{white-space:nowrap;font-size:clamp(9px,2.4vw,10.5px)}

/* Responsive by available width */
@media(max-width:760px){
  .screen{padding-left:12px;padding-right:12px}.home-master-hero{min-height:220px;padding:24px 18px 20px;border-radius:21px;background-position:58% center}.home-master-hero h2{max-width:78%;font-size:28px}.home-master-quote{max-width:76%}.home-master-prayer{padding:15px;border-radius:19px}.home-master-prayer-head{display:block}.home-master-count{display:inline-block;margin-top:9px}.home-categories-body .cat-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}.home-categories-body .cat-card{min-height:83px!important;padding:9px 4px!important}.home-categories-body .cc-name{font-size:12.5px!important}
  .settings-orbit-hero{padding:17px 12px!important}.settings-orbit-copy h2{font-size:21px!important;letter-spacing:-.035em}.settings-orbit-copy p{display:none}.settings-orbit-nav{gap:5px!important;margin-top:14px!important}.settings-orbit-link{min-height:63px!important;padding:8px 4px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;gap:5px!important;text-align:center!important}.settings-orbit-symbol{flex-basis:28px!important;width:28px!important;height:28px!important;margin:0 auto}.settings-orbit-link b{font-size:10.5px;letter-spacing:-.035em;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;line-height:1.08!important}.settings-orbit-link small{display:none!important}.more-master-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:430px){
  .topbar{gap:4px}.topbar-actions{gap:2px}.topbar h1{font-size:15px}.topbar-account{gap:2px}.topbar-account-btn{font-size:11.5px;padding:6px 4px}.icon-btn{width:32px;height:32px}.home-master-hero{min-height:205px;background-position:63% center}.home-master-hero h2{max-width:79%;font-size:24px}.home-master-quote{max-width:74%;font-size:11.5px}.home-master-day>div{display:block}.home-master-day .hero-devotion{display:inline-block;margin-top:5px}.home-master-action-card{min-height:98px}.home-master-action-copy small{display:none}.home-master-order-head{padding:0 11px}.home-master-today-list{padding:0 9px!important}.home-prayer-library{padding:13px 10px}.home-prayer-library-desc{font-size:12.5px}.home-categories-body .cat-grid{gap:6px!important}.home-categories-body .cat-card{min-height:78px!important}.home-categories-body .cc-icon{font-size:19px!important}.home-categories-body .cc-name{font-size:12px!important}.home-categories-body .qc-sub{display:none!important}
}
@media(max-width:340px){.screen{padding-left:9px;padding-right:9px}.home-categories-body .cat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.settings-orbit-link b{font-size:10px;letter-spacing:-.045em}.settings-orbit-link{padding:7px 2px!important}#main-bottom-nav button{font-size:9.5px}.more-master-grid{grid-template-columns:1fr}}
@media(min-width:1000px){#screen-home,#screen-settings,#screen-more{padding-left:24px;padding-right:24px}.home-master-prayer{padding:22px}.home-master-today-list .hl-row{min-height:52px!important}.home-categories-body .cat-card{min-height:96px!important}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(prefers-contrast:more){.home-master-hero,.home-master-day,.home-master-prayer,.home-master-order,.home-master-action-card,.home-prayer-library,.settings-orbit-link,.setting-tile,.settings-studio,.more-master-card{border-width:2px!important}}


/* =========================================================
   ORATIO V1.69 — APPROVED HOME SPEC
   첨부 승인 시안을 레이아웃/톤/아이콘/사진의 실제 구현 기준으로 고정.
   ========================================================= */
.home-master-kicker-prayer{display:inline-flex;align-items:center;gap:6px;letter-spacing:.12em}
.home-master-kicker-prayer img{width:18px;height:18px;display:block}
.home-master-section-head-row{display:flex!important;align-items:flex-end;justify-content:space-between;gap:12px}
.home-section-more{min-height:40px;padding:8px;color:var(--ui-blue);font:inherit;font-size:11px;font-weight:850;white-space:nowrap}

/* 시안처럼 홈은 한 화면에서 '오늘 → 순서 → 자주 찾는 → 개인기도 → 전체 카테고리'의 흐름을 가진다. */
.home-personal-register{margin-top:22px;padding:16px 17px;border:1px solid var(--ui-card-border);border-radius:20px;background:var(--ui-surface);box-shadow:0 8px 26px rgba(20,34,60,.035)}
.home-personal-register-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.home-personal-register-head h2{margin:3px 0 2px;font-size:19px;letter-spacing:-.025em}
.home-personal-register-head p{margin:0;color:var(--ink-soft);font-size:10.5px;line-height:1.45}
.home-personal-register-icon{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:13px;background:color-mix(in srgb,var(--ui-green) 13%,transparent)}
.home-personal-register-icon img{width:27px;height:27px;display:block}
.home-personal-register-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.home-personal-register-btn{min-width:0;min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 13px;border:1px solid color-mix(in srgb,var(--ui-card-border) 82%,var(--ui-green) 18%);border-radius:14px;background:color-mix(in srgb,var(--ui-surface) 95%,var(--ui-green) 5%);color:var(--ink);text-align:left}
.home-personal-register-btn:hover{border-color:color-mix(in srgb,var(--ui-green) 48%,var(--ui-card-border));transform:translateY(-1px)}
.home-personal-register-btn span{min-width:0;display:flex;flex-direction:column;gap:4px}.home-personal-register-btn b{font-size:13.5px}.home-personal-register-btn small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-soft);font-size:11.5px}.home-personal-register-btn i{font-style:normal;color:var(--ui-blue);font-size:20px}

/* 승인 시안의 카드 밀도와 모바일 4열 구조 유지. */
.home-master-actions{margin-top:20px}.home-master-action-card{align-items:center;text-align:center}.home-master-action-copy{align-items:center;width:100%}.home-master-action-icon{margin-inline:auto}
.home-prayer-library{margin-top:20px}

/* 주간/야간은 색 반전이 아니라 별도 사진·표면 톤으로 유지한다. */
:root:not([data-theme="dark"]) #screen-home{background:radial-gradient(circle at 70% 4%,rgba(255,220,154,.16),transparent 24%)}
:root[data-theme="dark"] #screen-home{background:radial-gradient(circle at 70% 4%,rgba(45,104,188,.12),transparent 26%)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) #screen-home{background:radial-gradient(circle at 70% 4%,rgba(45,104,188,.12),transparent 26%)}}

@media(max-width:430px){
  .home-personal-register{padding:13px 10px}.home-personal-register-head p{display:none}.home-personal-register-grid{grid-template-columns:1fr 1fr;gap:6px}.home-personal-register-btn{min-height:64px;padding:10px}.home-personal-register-btn b{font-size:13px}.home-personal-register-btn small{font-size:11px}
}
@media(max-width:340px){.home-personal-register-grid{grid-template-columns:1fr}.home-personal-register-btn small{display:block}}


/* =========================================================
   ORATIO V1.70 — TWO-TONE GLOBAL UI + PERSONAL PRAYER IN SETTINGS
   메인만 다른 팔레트를 쓰지 않고 앱 전체가 주간/야간 두 팔레트만 공유한다.
   ========================================================= */
.settings-studio,
.settings-studio-affiliation,
.settings-studio-listen,
.settings-studio-account,
.settings-studio-help { --studio-accent: var(--accent) !important; }
.settings-orbit-hero, .settings-studio, .setting-tile, .more-master-hero, .more-master-card {
  background-color: var(--bg-elevated);
}
.settings-prayer-intentions {
  margin: 0 12px 12px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--bg-elevated);
}
.settings-prayer-intentions-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:10px; }
.settings-prayer-intentions-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.settings-prayer-intention-row {
  min-width:0; min-height:76px; display:flex; align-items:center; gap:11px; padding:12px;
  border:1px solid var(--line); border-radius:14px; background:var(--bg); text-align:left;
}
.settings-prayer-intention-row:hover { border-color:color-mix(in srgb,var(--accent) 48%,var(--line)); }
.settings-prayer-intention-icon {
  flex:0 0 34px; width:34px; height:34px; display:grid; place-items:center; border-radius:11px;
  background:var(--accent-soft);
}
.settings-prayer-intention-icon img { width:22px; height:22px; display:block; }
.settings-prayer-intention-copy { min-width:0; flex:1; }
.settings-prayer-intention-copy b { display:block; font-size:13.5px; color:var(--ink); }
.settings-prayer-intention-copy small { display:block; margin-top:4px; font-size:10.8px; line-height:1.35; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.settings-prayer-intention-arrow { flex:0 0 auto; color:var(--accent); font-size:22px; line-height:1; }
#btn-intention-edit { color:var(--ink); }
@media(max-width:560px){
  .settings-prayer-intentions-list{grid-template-columns:1fr}
}


/* =========================================================
   ORATIO V1.71 — FINAL HOME/SETTINGS IMPLEMENTATION REVIEW
   주간=아이보리+와인 / 야간=딥네이비+블루.
   홈은 기도 목록 중심, 본당/소식은 동일한 카드 문법으로 보조 배치.
   ========================================================= */
:root:not([data-theme="dark"]){
  --home-accent:#8a1f2d;
  --home-accent-soft:#f3e3d9;
}
:root[data-theme="dark"]{
  --home-accent:#70a0ff;
  --home-accent-soft:rgba(91,137,245,.16);
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--home-accent:#70a0ff;--home-accent-soft:rgba(91,137,245,.16)}
}

/* 자연광 사진형 히어로. 사진 안 십자가를 사용하므로 별도 문자 십자가는 숨긴다. */
.home-master-hero{background-position:center 52%;}
.home-master-cross{display:none!important}
:root:not([data-theme="dark"]) .home-master-hero{
  --hero-overlay:linear-gradient(90deg,rgba(255,250,242,.92) 0%,rgba(255,250,242,.68) 48%,rgba(255,250,242,.06) 100%);
}
:root[data-theme="dark"] .home-master-hero{
  --hero-overlay:linear-gradient(90deg,rgba(5,16,35,.90) 0%,rgba(5,20,43,.70) 50%,rgba(5,15,31,.08) 100%);
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .home-master-hero{--hero-overlay:linear-gradient(90deg,rgba(5,16,35,.90) 0%,rgba(5,20,43,.70) 50%,rgba(5,15,31,.08) 100%)}
}

/* 오늘의 기도: 진행바/이어가기 없이 목록 자체가 핵심. 기본 7개 노출. */
.home-master-prayer{padding:16px}
.home-master-order{margin-top:2px}
.home-master-today-list.is-collapsed li:nth-child(n+8){display:none}
.home-master-order-edit[hidden]{display:none!important}
.home-master-order-edit{min-height:46px;background:color-mix(in srgb,var(--ui-surface) 93%,var(--ui-blue) 7%)}
.home-master-order-toggle{color:#fff}
.home-master-count{background:var(--accent-soft);color:var(--accent)}

/* 자주 찾는 기도 / 내 본당: 같은 4열 아이콘 카드 문법. */
.home-master-parish,.home-master-news{margin-top:22px}
.home-master-parish-name{margin:-2px 2px 11px;color:var(--ink-soft);font-size:11px;line-height:1.45}
.home-master-parish-grid .home-master-action-card{min-height:108px}
.home-master-action-card.tone-red{--tone:#b63557}
.home-master-parish-register{grid-column:span 2;align-items:flex-start;text-align:left}
.home-master-news{padding:15px 17px;border:1px solid var(--ui-card-border);border-radius:20px;background:var(--ui-surface);box-shadow:0 8px 26px rgba(20,34,60,.035)}
.home-master-news .home-master-section-head{margin-bottom:7px}
.home-master-news-list .notice-row{min-height:42px!important;padding:8px 2px!important}
.home-master-news-list .notice-title{font-size:14px!important}
.home-master-news-list .notice-date{font-size:11.5px!important}
.home-master-news-empty{padding:14px 2px;color:var(--ink-soft);font-size:12px;text-align:center}

/* 설정 shell — V2.73 compact layout으로 통합. */

/* 개인기도/묵주기도 지향: 보기와 수정 아이콘을 분리. */
.settings-prayer-intentions-list{grid-template-columns:1fr!important;gap:7px!important}
.settings-prayer-intention-row{min-height:74px;padding:0!important;display:grid!important;grid-template-columns:minmax(0,1fr) 48px!important;gap:0!important;overflow:hidden}
.settings-prayer-intention-open{min-width:0;min-height:72px;display:flex;align-items:center;gap:11px;padding:12px;text-align:left}
.settings-prayer-intention-edit{width:48px;height:100%;min-height:72px;border-left:1px solid var(--line);font-size:17px;display:grid;place-items:center;background:color-mix(in srgb,var(--bg-elevated) 92%,var(--accent) 8%)}
.settings-prayer-intention-edit:hover{background:var(--accent-soft)}
.settings-prayer-intention-copy{min-width:0}
.settings-prayer-intention-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 일반 하단 메뉴: 레지오를 독립 핵심 탭으로 표시. */
#main-bottom-nav .bn-icon-legio{width:22px;height:22px;display:grid;place-items:center;margin:0 auto}
#main-bottom-nav .bn-icon-legio img{width:21px;height:21px;display:block}
#main-bottom-nav button.active{color:var(--accent)}

@media(max-width:760px){
  .home-master-parish-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  .home-master-parish-grid .home-master-action-card{min-height:96px}
  .home-master-news{padding:13px 10px}
  .settings-orbit-link{min-height:100px!important;padding:12px!important;grid-template-columns:34px 1fr!important}
  .settings-orbit-symbol{width:32px!important;height:32px!important;flex-basis:32px!important}
}
@media(max-width:430px){
  .home-master-prayer-head{display:flex!important;align-items:flex-start}.home-master-count{margin-top:0!important}
  .home-master-parish-grid .home-master-action-card{min-height:91px!important}
  .home-master-parish-grid .home-master-action-copy small{display:none!important}
  .settings-orbit-copy p{display:block!important;font-size:11px!important;line-height:1.45!important}
  .settings-orbit-nav{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
  .settings-orbit-link{min-height:92px!important;padding:10px!important;display:grid!important;grid-template-columns:30px 1fr!important;gap:8px!important;text-align:left!important}
  .settings-orbit-symbol{width:29px!important;height:29px!important;flex-basis:29px!important}
  .settings-orbit-link b{font-size:12px!important}.settings-orbit-link small{font-size:9.4px!important;line-height:1.3!important}
}
@media(max-width:340px){
  .settings-orbit-nav{grid-template-columns:1fr!important}
  .home-master-parish-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .home-master-parish-register{grid-column:span 2}
}

/* V1.76 — home parish: compact icon-only shortcuts, parish home first */
.home-master-parish-grid.is-compact{grid-template-columns:repeat(4,minmax(76px,112px));justify-content:start;gap:10px}
.home-master-parish-grid.is-compact .home-master-action-card{min-height:88px;align-items:center;justify-content:center;text-align:center;padding:10px 6px;gap:7px}
.home-master-parish-grid.is-compact .home-master-action-icon{width:34px;height:34px}
.home-master-parish-grid.is-compact .home-master-action-icon img{width:23px;height:23px}
.home-master-parish-grid.is-compact .home-master-action-copy{align-items:center}
.home-master-parish-grid.is-compact .home-master-action-copy b{font-size:12.5px;white-space:nowrap}
.home-master-parish-grid.is-compact .home-master-action-copy small{display:none!important}
@media(max-width:480px){.home-master-parish-grid.is-compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.home-master-parish-grid.is-compact .home-master-action-card{min-height:82px;padding:9px 3px}.home-master-parish-grid.is-compact .home-master-action-copy b{font-size:12px}}
@media(max-width:340px){.home-master-parish-grid.is-compact{grid-template-columns:repeat(4,minmax(0,1fr))}.home-master-parish-grid.is-compact .home-master-action-copy b{font-size:11.5px}}

/* =============================================================
   V1.78 — 심플 디자인 (홈 + 본당 화면 공통)
   그리드 없음(자주 찾는 기도의 auto-fit 제외) · 카드 중첩 없음 ·
   그림자 없음 · 영문 대문자 라벨 없음. 목록은 위아래 한 줄 선으로만
   구분한다. 오늘의 기도(.hl-row)와 같은 문법을 홈 나머지 섹션(.home-row)
   과 본당 화면(.p-row) 전체가 함께 쓴다.
   ============================================================= */

/* 홈: 인사말 (예전 히어로/사진/그라데이션/인용구 대체) */
.home-hello{padding:4px 2px 22px;border-bottom:1px solid var(--line);margin-bottom:22px}
.home-hello h2{margin:0;font-size:23px;font-weight:800;letter-spacing:-.02em;line-height:1.35;color:var(--ink)}
.home-hello p{display:flex;align-items:center;gap:8px;margin:8px 0 0;color:var(--ink-soft);font-size:13px}
.home-day-more{border:0;background:none;color:var(--ink-soft);font-size:15px;min-width:var(--oratio-touch);min-height:32px;margin-left:auto}

/* 홈: 섹션 공통 머리 — PRAYER/FAVORITES/NEWS 같은 영문 라벨 없이 제목만 */
.home-section{margin-bottom:26px}
.home-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.home-head h2{margin:0;font-size:13px;font-weight:700;color:var(--accent,var(--ui-blue))}
.home-head-n{margin-left:auto;color:var(--ink-soft);font-size:12px;font-variant-numeric:tabular-nums}

/* 홈: 목록 행(내 본당 한 줄 · 전체 기도 6줄) — 오늘의 기도(.hl-row)와 같은 문법 */
.rows{border-top:1px solid var(--line)}
.home-row{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:10px 3px;
  border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);text-align:left;font:inherit}
.home-row:last-child{border-bottom:0}
.home-row .hl-title{flex:1;min-width:0;font-size:15px}
.home-row .hl-title small{display:block;margin-top:2px;color:var(--ink-soft);font-size:12px;font-weight:400}
.home-row .hl-arrow{flex:0 0 auto;color:var(--ink-soft);font-size:16px}
.home-textbtn[hidden]{display:none}
.home-textbtn{display:block;width:100%;min-height:40px;border:0;background:none;
  color:var(--accent,var(--ui-blue));font-size:13px;font-weight:700;text-align:left;padding:8px 3px}
.home-row .home-row-icon{--tone:var(--ui-blue);flex:0 0 auto;width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:color-mix(in srgb,var(--tone) 13%,transparent);color:var(--tone)}
.home-row .home-row-icon img{width:20px;height:20px;display:block;filter:none}
.home-row.tone-red .home-row-icon{--tone:#b63557}
.home-master-parish-name{padding:2px 3px 6px;color:var(--ink-soft);font-size:12.5px}

/* V1.78: 전체 기도 — 목록형/카드형 중 카드형으로 확정. auto-fit이라
   폭에 따라 3열↔2열이 자연스럽게 바뀐다(고정 열 수 없음). */
.home-cat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(max(110px,calc((100% - 27px)/4)),1fr));gap:9px}
.home-cat-grid button{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:5px;padding:15px 8px;border:1px solid var(--ui-card-border);border-radius:14px;
  background:var(--ui-surface);color:var(--ink);text-align:center;font:inherit}
.home-cat-grid button b{font-size:13.5px;font-weight:600;line-height:1.3}
.home-cat-grid button span{color:var(--ink-soft);font-size:11.5px}

/* =============================================================
   본당 화면 — 소식/주보/일정/안내를 한 화면에 합친 통합 목록 문법.
   홈의 .home-row와 같은 원칙(선 하나로만 구분, 카드 없음)을 쓰되
   본당 쪽은 눌러서 그 자리에 펼치는 패널(.p-panel)이 있어 클래스를
   분리했다(p-접두어).
   ============================================================= */
.p-top{padding:2px 3px 18px}
.p-hero-image{width:100%;max-height:160px;object-fit:cover;border-radius:14px;margin-bottom:10px}
.p-status{color:var(--ink-soft);font-size:12.5px}
.p-block{margin-bottom:30px}
.p-block>h3{margin:0 0 6px;font-size:13px;font-weight:700;color:var(--accent,var(--ui-blue))}
.p-item{border-bottom:1px solid var(--line)}
.p-item:last-child{border-bottom:0}
.p-row{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:10px 3px;
  border:0;background:none;color:var(--ink);text-align:left;font:inherit}
.p-row .p-t{flex:1;min-width:0;font-size:15px}
.p-row .p-sub{display:block;margin-top:2px;color:var(--ink-soft);font-size:12px;font-weight:400}
.p-row .p-go{flex:0 0 14px;color:var(--ink-soft);font-size:16px;text-align:right}
.p-row .p-pin{flex:0 0 auto;font-size:12px}
.p-row .p-cat{flex:0 0 auto;color:var(--accent,var(--ui-blue));font-size:11.5px;font-weight:700}
.p-row .p-date{flex:0 0 auto;color:var(--ink-soft);font-size:11.5px;font-variant-numeric:tabular-nums}
.p-panel{padding:0 3px 14px}
.p-panel[hidden]{display:none}
.p-body{font-size:14px;line-height:1.7;white-space:pre-line}
.p-gallery{display:flex;gap:8px;overflow-x:auto;margin-top:10px}
.p-gallery img{height:96px;border-radius:10px}
.p-empty{margin:0;padding:10px 3px;color:var(--ink-soft);font-size:13px}
.p-more{display:block;width:100%;min-height:40px;border:0;background:none;
  color:var(--accent,var(--ui-blue));font-size:13px;font-weight:700;text-align:left;padding:8px 3px}
.p-filters{display:flex;flex-wrap:wrap;gap:6px;padding:2px 3px 12px}
.p-filters[hidden]{display:none}
.p-filter{border:1px solid var(--line);border-radius:999px;background:none;color:var(--ink-soft);
  font-size:12px;padding:6px 12px;min-height:32px}
.p-filter[aria-pressed="true"]{border-color:var(--accent,var(--ui-blue));color:var(--accent,var(--ui-blue));font-weight:700}
.p-mass{display:grid;grid-template-columns:40px 1fr;gap:0 10px;font-size:14px;padding:2px 3px}
.p-mass>b{padding:7px 0;font-weight:700;border-bottom:1px solid var(--line)}
.p-mass>span{padding:7px 0;border-bottom:1px solid var(--line);color:var(--ink-soft)}
.p-sub-row{display:flex;gap:8px;align-items:baseline;padding:8px 3px;border-bottom:1px solid var(--line);font-size:14px}
.p-sub-row:last-child{border-bottom:0}
.p-sub-row em{flex:0 0 auto;font-style:normal;color:var(--ink-soft);font-size:12px}
.p-note{color:var(--ink-soft);font-size:12px}

/* V1.78: 본당 기도(특별/교구/본당) 섹션 머리 — ①②③ 번호 대신 왼쪽 정렬
   라벨 + 설명 한 줄. .section-title은 다른 21곳에서도 쓰이므로 여기서는
   건드리지 않고, 전용 클래스(.p-prayer-head)를 새로 만들어 이 3곳에만 적용한다. */
.p-prayer-head{margin:22px 2px 8px}
.p-prayer-head:first-child{margin-top:2px}
.p-prayer-head b{display:block;font-size:13px;font-weight:700;color:var(--accent,var(--ui-blue))}
.p-prayer-head span{display:block;margin-top:2px;font-size:11.5px;color:var(--ink-soft)}

/* ORATIO 2.73 — MY 첫 화면 압축 + 소속 요약.
   기존 큰 2열 카드 느낌을 줄이고, '내 상태'를 먼저 보이게 한다. */
.settings-membership-summary{display:flex;align-items:center;gap:8px;min-height:38px;margin:2px 2px 8px;padding:8px 11px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--bg-elevated) 94%,var(--accent) 6%);font-size:12px;color:var(--ink-soft)}
.settings-membership-summary-label{flex:0 0 auto;padding:3px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:10.5px;font-weight:800}
#settings-membership-summary-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650;color:var(--ink)}
.settings-orbit-copy{padding-bottom:3px!important}.settings-orbit-copy h2{font-size:20px!important;margin:3px 0!important}.settings-orbit-copy p{display:none!important}
.settings-orbit-nav{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;margin-top:8px!important}
.settings-orbit-link{min-height:58px!important;display:grid!important;grid-template-columns:28px 1fr!important;gap:8px!important;padding:8px 10px!important;border-radius:12px!important;box-shadow:none!important}
.settings-orbit-symbol{width:26px!important;height:26px!important;flex-basis:26px!important;border-radius:8px!important;font-size:13px!important}
.settings-orbit-link b{font-size:12px!important;line-height:1.2!important;white-space:nowrap!important}.settings-orbit-link small{display:none!important}
.settings-studio{margin-top:8px!important}.settings-studio-head{padding:10px 12px!important;gap:9px!important}.settings-studio-icon{width:30px!important;height:30px!important;min-width:30px!important;font-size:14px!important}.settings-studio-title{font-size:14px!important}.settings-studio-desc{font-size:10.5px!important;line-height:1.4!important}.settings-studio-note{font-size:9.5px!important}
.settings-studio-help .settings-studio-grid-2{grid-template-columns:1fr!important;gap:8px!important}.settings-studio-help .setting-tile-link{min-height:64px!important;padding:10px 12px!important;border-radius:11px!important}.settings-studio-help .setting-tile-link .sr-desc{display:block!important;font-size:11.5px;line-height:1.4}.settings-studio-help .setting-tile-arrow{font-size:13px!important}
.settings-studio-help .settings-studio-head{padding:15px 18px!important}
.settings-studio-help .settings-studio-title{margin:0;font-size:16px!important}
.settings-studio-help .settings-studio-desc{margin:4px 0 0!important;font-size:12px!important}
.settings-studio-help .help-hub-guide{margin:0;padding:12px 18px 0;line-height:1.5}
@media(min-width:760px){.settings-orbit-nav{grid-template-columns:repeat(5,minmax(0,1fr))!important}.settings-orbit-link{grid-template-columns:24px 1fr!important;padding:8px!important}.settings-orbit-symbol{width:24px!important;height:24px!important;flex-basis:24px!important}.settings-orbit-link b{font-size:11.5px!important}}
@media(max-width:430px){.settings-membership-summary{font-size:11px;padding:7px 9px}.settings-orbit-nav{gap:5px!important}.settings-orbit-link{min-height:52px!important;grid-template-columns:24px 1fr!important;padding:7px 8px!important}.settings-orbit-symbol{width:23px!important;height:23px!important;flex-basis:23px!important}.settings-orbit-link b{font-size:11px!important}}
/* ORATIO 2.73 — MY 모바일 첫 화면은 4개 핵심 설정만 작은 타일로 보이고
   관리·도움말은 별도의 얇은 진입행으로 내려 복잡도를 줄인다. 기능/탭 자체는 유지. */
@media(max-width:759px){
  .settings-orbit-link[data-settings-tab="help"]{grid-column:1/-1!important;min-height:40px!important;grid-template-columns:22px 1fr!important;padding:6px 9px!important;background:transparent!important;border-style:dashed!important}
  .settings-orbit-link[data-settings-tab="help"] .settings-orbit-symbol{width:20px!important;height:20px!important;flex-basis:20px!important;font-size:11px!important;background:transparent!important}
  .settings-orbit-link[data-settings-tab="help"] b{font-size:11px!important;color:var(--ink-soft)!important}
}


/* =========================================================
   ORATIO V2.74 — MY 소속·활동 compact layout
   2026-09-14: 기능은 유지하고, 데스크톱에서 거대한 2열 카드와 빈 공간이
   생기던 레이아웃만 정보행 중심으로 압축한다.
   ========================================================= */
.settings-studio-affiliation { border-radius:16px; margin-bottom:12px; }
.settings-studio-affiliation .settings-studio-head { padding:11px 13px; gap:9px; }
.settings-studio-affiliation .settings-studio-icon {
  flex-basis:28px; width:28px; height:28px; border-radius:9px; font-size:14px;
  box-shadow:none;
}
.settings-studio-affiliation .settings-studio-title { font-size:14.5px; }
.settings-studio-affiliation .settings-studio-desc { margin-top:1px; font-size:11.5px; line-height:1.35; }
.settings-studio-affiliation .settings-studio-note { display:none; }
.settings-studio-grid-affiliation { grid-template-columns:1fr; gap:6px; padding:8px 10px 10px; }
.settings-studio-affiliation .setting-tile,
.settings-studio-affiliation .setting-tile-wide,
.settings-studio-affiliation .setting-tile-action,
.settings-studio-affiliation .setting-tile-stack {
  grid-column:auto; min-height:0; padding:10px 11px; gap:7px; border-radius:11px;
}
.settings-studio-affiliation .setting-tile-action { flex-direction:row; align-items:center; }
.settings-studio-affiliation .setting-tile .sr-label { font-size:13px; }
.settings-studio-affiliation .setting-tile .sr-desc { margin-top:2px; font-size:11px; line-height:1.35; }
.settings-studio-affiliation .settings-chip-list { gap:5px; }
.settings-studio-affiliation .chip-toggle { min-height:34px; padding:6px 10px; }
.settings-studio-affiliation .settings-inline-status { font-size:11.5px; }
.settings-studio-affiliation .settings-strong { margin-bottom:5px; font-size:12.5px; }
.settings-studio-affiliation .settings-action { min-width:64px; padding:7px 10px!important; }
@media (max-width: 640px) {
  .settings-studio-affiliation .settings-studio-head { align-items:flex-start; }
  .settings-studio-affiliation .setting-tile-action { align-items:flex-start; }
}


/* ===== V2.81 홈 폰트 가독성 개선 — 레이아웃/색상 유지, 글자 크기만 보정 ===== */
/* ===== V2.76 홈 '오늘의 기도' 가독성 복원 ===== */
.home-master-order{margin-top:0;border-radius:17px;box-shadow:0 7px 22px rgba(70,20,30,.10)}
.home-master-order-top{padding:13px 14px 9px}
.home-master-order-kicker{font-size:15px}
.home-master-order-hello{margin-top:3px;font-size:14px;line-height:1.4;opacity:.94}
.home-master-order-date{flex-direction:row;align-items:center;flex-wrap:wrap;gap:6px;margin-top:6px;font-size:13px}
.home-master-order-date .hero-devotion{padding:3px 7px;font-size:11.5px}
.home-master-order-head{display:none!important}
.home-master-today-list,.home-master-today-list.is-collapsed{padding:0!important}
.home-master-today-list.is-collapsed li:nth-child(n+8){display:list-item!important}
.home-master-today-list .hl-row{min-height:38px!important;padding:5px 12px!important}
.home-master-today-list .num{width:25px!important;height:25px!important;min-width:25px!important;font-size:12px!important}
.home-master-today-list .hl-title{font-size:14.5px!important;line-height:1.4!important}
.home-master-today-list .hl-tag{padding:1px 6px;font-size:11.5px!important}
.home-master-today-list .hl-arrow{font-size:17px!important}
.home-master-order .home-textbtn{min-height:38px!important;margin:0!important;padding:7px 12px!important;border-top:1px solid rgba(255,255,255,.15);font-size:12px!important;text-align:right}
@media(max-width:430px){
  .home-master-order-top{padding:11px 12px 8px}.home-master-order-kicker{font-size:14px}.home-master-order-hello{font-size:13.5px}.home-master-order-date{font-size:12.5px;margin-top:5px}.home-master-today-list{padding:0!important}.home-master-today-list .hl-row{min-height:38px!important;padding:5px 10px!important}.home-master-today-list .hl-title{font-size:14px!important}
}
@media(min-width:1000px){.home-master-today-list .hl-row{min-height:40px!important}}
