/* ArchiPM 공유 플랫폼 크롬(appshell) — 상시 사이드바 + 브레드크럼 + 다크/라이트
   초기버전(assets/archipm-ds) 구조 강점을 BMW-M 최근버전에 이식. tokens.css 변수만 사용. */
:root{ --nav-w:260px; --topbar-h:56px; --content-max:1040px; }

.app{display:grid;grid-template-columns:var(--nav-w) 1fr;min-height:100vh}
.app-main{min-width:0;display:flex;flex-direction:column}

/* ── 좌측 상시 사이드바 ── */
.appnav{background:var(--surface);border-right:1px solid var(--border);padding:16px 12px;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:60}
.appnav .nav-brand{display:flex;align-items:center;gap:9px;padding:2px 8px 14px;text-decoration:none;color:var(--fg)}
.appnav .nav-brand .logo{width:30px;height:30px;border-radius:6px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-weight:800;background:var(--blue-bmw);color:#fff}
.appnav .nav-brand .bt{font-size:15px;font-weight:800;letter-spacing:-.01em}
.appnav .nav-brand .bs{font-size:10px;color:var(--fg-dim);letter-spacing:.12em;text-transform:uppercase;font-weight:700}
.appnav .nav-proj{display:block;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:6px;text-decoration:none}
.appnav .nav-proj .pl{font-size:10px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.08em}
.appnav .nav-proj .pn{font-size:13px;font-weight:700;color:var(--fg);margin-top:2px}
.nav-group{margin-top:14px}
.nav-group .gl{font-size:10px;font-weight:700;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.1em;padding:0 10px 6px;display:flex;justify-content:space-between}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:4px;color:var(--fg-muted);text-decoration:none;font-size:13px;position:relative}
.nav-item:hover{background:rgba(127,127,127,.08);color:var(--fg)}
.nav-item.active{background:rgba(28,105,212,.14);color:var(--fg);font-weight:700}
.nav-item.active::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:2px;background:var(--blue-bmw)}
.nav-item .nc{width:24px;height:20px;border-radius:4px;flex:none;display:flex;align-items:center;justify-content:center;font-family:var(--disp);font-size:10.5px;font-weight:800;background:var(--surface-2);color:var(--fg-dim)}
.nav-item.active .nc{background:var(--blue-bmw);color:#fff}
.nav-item .nt{flex:1;line-height:1.3}
.nav-item .ndot{width:6px;height:6px;border-radius:999px;flex:none}
.nav-item .ndot.done{background:var(--ok)} .nav-item .ndot.now{background:var(--m-light)}

/* ── 상단바 · 브레드크럼 · 토글 ── */
.apptop{height:var(--topbar-h);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);display:flex;align-items:center;gap:10px;padding:0 20px;position:sticky;top:0;z-index:50}
.crumb{font-size:13px;color:var(--fg-muted);display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.crumb b{color:var(--fg);font-weight:700}
.crumb .sep{color:var(--border-2)}
.apptop .spacer{flex:1}
.tb-btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:4px;border:1px solid var(--border-2);background:none;color:var(--fg-muted);font-size:12.5px;font-family:var(--sans);cursor:pointer;white-space:nowrap}
.tb-btn:hover{border-color:var(--blue);color:var(--fg)}
.tb-btn.on{border-color:var(--blue);background:rgba(28,105,212,.12);color:var(--fg)}
.nav-toggle{display:none}

/* ── 본문 + 상세 탭 ── */
.app-content{padding:22px 26px 90px;max-width:var(--content-max);width:100%;margin:0 auto;flex:1}
.screen-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:20px;overflow-x:auto}
.stab{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border:none;border-bottom:2px solid transparent;background:none;color:var(--fg-muted);font-size:13.5px;font-family:var(--sans);cursor:pointer;white-space:nowrap;margin-bottom:-1px}
.stab:hover{color:var(--fg)}
.stab.active{color:var(--fg);border-bottom-color:var(--blue-bmw);font-weight:700}
.stab .tc{width:19px;height:19px;border-radius:999px;background:var(--surface-2);color:var(--fg-dim);display:flex;align-items:center;justify-content:center;font-size:11px;font-family:var(--disp);font-weight:800}
.stab.active .tc{background:var(--blue-bmw);color:#fff}
.screen{display:none} .screen.active{display:block}

/* 시니어 모드(큰글씨) — 상단바 토글 */
[data-senior="on"] .app-content{font-size:20px;line-height:1.7}
[data-senior="on"] .nav-item,[data-senior="on"] .stab{font-size:16px}
/* 시니어: 터치타깃 ≥48px·큰 버튼·여백 확대 (UC1 §8 접근성) */
[data-senior="on"] .btn,[data-senior="on"] .tb-btn,[data-senior="on"] .stab{min-height:48px}
[data-senior="on"] .btn{font-size:16px;padding:13px 24px}
[data-senior="on"] .nav-item{padding:12px 10px}
[data-senior="on"] .card{padding:20px}
[data-senior="on"] .kv{font-size:16px;padding:11px 0}
[data-senior="on"] .apptop{height:64px}

/* 반응형: 사이드바 오프캔버스 */
.nav-scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:55}
.nav-scrim.open{display:block}
/* 순차 관통 흐름바 */
.screen-flow-nav{display:flex;align-items:center;gap:14px;margin-top:28px;padding-top:18px;border-top:1px solid var(--border)}
.screen-flow-nav .sf-pos{color:var(--fg-dim);font-size:12.5px;margin-left:auto}
.screen-flow-nav #sfNext{margin-left:8px}
/* 비차단 토스트(alert 대체) */
.apm-toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,20px);z-index:200;background:var(--surface-2);color:var(--fg);border:1px solid var(--border-2);border-left:3px solid var(--blue-bmw);border-radius:6px;padding:12px 18px;font-size:14px;box-shadow:0 12px 40px rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw}
.apm-toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .appnav{position:fixed;left:0;top:0;width:var(--nav-w);transform:translateX(-100%);transition:transform .2s}
  .appnav.open{transform:none;box-shadow:0 0 40px rgba(0,0,0,.5)}
  .nav-toggle{display:inline-flex}
}

/* ═══════════════════════════════════════════════════════════════
   통일 레이아웃 규칙 (전 페이지 공통 참조 · SoT) — 문서: v3/USER-TEST/_UI일관성_규칙.md
   ① 콘텐츠 폭: .app-content(--content-max:1040px)가 단일 권위. 페이지별 wrapper는
      폭을 지정하지 않고 .app-content 폭을 그대로 사용(이중 제약 제거) → 전 페이지 동일 폭·중앙정렬.
   ② 반응형: ≤900px 사이드바 드로어(위) · ≤640px 콘텐츠 패딩 축소·다열 그리드 단열화·탭 가로스크롤.
   ═══════════════════════════════════════════════════════════════ */
.app-content{overflow-wrap:anywhere}
/* 페이지 wrapper 폭 통일 — .app 하위 선택으로 특이도(0,2,0) 확보해 페이지별 인라인 .ob/.dg(0,1,0)을 로드순서 무관하게 무력화 */
.app .app-content>*{max-width:100%!important;margin-left:0!important;margin-right:0!important}
.app-content img,.app-content table,.app-content pre{max-width:100%}
.app-content table{display:block;overflow-x:auto}                /* 표 가로 넘침 방지(모바일) */
@media(max-width:640px){
  .app-content{padding:16px 14px 72px}
  .app-content div[style*="grid-template-columns"]{grid-template-columns:1fr!important}  /* 다열 그리드 → 1열 */
  .screen-tabs,.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}   /* 탭 가로스크롤 */
  .apptop .crumb{max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
