/* ═══ C10 Aurora Pane 토큰 (쇼케이스 확정값과 동일) ═══ */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#f2f3f8; --surface:rgba(255,255,255,.85); --surface-2:rgba(255,255,255,.96); --line:rgba(90,90,140,.16);
  --text:#2b2b40; --text-muted:#5d5d7a; --text-faint:#6b6b87;
  --accent:#7857e8; --accent-strong:#5c3bd4; --ok:#237a5c; --lockc:#a8801f; --danger:#c2453a; --aqua:#4aa8d8;
  --font-body:'Pretendard Variable',Pretendard,sans-serif;
  --radius:14px; --radius-lg:20px;
  --blur:blur(16px); --shadow:0 8px 28px rgba(80,70,160,.10);
}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:14px;line-height:1.65;overflow-x:hidden}
.aurora{position:fixed;inset:0;pointer-events:none;z-index:0}
.aurora i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5}
.aurora i:nth-child(1){width:330px;height:250px;left:-60px;top:-90px;background:#b9a5f5}
.aurora i:nth-child(2){width:460px;height:340px;right:-60px;top:-40px;background:#a5d8f0}
.aurora i:nth-child(3){width:560px;height:400px;left:30%;bottom:-180px;background:#f5c9d8}

.app{position:relative;z-index:1;display:grid;grid-template-columns:236px 1fr;min-height:100vh}
/* ── 사이드 내비 (확장 레이아웃의 핵심) ── */
.side{padding:24px 14px 18px;border-right:1px solid var(--line);display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh}
.side .logo{font-size:18px;font-weight:800;letter-spacing:-0.02em;padding:0 10px;margin-bottom:22px}
.side .nav{display:flex;flex-direction:column;gap:4px}
.side .nav button{font-family:var(--font-body);text-align:left;font-size:13.5px;font-weight:600;color:var(--text-muted);
  background:none;border:none;border-radius:10px;padding:9px 12px;cursor:pointer;display:flex;gap:10px;align-items:center}
.side .nav button .ic{width:18px;text-align:center}
.side .nav button:hover{background:var(--surface)}
.side .nav button.on{background:var(--surface-2);color:var(--accent-strong);box-shadow:var(--shadow)}
.side .nav button .b{margin-left:auto;font-size:10.5px;background:rgba(120,87,232,.12);color:var(--accent-strong);border-radius:99px;padding:1px 8px}
.side .hint{margin-top:26px;padding:12px;border-top:1px solid var(--line);font-size:11.5px;color:var(--text-faint);line-height:1.6}

.main{padding:22px 28px 48px}
.topbar{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.topbar h1{font-size:17px;font-weight:800;letter-spacing:-0.01em}
.topbar .wk{font-size:12px;color:var(--text-muted);background:var(--surface);backdrop-filter:var(--blur);
  border:1px solid var(--line);border-radius:99px;padding:4px 14px}
.topbar .avs{margin-left:auto;display:flex}
.av{width:26px;height:26px;border-radius:50%;background:var(--surface-2);border:1px solid var(--line);
  display:inline-flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:800;color:var(--text-muted);margin-left:-7px}
.av.hm{background:linear-gradient(135deg,var(--accent),var(--aqua));color:#f5f3ff;border:none}

.view{display:none}.view.on{display:block}
.pane{background:var(--surface);backdrop-filter:var(--blur);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow);padding:18px 20px}
.pane h3{font-size:13px;font-weight:700;color:var(--text-muted);margin-bottom:10px;display:flex;gap:10px;align-items:center}
.bdg{font-size:10.5px;font-weight:700;background:rgba(120,87,232,.12);color:var(--accent-strong);border-radius:99px;padding:1px 10px}
.pil{font-size:10.5px;font-weight:700;border-radius:99px;padding:1px 9px;background:rgba(120,87,232,.1);color:var(--accent-strong)}
.pil.p0{background:var(--accent);color:#f5f3ff}
.pil.lock{background:rgba(168,128,31,.13);color:var(--lockc)}
.pil.ok{background:rgba(35,122,92,.12);color:var(--ok)}
.pil.warn{background:rgba(168,128,31,.16);color:var(--lockc)}
/* 접근 라벨 — 보유자만 보는 항목 표시. 토글(관리 탭)은 off 상태를 흐리게 */
.pil.lab{background:rgba(194,69,58,.1);color:var(--danger)}
.pil.lbtgl{cursor:pointer;border:1px solid transparent;opacity:.45}
.pil.lbtgl.on{opacity:1;border-color:rgba(194,69,58,.35)}
/* 실시간 대응 업무 (⚡) */
.pil.react{background:rgba(230,140,20,.14);color:#b06508}
/* [개발] 탭 — 푸시 타임라인 */
.ghrow{border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:var(--surface-2)}
.ghhead{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;flex-wrap:wrap}
.ghhead .ghline{flex:1;min-width:180px;font-size:12.5px;font-weight:600}
.ghhead .meta2{font-size:11px;color:var(--text-faint);white-space:nowrap}
.ghcaret{color:var(--text-faint)}
.ghbody{border-top:1px solid var(--line);padding:10px 14px;font-size:12.5px}
.ghsum{background:rgba(120,87,232,.06);border-radius:9px;padding:8px 12px;margin-bottom:10px;line-height:1.6}
.ghcommit{padding:7px 0;border-bottom:1px dashed var(--line)}
.ghcommit:last-of-type{border-bottom:none}
.ghcommit .tb{font-family:ui-monospace,monospace;font-size:10.5px;background:rgba(120,87,232,.08);border-radius:5px;padding:1px 6px}
.ghfiles{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:5px}
.ghfiles span{font-family:ui-monospace,monospace;font-size:10.5px;color:var(--text-faint)}
/* 온보딩 코치마크 투어 — 스포트라이트(hole) + 말풍선 */
.tourwrap{position:fixed;inset:0;z-index:80;pointer-events:none}
.tourwrap.center{background:rgba(23,20,45,.55);pointer-events:auto}
.tourhole{position:fixed;border-radius:14px;box-shadow:0 0 0 9999px rgba(23,20,45,.55),0 0 0 3px var(--accent);transition:all .25s ease;pointer-events:auto}
.tourtip{position:fixed;background:var(--surface);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 18px 48px rgba(60,50,140,.28);padding:16px 18px;max-width:340px;pointer-events:auto}
.tourtip h4{font-size:14px;font-weight:800;margin-bottom:6px}
.tourtip p{font-size:12.5px;line-height:1.6;color:var(--text-muted)}
.tourrow{display:flex;align-items:center;gap:8px;margin-top:12px}
.tourdots{display:flex;gap:5px;margin-right:auto}
.tourdots i{width:6px;height:6px;border-radius:50%;background:var(--line);display:block}
.tourdots i.on{background:var(--accent)}
/* 근무 상태 — 아바타 옆 상태 점 + 내 상태 칩 + 전환 메뉴 */
#mystatus{cursor:pointer;border:1px solid var(--line);background:var(--surface);padding:3px 10px;font-size:11.5px}
.pdot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:-1px;border:2px solid var(--surface)}
.p-on{background:var(--ok);box-shadow:0 0 0 1.5px rgba(35,122,92,.45),0 0 7px rgba(35,122,92,.6)}
.p-mt{background:var(--danger);box-shadow:0 0 0 1.5px rgba(194,69,58,.45),0 0 7px rgba(194,69,58,.55)}
.p-aw{background:#e0a92c;box-shadow:0 0 0 1.5px rgba(224,169,44,.45)}
.p-off{background:#b9b8c9}
/* 오프라인 멤버는 칩 전체를 흐리게 — 지금 대화 가능한 사람이 한눈에 갈린다 */
.av-chip.is-off{opacity:.5}
.pmenu{position:fixed;z-index:70;background:var(--surface);border:1px solid var(--line);border-radius:12px;
  box-shadow:0 14px 40px rgba(60,50,140,.22);padding:6px;min-width:210px}
.pmenu>button,.pmenu .pmeet{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;
  font-size:12.5px;padding:8px 10px;border-radius:8px;cursor:pointer}
.pmenu>button:hover{background:var(--surface-2)}
.pmenu small{color:var(--text-faint);margin-left:auto}
.pmenu .pmeet{cursor:default}
.pmenu .pmeet span{flex:none}
.pmenu .pmeet button{font-size:11px;border:1px solid var(--line);background:var(--surface);border-radius:99px;
  padding:2px 8px;cursor:pointer;margin-left:2px}
.pmenu .pmeet button:hover{background:var(--surface-2)}
/* 소급 확인 배너 — 자동 마감된 근무 세션 확정 */
.confirmbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:9px 14px;
  background:rgba(168,128,31,.09);border:1px solid rgba(168,128,31,.3);border-radius:12px;font-size:12.5px}
.confirmbar b{color:var(--lockc)}
.confirmbar.startbar{background:rgba(35,122,92,.08);border-color:rgba(35,122,92,.3)}
.confirmbar.startbar b{color:var(--ok)}
.confirmbar.notibar{background:rgba(120,87,232,.07);border-color:rgba(120,87,232,.3)}
.confirmbar.notibar b{color:var(--accent-strong)}
/* 회의 Q&A — 질문/답 카드 */
.qa-card{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.qa-card.nf{opacity:.75}
.qa-card .qa-q{font-size:12px;font-weight:700;color:var(--accent-strong);margin-bottom:6px}
.qa-card .qa-a{font-size:13px;line-height:1.65;margin-bottom:8px;white-space:pre-wrap}
/* 회의록 안건 장 (새 양식) — 책처럼 목차 → 안건별 상위→하위 흐름 */
.agenda{margin:12px 0 4px}
.agenda .ag-toc,.agenda .ag-h{font-size:12px;font-weight:800;color:var(--accent-strong);letter-spacing:.02em;margin:14px 0 6px}
.agenda .ag-toc{color:var(--text-faint)}
.agenda .ag-p{font-size:13px;line-height:1.7;margin:4px 0;color:var(--text-muted)}
.agenda .ag-ul{margin:4px 0 6px 18px}
.agenda .ag-ul li{font-size:12.5px;line-height:1.7;color:var(--text-muted)}
.agenda .ag-dec{font-size:12.5px;margin:6px 0;padding:7px 11px;border-left:3px solid var(--ok);background:rgba(35,122,92,.07);border-radius:0 8px 8px 0}
.agenda .ag-act{font-size:12.5px;margin:6px 0;padding:7px 11px;border-left:3px solid var(--accent);background:rgba(120,87,232,.06);border-radius:0 8px 8px 0}
.ag-divider{font-size:10.5px;font-weight:700;color:var(--text-faint);letter-spacing:.1em;margin:16px 0 6px;
  display:flex;align-items:center;gap:10px}
.ag-divider::before,.ag-divider::after{content:'';flex:1;height:1px;background:var(--line)}
/* 업무 소유권 읽기 전용 — 담당자 아니면 편집 컨트롤 숨김 (서버 403 가드와 이중) */
.detail .pane.ro .statusbtns,.detail .pane.ro .attach,.detail .pane.ro .evdrop,
.detail .pane.ro [data-delcrit],.detail .pane.ro [data-promote],.detail .pane.ro [data-minev],
.detail .pane.ro .labrow,.detail .pane.ro [data-deltask],
.detail .pane.ro .row:has(#d-due),.detail .pane.ro .row:has(#newcrit),.detail .pane.ro .row:has(#newsub),
.detail .pane.ro .sec:has([data-deltask]){display:none}
.detail .pane.ro [data-crit],.detail .pane.ro [data-sub]{pointer-events:none}
.ro-note{margin:8px 0 4px;padding:8px 12px;font-size:12px;background:rgba(168,128,31,.09);
  border:1px solid rgba(168,128,31,.28);border-radius:10px}
/* 댓글 @멘션 강조 */
.mention{color:var(--accent-strong);font-weight:800}
/* 문서함 폴더 트리 관리 버튼 */
.fold .facts{margin-left:auto;display:inline-flex;gap:3px}
.fold{display:flex;align-items:center;gap:5px}
/* 검토요청 인라인 미리보기 + 모바일 드로어 입력 짤림 수정 */
.rvwrap{margin:8px 0}
.rvbody{margin-top:8px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:10px}
.rvbody h6{font-size:10.5px;font-weight:700;color:var(--text-faint);margin:8px 0 4px}
.rvbody p{font-size:12.5px;line-height:1.6}
@media (max-width: 640px){
  /* 좁은 화면에선 드로어 행이 줄바꿈되어 입력칸이 짤리지 않는다 (기한 "2", 대응 "계?" 짤림 수정) */
  .detail .sec .row{flex-wrap:wrap}
  .detail .sec .row input[type="date"],.detail .sec .row select{flex:1 1 60%;min-width:140px}
}

/* 모바일 폴리시 — 웹이 메인, 폰은 같은 화면을 편하게 (구조 변경 없음) */
@media (max-width: 760px){
  /* 터치 타깃 — 최소 34px */
  .btn,.ubtn{min-height:34px;display:inline-flex;align-items:center;justify-content:center}
  .iconbtn{min-width:32px;min-height:32px}
  .orb{width:19px;height:19px;font-size:10px}
  .fold{min-height:36px}
  /* 상태 메뉴·검토 미리보기·Q&A — 폰 폭에 맞춤 */
  .pmenu{left:10px !important;right:10px;min-width:0}
  .rvbody{padding:9px 10px}
  #qa-q{flex:1 1 100%}
  /* 배너류 버튼이 다음 줄로 자연스럽게 */
  .confirmbar{row-gap:8px}
  /* 드로어 헤더 닫기 버튼 크게 */
  .detail .dh .x{font-size:20px;padding:4px 8px}
  /* 요청함 검토 3버튼 — 한 줄에 안 맞으면 줄바꿈 */
  .req .acts{flex-wrap:wrap}
}



/* 완료 카드 — 취소선 대신 명암으로 종료 표시 (제목은 계속 읽힌다) */
.card.is-done{background:var(--surface-2);opacity:.78}
.card.is-done h5{color:var(--text-muted)}
.card.is-done .stpre{opacity:.65}






/* 카드 제목 앞 [스트림] 접두 표기 — 분류가 항상 제목과 함께 보인다 */
.stpre{color:var(--accent-strong);font-weight:800;opacity:.85}
/* 줄바꿈 파손 원천 차단 — 버튼·필·뱃지·칩류는 내부 줄바꿈 금지 (컨테이너가 좁으면 요소 단위로만 줄바꿈) */
button,.btn,.ubtn,.pil,.bdg,.evc,.iconbtn,.colplus,.tb,.seclab,.cnt,.cnt2,.who,.lockmark{white-space:nowrap}
.kanban .col h4,.seth h4{white-space:nowrap}
label.optrow .t small{white-space:normal} /* 설명문은 예외 — 문장은 줄바꿈 허용 */
/* 좁은 줄에서는 버튼·레이블 대신 입력칸이 줄어든다 — "저장"이 "저/장"으로 꺾이는 것 원천 차단 */
.row>button,.row>.btn,.row>span.faint,.row>label{flex-shrink:0}
.row>input,.row>select,.row>textarea{min-width:0;flex-shrink:1}
.setadd>button{flex-shrink:0}
.deprow .pil,.deprow .who{flex-shrink:0}
/* 접근 라벨 — 자주 안 쓰는 설정: 드로어 하단에 작게 */
.detail .sec.labrow{display:flex;align-items:center;gap:8px}
.detail .sec.labrow select{width:auto;flex:none;font-size:11.5px;padding:3px 8px}
.detail .sec.labrow .btn{font-size:11px;padding:3px 10px}




.btn{font-family:var(--font-body);font-size:11.5px;font-weight:600;border:1px solid var(--line);
  background:var(--surface-2);color:var(--text-muted);border-radius:99px;padding:3px 13px;cursor:pointer;transition:all .18s}
.btn:hover{border-color:var(--accent);color:var(--accent-strong)}
.btn.pri{background:var(--accent-strong);border-color:var(--accent-strong);color:#f5f3ff}
.btn.pri:hover{color:#fff}
.btn.del{color:var(--danger)}
.btn.del:hover{border-color:var(--danger);color:var(--danger)}

/* ── 보드 뷰 ── */
.board-wrap{display:grid;grid-template-columns:1fr;gap:14px;transition:grid-template-columns .25s}
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}
.col h4{font-size:12px;font-weight:700;color:var(--text-muted);padding:2px 4px 10px;display:flex;gap:8px;align-items:center}
.col h4 .cnt{font-size:10.5px;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:0 8px}
.card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:12px 15px;margin-bottom:9px;cursor:pointer;transition:transform .15s,box-shadow .15s}
.card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.card h5{font-size:13.5px;font-weight:700;letter-spacing:-0.01em}
.card .meta{display:flex;gap:6px;margin-top:7px;align-items:center;flex-wrap:wrap}
.card .who{margin-left:auto;font-size:11px;color:var(--text-faint)}
.card.dim{opacity:.62;cursor:default}
.card.dim:hover{transform:none;box-shadow:none}

/* 디테일 = 우측 전체 높이 슬라이드 드로어 (콘텐츠를 밀지 않고 위로 덮음) */
.board-wrap{display:block}
.scrim{display:none;position:fixed;inset:0;background:rgba(43,43,64,.22);z-index:25}
.board-wrap.open .scrim{display:block}
.detail{position:fixed;top:0;right:0;width:462px;max-width:92vw;height:100vh;z-index:30;
  transform:translateX(103%);transition:transform .22s ease;overflow-y:auto;
  background:var(--surface);backdrop-filter:var(--blur);border-left:3px solid var(--accent);
  box-shadow:-18px 0 56px rgba(80,70,160,.3)}
.board-wrap.open .detail{transform:translateX(0)}
.detail .pane{background:none;border:none;box-shadow:none;border-radius:0;padding:22px 24px 40px}
.detail .dh{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.detail .dh h2{font-size:16px;font-weight:800;letter-spacing:-0.01em}
.detail .dh .x{margin-left:auto;font-size:16px;color:var(--text-faint);cursor:pointer;background:none;border:none}
.detail .sec{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}
.detail .sec h6{font-size:11px;font-weight:700;color:var(--text-faint);letter-spacing:.06em;margin-bottom:8px}
.sub{display:flex;gap:9px;align-items:flex-start;padding:5px 0;font-size:13px}
.sub .orb{margin-top:2px}
.sub .nm{flex:1;min-width:0}
.sub .evc{flex:none;margin-top:2px}
.orb{width:15px;height:15px;border-radius:50%;border:1.5px solid var(--line);flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:8.5px;background:#fdfdff;cursor:pointer}
.orb.on{background:var(--ok);border-color:var(--ok);color:#f2faf6}
.orb.half{border-color:var(--accent);color:var(--accent-strong)}
.sub .nm.done{text-decoration:line-through;color:var(--text-faint)}
.evc{font-size:10px;font-weight:700;border-radius:99px;padding:1px 8px;cursor:pointer}
.evc.ok{background:rgba(35,122,92,.12);color:var(--ok)}
.evc.none{background:rgba(168,128,31,.16);color:var(--lockc)}
.evlist{margin-top:6px}
.ev{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--text-muted);padding:5px 8px;background:rgba(120,87,232,.05);border-radius:8px;margin-bottom:5px}
.ev .t{font-size:9.5px;font-weight:800;letter-spacing:.05em;color:var(--accent-strong);background:rgba(120,87,232,.12);border-radius:5px;padding:0 5px;flex:none}
.ev .by{margin-left:auto;font-size:10.5px;color:var(--text-faint);flex:none}
.attach{display:flex;gap:6px;margin-top:8px}
.note{margin-top:10px;font-size:11.5px;color:var(--text-faint);background:rgba(168,128,31,.08);border-radius:8px;padding:7px 10px;display:none}
.note.show{display:block}
.cmt{margin-top:6px;font-size:12px;color:var(--text-muted);background:rgba(120,87,232,.06);border-radius:10px;padding:7px 10px}
.cmt b{color:var(--text)}

/* ── 팀 라이브 = 전역 고정 스트립 (전 탭 공통) · 나머지는 탭별 교체 ── */
/* 보드 탭 내부 순서: 칸반(1) → 내 내역(2). .on 조건 필수 — 무조건 display 주면 탭 숨김이 깨진다 */
#v-board.on{display:flex;flex-direction:column}
#v-board>.board-wrap{order:1}
#v-board>.sb-duo{order:2}
.live-strip{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.live-strip .lbl{font-size:11px;font-weight:800;color:var(--text-faint);display:flex;gap:6px;align-items:center;margin-right:4px}
.pulse{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:pu 1.6s infinite}
@keyframes pu{0%{box-shadow:0 0 0 0 rgba(35,122,92,.35)}70%{box-shadow:0 0 0 6px rgba(35,122,92,0)}100%{box-shadow:0 0 0 0 rgba(35,122,92,0)}}
.lchip{display:flex;gap:8px;align-items:center;background:var(--surface);backdrop-filter:var(--blur);
  border:1px solid var(--line);border-radius:99px;padding:4px 13px 4px 5px;font-size:11.5px;box-shadow:var(--shadow)}
.lchip .av{margin:0;width:22px;height:22px;font-size:8.5px}
.lchip .t{color:var(--text-muted);max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lchip .t b{color:var(--text);font-weight:700}
.lchip .mb{width:54px;height:4px;border-radius:99px;background:rgba(120,87,232,.14);overflow:hidden;flex:none}
.lchip .mb i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--aqua))}
.lchip .pc{font-variant-numeric:tabular-nums;color:var(--text-faint);font-size:10.5px;flex:none}
.sb-duo{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 0}
.sb-list{max-height:148px;overflow:auto}
.sb-item{display:flex;gap:8px;align-items:baseline;padding:5px 0;border-top:1px solid var(--line);font-size:12.5px}
.sb-item:first-child{border-top:none}
.sb-item .d{font-size:10.5px;color:var(--text-faint);flex:none;width:32px}
.sb-item .who2{margin-left:auto;font-size:10.5px;color:var(--text-faint);flex:none}
/* ── 긴급도 · 첨부 ── */
.urg{display:flex;gap:6px;flex-wrap:wrap}
.ubtn{font-family:var(--font-body);font-size:11.5px;font-weight:600;border:1px solid var(--line);
  background:var(--surface-2);color:var(--text-muted);border-radius:99px;padding:4px 12px;cursor:pointer}
.ubtn.on.u1{background:rgba(194,69,58,.12);border-color:var(--danger);color:var(--danger)}
.ubtn.on.u2{background:rgba(168,128,31,.16);border-color:var(--lockc);color:var(--lockc)}
.ubtn.on.u3{background:rgba(35,122,92,.12);border-color:var(--ok);color:var(--ok)}
.ubtn.on.t{background:rgba(120,87,232,.12);border-color:var(--accent);color:var(--accent-strong)}
.pil.rev{background:rgba(74,168,216,.15);color:#2a7ba8}
.cool{font-size:11px;color:var(--text-faint);display:flex;gap:8px;align-items:center;margin-top:8px}
.cool .cbar{flex:1;height:4px;border-radius:99px;background:rgba(120,87,232,.12);overflow:hidden}
.cool .cbar i{display:block;height:100%;background:var(--aqua);border-radius:99px}
.pil.u1{background:rgba(194,69,58,.12);color:var(--danger)}
.pil.u2{background:rgba(168,128,31,.16);color:var(--lockc)}
.pil.u3{background:rgba(35,122,92,.12);color:var(--ok)}
.fchip{display:inline-flex;gap:5px;align-items:center;font-size:11px;font-weight:600;color:var(--text-muted);
  background:rgba(120,87,232,.07);border:1px solid var(--line);border-radius:99px;padding:2px 10px;margin:4px 4px 0 0}
/* 증빙 드롭존 + 경로 입력 */
.evdrop{margin-top:8px;border:1.5px dashed rgba(120,87,232,.35);border-radius:10px;padding:9px 11px;font-size:11.5px;color:var(--text-faint);transition:all .15s}
.evdrop.over{background:rgba(120,87,232,.08);border-color:var(--accent);color:var(--accent-strong)}
.pathrow{display:flex;gap:6px;margin-top:7px}
.pathrow input{flex:1;font-family:var(--font-body);font-size:11.5px;color:var(--text);background:var(--surface-2);
  border:1px solid var(--line);border-radius:8px;padding:5px 10px;outline:none}
.pathrow input:focus{border-color:var(--accent)}
/* 문서함 */
.vault-grid{display:grid;grid-template-columns:280px 1fr;gap:14px;align-items:start}
.tree .fold{font-size:13px;font-weight:700;padding:7px 8px;border-radius:8px;cursor:pointer;display:flex;gap:8px;align-items:center}
.tree .fold:hover{background:rgba(120,87,232,.06)}
.tree .fold .cnt2{margin-left:auto;font-size:10.5px;color:var(--text-faint);font-weight:600}
.tree .leaf{font-size:12px;color:var(--text-muted);padding:3px 8px 3px 30px;display:flex;gap:6px;align-items:baseline}
.tree .leaf .v{font-size:9.5px;color:var(--ok);font-weight:700}
.vsearch{width:100%;font-family:var(--font-body);font-size:13px;color:var(--text);background:var(--surface-2);
  border:1px solid var(--line);border-radius:10px;padding:8px 14px;outline:none;margin-bottom:10px}
.vsearch:focus{border-color:var(--accent)}
.vrow{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--line);font-size:12.5px}
.vrow:first-of-type{border-top:none}
.vrow .fn{font-weight:600}
.vrow .path2{font-size:10.5px;color:var(--text-faint)}
.vrow .meta2{margin-left:auto;font-size:10.5px;color:var(--text-faint);flex:none}
.seclab{font-size:10px;font-weight:800;letter-spacing:.05em;background:rgba(194,69,58,.1);color:var(--danger);border-radius:5px;padding:1px 7px}

/* ── 요청함 뷰 ── */
.req-grid{display:grid;grid-template-columns:380px 1fr;gap:14px;align-items:start}
.field{margin-bottom:10px}
.field label{display:block;font-size:11px;font-weight:700;color:var(--text-faint);margin-bottom:4px}
.field input,.field textarea,.field select{width:100%;font-family:var(--font-body);font-size:13px;color:var(--text);
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:8px 12px;outline:none}
.field textarea{height:74px;resize:none}
.field input:focus,.field textarea:focus{border-color:var(--accent)}
.req{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:13px 16px;margin-bottom:10px}
.req .h{display:flex;gap:8px;align-items:baseline}
.req h5{font-size:13.5px;font-weight:700}
.req .from{font-size:11px;color:var(--text-faint)}
.req p{font-size:12.5px;color:var(--text-muted);margin-top:4px}
.req .acts{display:flex;gap:6px;margin-top:9px;align-items:center}
.req .state{font-size:11.5px;font-weight:700}
.chain{margin-top:8px;font-size:11px;color:var(--text-faint);border-top:1px dashed var(--line);padding-top:7px;display:none}
.chain.show{display:block}

/* ── 회의록 뷰 ── */
.min-grid{display:grid;grid-template-columns:400px 1fr;gap:14px;align-items:start}
.drop{border:2px dashed rgba(120,87,232,.35);border-radius:var(--radius);padding:26px 18px;text-align:center;cursor:pointer;transition:all .2s}
.drop:hover{background:rgba(120,87,232,.05);border-color:var(--accent)}
.drop .big{font-size:26px;margin-bottom:6px}
.drop p{font-size:12.5px;color:var(--text-muted)}
.drop .sub2{font-size:11px;color:var(--text-faint)}
.steps{margin-top:14px}
.step{display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--text-faint);padding:5px 0}
.step .dot{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--line);flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:9px;background:#fdfdff}
.step.doing{color:var(--accent-strong);font-weight:600}
.step.doing .dot{border-color:var(--accent);color:var(--accent-strong)}
.step.did{color:var(--text-muted)}
.step.did .dot{background:var(--ok);border-color:var(--ok);color:#f2faf6}
.result{display:none}
.result.show{display:block}
.doc{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:12px}
.doc h5{font-size:14px;font-weight:800;margin-bottom:2px}
.doc .src3{display:flex;gap:6px;margin:8px 0 10px}
.doc h6{font-size:11px;font-weight:700;color:var(--accent-strong);margin:10px 0 4px}
.doc ul{margin-left:16px;font-size:12.5px;color:var(--text-muted)}
.doc ul li{padding:1.5px 0}
/* 회의록 요약본 — 위계: 결정(강조 카드) > 액션(칩 행) > 논의·보류(낮은 톤 2단) */
.mdoc{max-width:860px}
.mdoc h5{font-size:15px}
.mdoc h6{font-size:11.5px;margin:16px 0 8px;display:flex;gap:7px;align-items:center}
.mdoc h6 .cnt2{font-size:10px;background:rgba(120,87,232,.12);border-radius:99px;padding:0 7px}
.mdecs{display:flex;flex-direction:column;gap:6px}
.mdec{display:flex;gap:10px;align-items:baseline;background:rgba(120,87,232,.06);border-left:3px solid var(--accent);
  border-radius:0 10px 10px 0;padding:9px 12px}
.mdec .n{font-size:11px;font-weight:800;color:var(--accent-strong);flex:none}
.mdec p{font-size:13px;font-weight:600;line-height:1.6;color:var(--text)}
.macts{display:flex;flex-direction:column}
.mact{display:flex;gap:10px;align-items:center;padding:8px 2px;border-top:1px solid var(--line)}
.mact:first-child{border-top:none}
.mact p{flex:1;font-size:12.5px;line-height:1.55;color:var(--text);min-width:0}
.mact .chips{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end;flex:none}
.mlow{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;align-items:start}
.mlow ul{margin-left:14px;font-size:12px;color:var(--text-muted);line-height:1.6}
.mlow ul li{padding:2.5px 0}
@media (max-width:760px){.mlow{grid-template-columns:1fr}.mact{flex-wrap:wrap}.mact .chips{justify-content:flex-start}}

.qrow{display:flex;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--line);font-size:12.5px}
.qrow .acts{margin-left:auto;display:flex;gap:5px}
.arch-item{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--line);font-size:12.5px;color:var(--text-muted)}
.arch-item .d{font-size:11px;color:var(--text-faint);flex:none}

/* ── 스텁 뷰 ── */
.stub{max-width:520px;text-align:center;margin:60px auto;color:var(--text-muted)}
.stub .big{font-size:30px;margin-bottom:10px}
.stub h4{font-size:15px;font-weight:700;color:var(--text);margin-bottom:6px}
.stub p{font-size:12.5px;line-height:1.7}

/* ── 리포트 탭 — 일간/주간/월간 하위탭 ── */
.rep{display:none}.rep.on{display:block}
.rephead{font-size:12px;font-weight:800;color:var(--text-faint);letter-spacing:.03em;margin-bottom:4px}
.repline{font-size:12.5px;color:var(--text-muted);padding:8px 0;border-top:1px solid var(--line);line-height:1.65}
.repline .hl{color:var(--accent-strong);font-weight:700}
.repline b{color:var(--text)}
/* ── 기록 탭 — 질문 → 답 → 근거 타임라인 ── */
.arch-grid{display:grid;grid-template-columns:210px 1fr;gap:14px;align-items:start}
.fil{font-size:12px;color:var(--text-muted);padding:5px 6px;display:flex;gap:8px;align-items:center;cursor:pointer}
.fil input{accent-color:var(--accent)}
.filh{font-size:10.5px;font-weight:800;color:var(--text-faint);letter-spacing:.05em;margin:10px 0 3px}
.searchrow{display:flex;gap:8px;margin-bottom:4px}
.searchrow .vsearch{margin-bottom:0;flex:1}
.answer{display:none;background:rgba(120,87,232,.07);border:1px solid rgba(120,87,232,.28);border-radius:var(--radius);
  padding:14px 16px;margin:12px 0 8px}
.answer.show{display:block}
.answer .ah{font-size:11px;font-weight:800;color:var(--accent-strong);display:flex;gap:7px;align-items:center;margin-bottom:6px}
.answer p{font-size:13px;color:var(--text);line-height:1.7}
.answer .refs{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.dategrp{font-size:11px;font-weight:800;color:var(--text-faint);margin-top:14px}
.trow{display:flex;gap:9px;align-items:baseline;padding:8px 0;border-top:1px solid var(--line);font-size:12.5px}
.trow .tb{font-size:9.5px;font-weight:800;border-radius:5px;padding:1px 6px;flex:none}
.tb.min{background:rgba(74,168,216,.15);color:#2a7ba8}
.tb.ctx{background:rgba(120,87,232,.12);color:var(--accent-strong)}
.tb.ev{background:rgba(35,122,92,.12);color:var(--ok)}
.tb.task{background:rgba(168,128,31,.13);color:var(--lockc)}
.trow .sn{color:var(--text-faint);font-size:11.5px}
.trow .d2{margin-left:auto;font-size:10.5px;color:var(--text-faint);flex:none}

/* ═══ 앱 전용 추가 — 토큰 값은 재정의하지 않고 변수 참조만 한다 ═══ */
.row{display:flex;gap:8px;align-items:center}
.row.wrap{flex-wrap:wrap}
.spacer{margin-left:auto}
.muted{color:var(--text-muted)}
.faint{font-size:11.5px;color:var(--text-faint)}
.empty{font-size:12.5px;color:var(--text-faint);padding:18px 4px;text-align:center}
.hidden{display:none !important}
.clickable{cursor:pointer}

/* 알림 · 토스트 */
.toast-wrap{position:fixed;right:18px;bottom:18px;z-index:1100;display:flex;flex-direction:column;gap:8px} /* 모달(900) 위 — 모달 안 에러 토스트가 가려지면 안 된다 */
.toast{background:var(--surface-2);backdrop-filter:var(--blur);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:10px 14px;font-size:12.5px;max-width:340px;animation:tin .18s ease}
.toast.err{border-color:var(--danger);color:var(--danger)}
.toast.ok{border-color:var(--ok);color:var(--ok)}
@keyframes tin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* 상단 바 — 검색·사용자·알림 */
.topbar .tsearch{font-family:var(--font-body);font-size:12.5px;color:var(--text);background:var(--surface-2);
  border:1px solid var(--line);border-radius:99px;padding:5px 14px;outline:none;width:230px}
.topbar .tsearch:focus{border-color:var(--accent)}
.topbar select{font-family:var(--font-body);font-size:12px;color:var(--text-muted);background:var(--surface-2);
  border:1px solid var(--line);border-radius:99px;padding:5px 10px;outline:none}
.bell{position:relative;background:none;border:none;font-size:15px;cursor:pointer;color:var(--text-muted)}
.bell .dot2{position:absolute;top:-1px;right:-3px;min-width:15px;height:15px;border-radius:99px;background:var(--danger);
  color:#fff;font-size:9px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}
.notipanel{position:absolute;top:44px;right:28px;width:340px;max-height:60vh;overflow:auto;z-index:40;
  background:var(--surface-2);backdrop-filter:var(--blur);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px}
.notirow{font-size:12px;color:var(--text-muted);padding:8px 0;border-top:1px solid var(--line)}
.notirow.clickable{cursor:pointer}
.notirow.clickable:hover{background:var(--surface-2);border-radius:8px}
.notirow:first-of-type{border-top:none}
.notirow.unread{color:var(--text);font-weight:600}
.notirow .nt{font-size:10px;color:var(--text-faint);margin-left:6px}

/* 보드 — 컬럼별 스크롤 · 기한 뱃지 · 필터 바 */
.kanban .col{min-height:60px}
.kanban .col .list{max-height:calc(100vh - 330px);overflow:auto;padding-right:2px}
.pil.due{background:rgba(168,128,31,.16);color:var(--lockc)}
.pil.over{background:rgba(194,69,58,.12);color:var(--danger)}
.filterbar{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.filterbar select,.filterbar input{font-family:var(--font-body);font-size:12px;color:var(--text);background:var(--surface-2);
  border:1px solid var(--line);border-radius:99px;padding:5px 12px;outline:none}
.card.on{border-color:var(--accent);box-shadow:var(--shadow)}
.card .bar{height:4px;border-radius:99px;background:rgba(120,87,232,.14);margin-top:8px;overflow:hidden}
.card .bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--aqua))}

/* 보드 — [+] 업무 추가 (진행가능 컬럼) */
.col h4 .colplus{margin-left:auto;width:22px;height:22px;border-radius:7px;border:1px solid var(--line);
  background:var(--surface-2);color:var(--text-muted);font-size:14px;line-height:1;cursor:pointer;transition:all .15s}
.col h4 .colplus:hover{border-color:var(--accent);color:var(--accent-strong)}
.createform{background:var(--surface-2);border:1px dashed var(--accent);border-radius:var(--radius);padding:12px;margin-bottom:9px}
.createform input,.createform select,.createform textarea{font-family:var(--font-body);font-size:12.5px;color:var(--text);
  background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 10px;outline:none}
.createform input:focus,.createform textarea:focus{border-color:var(--accent)}
.createform #ct-title{width:100%}
.createform .row.wrap select,.createform .row.wrap input{flex:1 1 40%;min-width:0}
.createform textarea{width:100%;height:56px;resize:vertical}
/* 검토 큐 인라인 수정 — 행 바로 아래로 열리는 보드 폼 */
.qrow.editing{border-top-color:var(--accent)}
.createform.qeditor{margin:2px 0 10px}
.createform.qeditor [data-qf="title"]{width:100%}


/* 보드 — 카드 드래그앤드랍 */
.card[draggable="true"]{user-select:none;-webkit-user-select:none}
.card.dragging{opacity:.35}
.col.drop-over{background:rgba(120,87,232,.07);border-radius:var(--radius);outline:2px dashed var(--accent);outline-offset:-2px}
.drophint{display:none;font-size:11px;font-weight:600;color:var(--accent-strong);border:1px dashed var(--accent);
  border-radius:9px;padding:6px 8px;margin-bottom:8px;text-align:center;background:rgba(120,87,232,.05)}
.kanban.dnd-on .drophint{display:block}
.drag-ghost{position:fixed;z-index:1000;pointer-events:none;opacity:.92;margin:0;box-shadow:var(--shadow);transform:rotate(1.5deg)}

/* 카드 우클릭 메뉴 */
.ctxmenu{position:fixed;z-index:950;min-width:150px;background:var(--surface-2);backdrop-filter:var(--blur);
  border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:5px;display:flex;flex-direction:column}
.ctxmenu button{font-family:var(--font-body);font-size:12.5px;font-weight:600;text-align:left;background:none;border:none;
  border-radius:8px;padding:8px 12px;cursor:pointer;color:var(--text)}
.ctxmenu button:hover{background:rgba(120,87,232,.08)}
.ctxmenu button.danger{color:var(--danger)}
.ctxmenu button.danger:hover{background:rgba(194,69,58,.08)}

/* 선행조건 지정 모달 */
.modal-wrap{position:fixed;inset:0;background:rgba(24,20,44,.42);z-index:900;display:flex;align-items:center;justify-content:center;padding:16px}
.modal{width:min(500px,100%);max-height:82vh;overflow:auto}
.modal .dh{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.modal .dh h2{font-size:15px;font-weight:800;letter-spacing:-0.01em}
.modal .dh .x{margin-left:auto;font-size:16px;color:var(--text-faint);cursor:pointer;background:none;border:none}
.deplist{display:flex;flex-direction:column;gap:2px;max-height:320px;overflow:auto}
.deprow{display:flex;gap:8px;align-items:center;padding:7px 9px;border-radius:9px;cursor:pointer;font-size:13px}
.deprow:hover{background:var(--surface-2)}
.deprow input{accent-color:var(--accent)}
.deprow .who{margin-left:auto;font-size:11px;color:var(--text-faint);flex-shrink:0}

/* 드로어 내부 폼 */
.detail input,.detail textarea,.detail select{font-family:var(--font-body);font-size:12.5px;color:var(--text);
  background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 10px;outline:none;width:100%}
.detail textarea{height:60px;resize:vertical}
.detail .sec .row{margin-top:8px}
.statusbtns{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}

/* 리포트 · 기록 보조 */
.repline .tag{font-weight:800;color:var(--accent-strong);margin-right:6px}
.answer .basis{font-size:10.5px;color:var(--text-faint);margin-top:6px}

/* 로그인 화면 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;z-index:1}
.login-card{width:380px;max-width:94vw;padding:26px 26px 20px}
.login-card .field input,.login-card .field select{width:100%}

/* ═══ 모바일 (≤760px) — 토큰 값 변경 없음, 배치만 재구성 ═══ */
@media (max-width: 760px) {
  /* 사이드바 → 상단 가로 내비 */
  .app{grid-template-columns:1fr;min-height:100vh}
  .side{position:sticky;top:0;height:auto;z-index:20;border-right:none;border-bottom:1px solid var(--line);
    padding:10px 12px;flex-direction:row;align-items:center;gap:10px;background:var(--bg)}
  .side .logo{margin-bottom:0;font-size:16px;padding:0;flex:none}
  .side .nav{flex-direction:row;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .side .nav::-webkit-scrollbar{display:none}
  .side .nav button{flex:none;padding:8px 10px;font-size:13px}
  .side .hint{display:none}

  .main{padding:12px 12px 40px}
  .topbar{gap:8px}
  .topbar h1{font-size:15px}
  .topbar .wk{display:none}
  .topbar .tsearch{width:100%;order:9;margin-top:4px}
  .avs{display:none}
  .notipanel{right:8px;left:8px;width:auto;top:110px}

  /* 팀 라이브 — 한 줄 유지, 가로 스와이프 */
  .live-strip{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none}
  .live-strip::-webkit-scrollbar{display:none}
  .lchip{flex:none}
  .lchip .t{max-width:150px}

  /* 칸반 — 컬럼 가로 스와이프 (4열 압축 금지) */
  .kanban{grid-template-columns:repeat(4,78vw);overflow-x:auto;-webkit-overflow-scrolling:touch;
    scroll-snap-type:x proximity;padding-bottom:6px}
  .kanban .col{scroll-snap-align:start}
  .kanban .col .list{max-height:none}

  /* 2열 그리드 → 세로 스택 */
  .sb-duo,.req-grid,.min-grid,.vault-grid,.arch-grid{grid-template-columns:1fr}

  /* 디테일 드로어 — 전체 폭 */
  .detail{width:100vw;max-width:100vw}

  /* 폼·버튼 터치 타깃 */
  .btn{padding:6px 14px;font-size:12.5px}
  .ubtn{padding:7px 12px}
  .field input,.field textarea,.field select,.detail input,.detail select,
  .createform input,.createform select,.createform textarea{font-size:16px} /* iOS 자동 확대 방지 */
  .login-card{padding:20px 16px 16px}
}

/* 모바일 오버플로 근본 수정 — grid/flex 자식은 기본 min-width:auto 라 내용만큼 늘어난다.
   본문 폭을 뷰포트에 고정하고, 넓은 콘텐츠는 각자의 내부 스크롤러에서만 흐르게 한다. */
@media (max-width: 760px) {
  .main{min-width:0;max-width:100vw;overflow-x:clip}
  .kanban{max-width:100%}
  #v-board>.board-wrap{min-width:0}
  .view{min-width:0}
  .pane{min-width:0;overflow-x:auto}
  .req,.doc,.qrow,.vrow,.trow,.sb-item,.repline{min-width:0}
  .qrow,.vrow{flex-wrap:wrap}
  .qrow .acts{margin-left:0;width:100%;justify-content:flex-end}
}

@media (max-width: 760px) {
  /* 상단 내비 자체가 밀리던 문제 — flex 자식 min-width 보정 */
  .side{max-width:100vw;min-width:0}
  .side .nav{min-width:0;flex:1 1 auto}
  body{overflow-x:hidden} /* 최후 방어 — 내부 스크롤러(칸반·라이브 스트립)는 영향 없음 */
}

/* 모바일 상단바 재구성 — 데스크톱 규칙(.topbar .avs 등)보다 우선하도록 동일 깊이로 지정 */
@media (max-width: 760px) {
  .topbar{flex-wrap:wrap;row-gap:8px;margin-bottom:12px}
  .topbar h1{white-space:nowrap;flex:none;writing-mode:horizontal-tb}
  .topbar .avs{display:none}           /* 아바타 무더기 — 폰에서는 자리만 차지 */
  .topbar .pil{white-space:nowrap;font-size:11px;padding:2px 10px;max-width:46vw;overflow:hidden;text-overflow:ellipsis}
  .topbar .tsearch{flex:1 1 100%;width:auto;order:9;margin-top:0}
  .topbar .spacer{display:none}
  .bell{flex:none}
  .live-strip .lbl{white-space:nowrap;flex:none}
  .live-strip .faint{white-space:nowrap}
  .kanban .col h4{white-space:nowrap}
}

/* 필터 접힘 구조 — 데스크톱은 기존 그대로(fbody가 투명 컨테이너), 토글 버튼은 모바일 전용 */
.filterbar .fbody{display:contents}
#fToggle{display:none}
.me-min{display:none}

/* ═══ 모바일 헤더 재설계 — 6줄 → 3줄 ═══ */
@media (max-width: 760px) {
  /* 탭이 곧 제목 — 중복 제목·이름 배지 제거, 내 계정은 이니셜 원형 */
  #vtitle{display:none}
  .topbar .me-full{display:none}
  .me-min{display:inline-flex;width:30px;height:30px;font-size:12px;flex:none;margin-left:0}
  /* 검색·알림·계정·로그아웃 = 한 줄 */
  .topbar{flex-wrap:nowrap;gap:8px;margin-bottom:10px}
  .topbar .tsearch{flex:1 1 auto;order:0;width:auto;margin-top:0;min-width:0}
  #logout{font-size:13px}

  /* 필터 — 기본 접힘, [필터 ▾]로 펼침 */
  #fToggle{display:inline-flex;flex:none}
  .filterbar{margin-bottom:10px}
  .filterbar .fbody{display:none}
  .filterbar.open .fbody{display:flex;flex-wrap:wrap;gap:8px;width:100%;margin-top:8px}
  .filterbar.open .fbody select{flex:1 1 44%}

  /* 팀 라이브 — 진행 중 업무가 있을 때만 등장 */
  .live-strip.empty{display:none}
  .live-strip{margin-bottom:10px}

  /* 내비 활성 탭 대비 강화 + 여백 정돈 */
  .side .nav button.on{background:var(--accent);color:#f5f3ff;box-shadow:none}
  .main{padding-top:10px}
}

/* ── 관리 탭 · 보드 표시 설정 — 목록 한 줄 = 항목 하나, 이름은 인라인 편집 ── */
.setpane{margin-top:14px}
.setgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:8px}
.setbox{min-width:0;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.seth{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-bottom:8px}
.seth h4{font-size:12.5px;font-weight:800;letter-spacing:-0.01em}
.setlist{display:flex;flex-direction:column}
.setrow{display:flex;gap:6px;align-items:center;padding:4px 0;border-top:1px solid var(--line)}
.setrow:first-child{border-top:none}
.setrow.off{opacity:.5}
.setrow .nm{flex:1;min-width:0;font-family:var(--font-body);font-size:12.5px;font-weight:600;color:var(--text);
  background:transparent;border:1px solid transparent;border-radius:8px;padding:5px 8px;outline:none;transition:border-color .15s,background .15s}
.setrow .nm:hover{border-color:var(--line);background:var(--surface)}
.setrow .nm:focus{border-color:var(--accent);background:var(--surface)}
.setrow .nm:disabled{color:var(--text-muted);font-weight:500;cursor:not-allowed}
.setrow .pil{flex:none}
.pil.zero{opacity:.4}
.iconbtn{flex:none;width:24px;height:24px;line-height:1;font-size:11px;font-family:var(--font-body);
  border:1px solid transparent;border-radius:7px;background:none;color:var(--text-faint);cursor:pointer;transition:all .15s}
.iconbtn:hover{border-color:var(--line);color:var(--text)}
.iconbtn.danger:hover{border-color:var(--danger);color:var(--danger)}
.iconbtn:disabled{opacity:.28;cursor:not-allowed}
.iconbtn:disabled:hover{border-color:transparent;color:var(--text-faint)}
.lockmark{flex:none;width:24px;text-align:center;font-size:11px;opacity:.55}
.setadd{display:flex;gap:6px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.setadd input,.setadd select{flex:1;min-width:0;font-family:var(--font-body);font-size:12.5px;color:var(--text);
  background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 10px;outline:none}
.setadd input:focus,.setadd select:focus{border-color:var(--accent)}
.setadd .arrow{flex:none;color:var(--accent);font-weight:800}
.setadd .btn{flex:none}
.sethint{font-size:11px;color:var(--text-faint);line-height:1.6;margin-top:8px}
@media (max-width:760px){
  .setgrid{grid-template-columns:minmax(0,1fr)}
  .setrow .nm,.setadd input,.setadd select{font-size:16px} /* iOS 자동 확대 방지 */
  .setadd{flex-wrap:wrap}
}

/* ── 우측 상단 멤버 칩 — FREDDIE(김세현) 병기 ── */
.av-chip{display:inline-flex;gap:2px;align-items:baseline;font-size:11px;font-weight:800;color:var(--text-muted);
  background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:3px 11px;margin-left:4px;white-space:nowrap}
.av-chip i{font-style:normal;font-weight:500;font-size:10px;color:var(--text-faint)}
@media (max-width:760px){.av-chip{display:none}}

/* ── 로그인 — Caps Lock 경고 + 큰 CTA 버튼 ── */
.caps-warn{margin-top:6px;font-size:11.5px;font-weight:700;color:var(--lockc);
  background:rgba(168,128,31,.12);border-radius:8px;padding:5px 10px}
.login-cta{width:100%;font-size:14px;font-weight:800;padding:11px 0;border-radius:12px;margin-top:4px}

/* ── 관리 탭 — 옵션 행(관리자 권한) 정돈 ── */
.optrow{display:flex;gap:12px;align-items:center;justify-content:space-between;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:4px 0 12px}
.optrow .t{font-size:12.5px;font-weight:700;color:var(--text)}
.optrow .t small{display:block;font-size:11px;font-weight:500;color:var(--text-faint);line-height:1.5}
.optrow input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);flex:none;cursor:pointer}

/* 담당 실명 칸 — 이름 칸보다 좁게 */
.setrow .nm.realnm{flex:0 1 34%;font-weight:500;color:var(--text-muted)}


/* ── 확성기(기능 개선 요청) — 우하단 플로팅 ── */
.megaphone{position:fixed;right:20px;bottom:20px;z-index:55;width:52px;height:52px;border-radius:50%;
  border:none;background:var(--accent-strong);color:#fff;font-size:22px;cursor:pointer;
  box-shadow:0 10px 26px rgba(92,59,212,.35);transition:transform .15s,box-shadow .15s}
.megaphone:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 14px 32px rgba(92,59,212,.45)}
#megaModal select,#megaModal input,#megaModal textarea{font-family:var(--font-body);font-size:13px;color:var(--text);
  background:var(--surface-2);border:1px solid var(--line);border-radius:9px;padding:8px 11px;outline:none}
#megaModal input:focus,#megaModal textarea:focus{border-color:var(--accent)}
#megaModal textarea{resize:vertical}
@media (max-width:760px){.megaphone{right:14px;bottom:14px;width:48px;height:48px}}

/* ── 개선 요청 탭 ── */
.fbrow{padding:12px 4px;border-top:1px solid var(--line)}
.fbrow:first-of-type{border-top:none}
.fbrow.off{opacity:.62}
.fbrow .h{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fbrow .h b{font-size:13.5px;letter-spacing:-0.01em}
.fbrow p{font-size:12.5px;color:var(--text-muted);margin-top:6px;line-height:1.6}
.fbrow .acts{display:flex;gap:6px;margin-top:10px}

/* 모바일 터치 타깃 최종 우선 — 베이스 규칙보다 뒤에 있어야 이긴다 */
@media (max-width: 760px){
  .orb{width:19px;height:19px;font-size:10px}
}

/* 회의록 처리 중 스피너 */
@keyframes stspin{to{transform:rotate(360deg)}}
.step .dot.spin{animation:stspin 1s linear infinite;border-color:var(--accent);color:var(--accent-strong)}

/* @멘션 자동완성 드롭다운 */
.mentionmenu{position:fixed;z-index:75;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 34px rgba(60,50,140,.22);padding:4px;min-width:170px}
.mentionmenu button{display:flex;gap:6px;align-items:baseline;width:100%;text-align:left;background:none;border:none;font-size:12.5px;font-weight:700;color:var(--accent-strong);padding:7px 10px;border-radius:7px;cursor:pointer}
.mentionmenu button small{font-weight:500;color:var(--text-faint)}
.mentionmenu button.on,.mentionmenu button:hover{background:var(--surface-2)}

/* 개발탭 레포 그룹 헤더 */
.ghgroup{font-size:12px;font-weight:800;color:var(--accent-strong);margin:16px 0 8px;display:flex;gap:8px;align-items:center}
.ghgroup:first-child{margin-top:0}

/* 문서함 드래그 앤 드랍 — 폴더·파일영역 드랍 하이라이트, 파일 행 드래그 커서 */
.vrow[draggable="true"]{cursor:grab}
.vrow[draggable="true"]:active{cursor:grabbing}
.fold.dropok{outline:2px dashed var(--accent, #7c6ee6);outline-offset:-2px;background:rgba(124,110,230,.08)}
#vrows.dropok{outline:2px dashed var(--accent, #7c6ee6);outline-offset:4px;border-radius:8px;background:rgba(124,110,230,.05);min-height:60px}
