/* 영업 Mango 화면. 색 · 글자 · 간격 · 모서리 · 그림자 값은 /tokens.css 의 변수. 주간보고(06)는 원본 쪽 그림 + 인쇄 규칙 (아래 「06 주간보고」).
   디자인 v2: 크림 바탕 3단 · 상자 = 흰 + 1px 선 + 옅은 갈색 그림자 · 단추 = 알약(주 = 먹색) · 코랄은 선 · 밑줄 · 테두리 · 아이콘 · AI 비서 표식에만 */
/* 옛 이름 → 토큰 (아래 화면 규칙이 쓰는 이름) */
:root{--ink:var(--ink-900);--sub:var(--ink-500);--mute:var(--ink-400);--line:var(--line-200);--soft:var(--bg-sub);--bg:var(--bg-surface);
  --accent:var(--primary);--accent-bg:var(--bg-cream);
  --doing:var(--st-doing-dot);--hold:var(--st-stop-dot);--late:var(--st-stop-dot);--done:var(--st-done-dot);--cancel:var(--st-off-dot);--danger:var(--late-ink);}
*{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg-page);color:var(--ink-900);font:var(--fs-15)/1.5 var(--font);word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased}
b,strong,h1,h2,h3,h4{font-weight:var(--w-bold)}
button,input,select,textarea{font:inherit;color:inherit}
/* 아이콘 (index.html <template id="ic"> 복제 · 선 1.7 · 글자색을 따름) */
svg[data-ic]{flex:none;display:inline-block;vertical-align:middle}
/* 단추: 알약 · 기본 = 흰 바탕 + 1px 고르기 선 · 주 = 먹색 채움 · 위험 = 흰 바탕 + 지연 글자 · 아이콘은 글자 왼쪽 16px */
button{cursor:pointer;border:1px solid var(--line-control);background:var(--bg-surface);color:var(--ink-900);border-radius:var(--r-button);padding:5px 14px;transition:background-color var(--t-fast) ease-out,border-color var(--t-fast) ease-out}
button:hover{background:var(--bg-hover);border-color:var(--line-input)}
button:disabled{cursor:default;opacity:.6}
button > svg[data-ic]{width:16px;height:16px;margin:-2px 6px 0 -2px;color:var(--ink-500)}
button.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:var(--w-bold)}
button.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}
button.primary > svg[data-ic]{color:#fff}
button.on{background:var(--bg-surface);border:1.5px solid var(--coral-500);color:var(--ink-900);font-weight:var(--w-bold)}
button.warn{border-color:var(--late-edge);color:var(--late-ink)}
button.warn:hover{border-color:var(--late-dot);background:var(--late-bg)}
button.warn > svg[data-ic]{color:var(--late-ink)}
button:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px var(--primary)}
/* 링크형 단추 (변경 이력 · 펼치기 · 업무 화면에서 보기 · 필터 해제): 먹색 굵은 글 + 코랄 밑줄 */
button.link{height:auto;padding:2px 0;border:0;border-radius:3px;background:none;color:var(--ink-900);font-weight:var(--w-bold);text-decoration:underline;text-decoration-color:var(--coral-500);text-decoration-thickness:1.5px;text-underline-offset:4px}
button.link:hover{background:none;text-decoration-color:var(--ink-900)}
input,select,textarea{border:1px solid var(--line-input);border-radius:var(--r-control);padding:5px 8px;background:var(--bg-surface)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary),var(--focus-ring)}
input::placeholder,textarea::placeholder{color:var(--ink-400)}
.logo{display:block;width:auto;object-fit:contain}
/* 빈 화면 그림: 64px 원 + 아이콘 28 (q = 크림 원 · 기본 = 진행중 색 원) */
.e-ic{flex:none;width:64px;height:64px;border-radius:50%;background:var(--run-bg);color:var(--run-ink);display:flex;align-items:center;justify-content:center}
.e-ic svg[data-ic]{width:28px;height:28px}
.e-ic.q{background:var(--bg-cream);color:var(--ink-500)}
/* AI 비서 표식: 코랄 원 + 흰 별 */
.mark{flex:none;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--ai-mark);color:#fff;box-shadow:0 3px 8px -3px rgba(150,70,40,.55)}
.mark svg[data-ic]{width:16px;height:16px}
/* 로그인 (07) — 가운데 상자 420px. 오류 두 가지: 틀림 = 두 칸 빨간 테두리 + 아래 한 줄 / 연결 안 됨 등 = 위 빨간 상자 */
#login{min-height:100vh;display:flex;justify-content:center;align-items:flex-start;padding:170px 16px 40px;background:var(--page-glow);background-repeat:no-repeat}
#login .l-box{width:420px;max-width:100%;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-modal);box-shadow:var(--sh-card);padding:36px 36px 28px;display:flex;flex-direction:column;gap:22px}
#login .l-head{order:1;display:flex;flex-direction:column;gap:12px}
#login .l-head .logo{height:36px;align-self:flex-start}
#login h1{font-size:var(--fs-26);letter-spacing:-.5px;margin:0;line-height:1.3}
#login p.hint{color:var(--ink-500);font-size:var(--fs-15);margin:0}
#login .l-fields{order:3;display:flex;flex-direction:column;gap:14px}
#login .l-f{display:flex;flex-direction:column;gap:6px}
#login label{display:flex;align-items:center;gap:6px;font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-700)}
#login label svg[data-ic]{width:16px;height:16px;color:var(--ink-500)}
#login input{width:100%;height:46px;padding:0 14px;font-size:var(--fs-16);border-color:var(--line-input)}
#login input.bad{border:1.5px solid var(--late-dot);padding:0 13.5px}
#login input.bad:focus{box-shadow:var(--focus-ring)}
#login .go{order:5;height:50px;border-radius:var(--r-button);font-size:var(--fs-17)}
#login .l-foot{order:6;margin:0;font-size:var(--fs-13);color:var(--ink-500);text-align:center}
#login .err{display:none}
#login .err.field,#login .err.cred{order:4;display:block;margin-top:-16px;font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--late-ink)}
#login .err.box,#login .err.info{order:2;display:grid;grid-template-columns:22px minmax(0,1fr);column-gap:10px;row-gap:4px;padding:14px;background:var(--late-bg);border:1px solid var(--late-edge);border-radius:12px}
#login .err .l-ic{grid-row:1 / span 2;display:flex;align-items:flex-start;justify-content:center;padding-top:1px;color:var(--late-ink)}
#login .err .l-ic svg[data-ic]{width:20px;height:20px}
#login .err.info{background:var(--bg-cream);border-color:var(--line-200)}
#login .err.info .l-ic{color:var(--ink-700)}
#login .err .t{display:block;font-size:var(--fs-16);font-weight:var(--w-bold);color:var(--late-ink-strong);line-height:1.45}
#login .err.info .t{color:var(--ink-900)}
#login .err .s{display:block;font-size:var(--fs-14);line-height:1.55;color:var(--ink-700)}
/* 머리줄 (PC 56px): 로고 + 이름 · 메뉴 3개(아이콘 + 글자 · 고른 메뉴 = 코랄 밑줄) · AI 비서 칸(크림 알약 · 최대 600px) · 사용법 · 종 · 이름 님 + 로그아웃 */
#top{position:sticky;top:0;z-index:20;height:var(--h-header);background:var(--bg-surface);border-bottom:1px solid var(--line-200);box-shadow:0 10px 22px -20px rgba(90,60,40,.45);display:flex;align-items:center;gap:14px;padding:0 24px}
#top .brand{display:flex;align-items:center;gap:8px;flex:none}
#top .brand .logo{height:26px}
#top .brand .name{font-size:var(--fs-16);letter-spacing:-.3px;white-space:nowrap}
/* 베타 표시 (10-15 이학준 · 임시 이름 「영업 Mango」 옆 · 머리줄 · 로그인): 작은 알약 · 먹색 글 + 코랄 테두리 (신호색 아님).
   머리줄은 이름 바로 아래 (이름 옆에 두면 머리줄이 꽉 차 AI 비서 칸이 줄고 폰에서 이름이 잘림) · 로그인은 제목 옆 */
.beta{flex:none;display:inline-flex;align-items:center;height:18px;padding:0 7px;border:1px solid var(--mango-500);border-radius:var(--r-pill);background:var(--bg-surface);font-size:10px;font-weight:var(--w-bold);letter-spacing:.06em;line-height:1;color:var(--mango-ink);white-space:nowrap}
#top .brand .bn{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
#top .brand .bn .name{line-height:1.15}
#top .brand .beta{height:15px;padding:0 6px;font-size:9px;letter-spacing:.08em}
#login .l-head h1 .beta{margin-left:8px;vertical-align:5px}
/* 망고 그림 (이름 「영업 Mango」 표식 · 10-15): 색은 tokens.css --mango-* · 테두리 = 진한 망고 (흰 바탕 그래픽 3:1 넘김) · 잎 하나 */
.mg .mg-s1{stop-color:var(--mango-300)}
.mg .mg-s2{stop-color:var(--mango-400)}
.mg .mg-s3{stop-color:var(--mango-450)}
.mg .mg-body{stroke:var(--mango-500)}
.mg .mg-hi{stroke:var(--bg-surface);stroke-opacity:.6}
.mg .mg-stem{stroke:var(--stem-600)}
.mg .mg-leaf{fill:var(--leaf-500)}
.mg-slot{display:inline-flex;flex:none;align-items:center}
.mg-slot .mg{display:block}
#top .brand .name{display:inline-flex;align-items:center;gap:4px;letter-spacing:-.6px}   /* 망고 + 이름 한 줄 · 아래 작은 줄 = BETA VERSION (머리줄 폭을 안 늘림: AI 비서 칸 그대로) */
#top .brand .name .mg{width:18px;height:18px;margin:-1px 0 -1px -2px}
#login .l-head h1 .mg-slot{margin-right:8px;vertical-align:-7px}
#login .l-head h1 .mg-slot .mg{width:36px;height:36px}
/* 처음 불러올 때 「망고 따는 중…」 (망고가 살짝 흔들림 · 움직임 줄이기면 멈춤) */
.empty.mg-wait{display:flex;align-items:center;justify-content:center;gap:10px;padding:72px 16px;color:var(--ink-500);font-size:var(--fs-15)}
.mg-wait .mg{width:30px;height:30px;transform-origin:50% 20%;animation:mg-sway 1.4s ease-in-out infinite}
@keyframes mg-sway{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
/* 지연 0 = 숫자 칸 아이콘 자리 · 지연만 보기 빈 화면에 망고 */
.counts .c .ci.ci-mg{background:var(--mango-bg);box-shadow:none}
.counts .c .ci.ci-mg .mg{width:26px;height:26px}
.e-ic.mg-e{background:var(--mango-bg)}
.e-ic.mg-e .mg{width:40px;height:40px}
#menu{display:flex;align-self:stretch;flex:none;gap:0}
#menu button{position:relative;display:flex;align-items:center;gap:6px;border:0;background:none;padding:0 9px;color:var(--ink-700);border-radius:0;font-size:var(--fs-16);white-space:nowrap}
#menu button > svg[data-ic]{width:18px;height:18px;margin:0;color:var(--ink-500)}
#menu button:hover{background:none;color:var(--ink-900)}
#menu button.cur{color:var(--ink-900);font-weight:var(--w-bold)}
#menu button.cur > svg[data-ic]{color:var(--mango-500)}   /* 고른 메뉴 = 망고 밑줄 · 아이콘 (10-15) */
#menu button.cur::after{content:"";position:absolute;left:8px;right:8px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--mango-500)}
#menu button:focus-visible{box-shadow:inset 0 0 0 2px var(--primary)}
#top .me{flex:none;color:var(--ink-700);font-size:var(--fs-14);display:flex;align-items:center;gap:6px;white-space:nowrap}
#top .me b{color:var(--ink-900)}
#who .nim{color:var(--ink-500)}
#top .me button{height:36px;padding:0 12px;border-radius:var(--r-button);font-size:var(--fs-14)}
#top .me .guide{display:inline-flex;align-items:center;padding:0 11px}   /* [사용법] = 사용법 안내를 새 창으로 */
#top .me .guide > svg[data-ic]{width:15px;height:15px;margin:0 4px 0 -2px}
html{scroll-padding-top:72px}
/* 알림 (오른쪽 아래): 성공은 5초 뒤 사라짐(글자는 남김 · 화면에서만 숨김), 오류는 [닫기] 누를 때까지 */
#toast{display:none;position:fixed;right:32px;bottom:28px;z-index:50;width:460px;max-width:calc(100% - 32px);align-items:center;gap:14px;padding:14px 16px 14px 18px;background:var(--ink-900);color:#fff;border-radius:12px;box-shadow:0 18px 40px -12px rgba(40,26,18,.45)}
#toast.show{display:flex}
#toast .ic{flex:none;width:20px;height:20px;border-radius:50%;display:none;align-items:center;justify-content:center;font-size:var(--fs-13);font-weight:var(--w-bold);color:#fff}
#toast .ic.ok{background:var(--run-dot)}
#toast .ic.bad{background:var(--late-dot)}
#toast.good .ic.ok,#toast.bad .ic.bad{display:flex}
#notice{flex:1;min-width:0;font-size:var(--fs-15);line-height:1.45}
#notice .t{display:block;font-weight:var(--w-bold)}
#notice .s{display:block;font-size:var(--fs-14);color:var(--line-200)}
#toast .x{display:none;flex:none;height:36px;padding:0 14px;border:0;border-radius:var(--r-button);background:#fff;color:var(--ink-900);font-size:var(--fs-14);font-weight:var(--w-bold)}
#toast.bad .x{display:inline-flex;align-items:center}
/* 등록 직후 메일 못 보냄: [다시 보내기](흰 단추) + 닫기(✕ · 글자 「닫기」는 읽어 주기용) — 460px 안에서 「○○에게 메일을 보내지 못했습니다」 한 줄 */
#toast.has-r{gap:10px}
#toast .r{flex:none;display:inline-flex;align-items:center;height:36px;padding:0 14px;border:0;border-radius:var(--r-button);background:#fff;color:var(--ink-900);font-size:var(--fs-14);font-weight:var(--w-bold);white-space:nowrap}
#toast.has-r .x{width:32px;padding:0;justify-content:center;border:0;background:transparent;color:var(--line-200);font-size:0}
#toast.has-r .x::before{content:"✕";font-size:var(--fs-16);line-height:1}
/* 완료로 바꾸면 체크 자리에 망고가 톡 (0.6초 · transform · opacity 만 · a/b 번갈아 다시 튐 · 움직임 줄이기면 망고 없이 글만 = app.js calm) */
#toast .ic.mg{width:28px;height:28px;border-radius:0;background:none}
#toast .ic.mg .mg{width:28px;height:28px}
#toast.ripe .ic.ok{display:none}
#toast.ripe .ic.mg{display:flex}
#toast.ripe.a .ic.mg{animation:mg-pop-a .6s cubic-bezier(.34,1.56,.64,1) both}
#toast.ripe.b .ic.mg{animation:mg-pop-b .6s cubic-bezier(.34,1.56,.64,1) both}
@keyframes mg-pop-a{0%{opacity:0;transform:translateY(10px) scale(.4) rotate(-24deg)}60%{opacity:1;transform:translateY(-5px) scale(1.2) rotate(8deg)}100%{opacity:1;transform:none}}
@keyframes mg-pop-b{0%{opacity:0;transform:translateY(10px) scale(.4) rotate(-24deg)}60%{opacity:1;transform:translateY(-5px) scale(1.2) rotate(8deg)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){ #toast.ripe .ic.mg,.mg-wait .mg{animation:none} }
#toast.good.a{animation:toast-a .2s ease-out 5s forwards}
#toast.good.b{animation:toast-b .2s ease-out 5s forwards}
@keyframes toast-a{to{opacity:0;visibility:hidden}}
@keyframes toast-b{to{opacity:0;visibility:hidden}}
main{padding:12px 32px 40px}
/* 머리줄 아래 옅은 빛 띠 (body 바탕 색은 그대로 · 인쇄 때 끔) */
main#view{background:var(--page-glow);background-repeat:no-repeat}
body[data-view="tasks"] main{padding-top:0}
/* == 업무 목록 (01) ==
   맨 위 줄: 날짜 줄(PC · 「10월 13일 화요일 | WW42 · 기간」) + 오른쪽 [목록|달력] [+ 업무 등록] → 숫자 칸 4개(둥근 칸 · 이름 + 신호 아이콘 + 큰 세리프 숫자).
   숫자 칸을 누르면 그 상태로 필터함 · 고른 칸 = 그 신호 바탕 + 안쪽 1.5px 테두리 · 지연 1 이상이면 지연 칸만 옅은 붉은 면 + 붉은 숫자 */
.tbar{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"date act" "kpi kpi";align-items:center;gap:16px;padding:22px 0 18px}
.tbar > .t-date,.tbar > .t-title,.tbar > .t-head{grid-area:date;min-width:0}
.tbar > .tact{grid-area:act}
.tbar > .counts{grid-area:kpi}
.t-date{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px}
.t-date .td-d{font-size:var(--fs-22);letter-spacing:-.01em;white-space:nowrap}
.t-date .td-d .num-serif{font-size:var(--fs-num-l);line-height:1}
.t-date .td-wd{font-size:var(--fs-22);color:var(--ink-500);white-space:nowrap}
.t-date .td-wk{align-self:center;margin-left:4px;padding-left:14px;border-left:1px solid var(--line-control);font-size:var(--fs-15);color:var(--ink-500);white-space:nowrap}
.t-title{margin:0;font-size:var(--fs-22);letter-spacing:-.01em;line-height:1.3}
.counts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.counts.pc{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}   /* 보류 PJT 가 있으면 5칸 */
.counts .c{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"l ic" "n n";align-items:start;gap:0 8px;height:112px;margin:0;padding:16px 18px 14px 20px;border:1px solid var(--line-200);border-radius:var(--r-tile);background:var(--tile-grad);box-shadow:var(--sh-rest);color:var(--ink-700);text-align:left;white-space:nowrap;transition:box-shadow var(--t-fast) ease-out,border-color var(--t-fast) ease-out}
.counts button.c:not(.on):hover{background:var(--tile-grad);box-shadow:var(--sh-hover);border-color:var(--line-control)}
.counts .c .dot{display:none}
.counts .c .l{grid-area:l;min-width:0;padding-top:4px;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-15);font-weight:var(--w-bold);color:var(--ink-700)}
.counts .c .ci{grid-area:ic;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:11px}
.counts .c .ci svg[data-ic]{width:20px;height:20px}
.counts .c b{grid-area:n;align-self:end;font-family:var(--font-num);font-size:var(--fs-num-xl);font-variant-numeric:lining-nums tabular-nums;font-weight:var(--w-bold);line-height:1;letter-spacing:-.01em;color:var(--ink-900)}
.counts .c b::after{content:"건";margin-left:5px;font-family:var(--font);font-size:var(--fs-15);font-weight:var(--w-normal);letter-spacing:0;color:var(--ink-500)}
.counts.pc .c b::after{content:"개"}
.counts .c.s-doing .ci{background:var(--st-doing-bg);color:var(--st-doing-ink)}
.counts .c.s-late .ci{background:var(--late-bg);color:var(--late-ink)}
.counts .c.s-hold .ci{background:var(--st-stop-bg);color:var(--st-stop-ink)}
.counts .c.s-done .ci{background:var(--st-done-bg);color:var(--st-done-ink)}
.counts .c.s-cancel .ci{background:var(--st-off-bg);color:var(--st-off-ink)}
.counts .c.s-late:not(.zero){background:var(--tile-grad-late);border-color:var(--late-line)}
.counts button.c.s-late:not(.zero):not(.on):hover{background:var(--tile-grad-late);border-color:var(--late-edge)}
.counts .c.s-late:not(.zero) .ci{background:var(--bg-surface);box-shadow:0 0 0 1px var(--late-line)}
.counts .c.s-late:not(.zero) b{color:var(--late-ink)}
/* 고른 칸 = 그 신호 바탕 + 안쪽 1.5px 테두리 + 이름 신호 글자 */
.counts .c.on .l{font-weight:var(--w-bold)}
.counts .c.s-doing.on{background:var(--st-doing-bg);box-shadow:inset 0 0 0 1.5px var(--st-doing-dot),var(--sh-rest)}
.counts .c.s-doing.on .l{color:var(--st-doing-ink)}
.counts .c.s-late.on{background:var(--late-bg);box-shadow:inset 0 0 0 1.5px var(--late-dot),var(--sh-rest)}
.counts .c.s-late.on .l{color:var(--late-ink-strong)}
.counts .c.s-hold.on{background:var(--st-stop-bg);box-shadow:inset 0 0 0 1.5px var(--st-stop-dot),var(--sh-rest)}
.counts .c.s-hold.on .l{color:var(--st-stop-ink)}
.counts .c.s-done.on{background:var(--st-done-bg);box-shadow:inset 0 0 0 1.5px var(--st-done-dot),var(--sh-rest)}
.counts .c.s-done.on .l{color:var(--st-done-ink)}
.counts .c.s-cancel.on{background:var(--st-off-bg);box-shadow:inset 0 0 0 1.5px var(--st-off-dot),var(--sh-rest)}
.counts .c.s-cancel.on .l{color:var(--st-off-ink)}
.counts .c.on .ci{background:var(--bg-surface)}
.counts .c:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--primary)}
.counts.pc .c{cursor:default}
/* 업무 숫자 칸 = 칸(.kpi) 안에 단추(칸 전체) + 설명 줄(.k-s · 단추 밖 · 누르는 것 아님): 숫자 오른쪽 아래 14px 보조 글 · 넘치면 말줄임 */
.counts .kpi{position:relative;min-width:0}
.counts .kpi > .c{width:100%}
.counts .k-rng{position:absolute;top:14px;right:14px;height:32px;padding:0 8px;border:1px solid var(--line-control);border-radius:var(--r-control);background:var(--bg-surface);color:var(--ink-700);font:inherit;font-size:var(--fs-14);cursor:pointer}
.counts .k-rng:focus-visible{outline:0;box-shadow:var(--focus-ring)}
.counts .k-s{position:absolute;right:18px;bottom:16px;max-width:56%;font-size:var(--fs-14);line-height:1.4;color:var(--ink-500);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
/* 칸이 좁을 때 (AI 비서 판이 열려 목록이 줄어든 PC · 1279 이하 PC · 태블릿): 칸 138 · 설명 줄을 숫자 아래로 */
@media (min-width:768px) and (max-width:1279px){
  .counts .kpi > .c{height:138px}
  .counts .kpi > .c b{align-self:start;margin-top:6px}
  .counts .k-s{left:20px;right:18px;bottom:15px;max-width:none;text-align:left}
}
@media (min-width:1280px){
  #app.ai-open .counts .kpi > .c{height:138px}
  #app.ai-open .counts .kpi > .c b{align-self:start;margin-top:6px}
  #app.ai-open .counts .k-s{left:20px;right:18px;bottom:15px;max-width:none;text-align:left}
}
.tact{display:flex;align-items:center;gap:10px}
.tact .new{height:var(--h-button);padding:0 20px;font-size:var(--fs-15)}
/* 고르기 줄(세그먼트): 크림 길 위 흰 알약 · 고른 단추의 아이콘만 코랄 */
.modes{display:flex;height:var(--h-button);border:1px solid var(--line-200);border-radius:var(--r-pill);background:var(--bg-cream);padding:3px;gap:2px}
.modes button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:var(--r-pill);padding:0 14px;background:none;color:var(--ink-700);font-size:var(--fs-14);font-weight:var(--w-normal);white-space:nowrap}
.modes button > svg[data-ic]{margin:0;color:var(--ink-500)}
.modes button:hover{background:rgba(255,255,255,.65);border:0}
.modes button.on{border:0;background:var(--bg-surface);color:var(--ink-900);font-weight:var(--w-bold);box-shadow:0 1px 2px rgba(20,20,19,.08),0 0 0 1px var(--line-200)}
.modes button.on > svg[data-ic]{color:var(--coral-500)}
.modes button.on:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--primary)}
.sortbar{display:none}
/* 목록 상자: 필터 줄 → 머리글 → 줄 → 범례. 걸린 필터 = 흰 바탕 + 1.5px 코랄 테두리 + 먹색 굵은 글 + ✕ */
.lbox{background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-box);box-shadow:var(--sh-rest)}
.filters.tf{display:flex;gap:8px;align-items:center;padding:12px;border-bottom:1px solid var(--line-200)}
.fsel{flex:none;display:inline-flex;align-items:center;gap:8px;height:var(--h-control);max-width:280px;padding:0 12px;border:1px solid var(--line-control);border-radius:var(--r-control);background:var(--bg-surface);color:var(--ink-500);font-size:var(--fs-14)}
.fsel{position:relative}
.fsel select{appearance:none;-webkit-appearance:none;position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0 12px;border:0;border-radius:inherit;background:transparent;color:var(--ink-900);font-size:var(--fs-14);cursor:pointer;opacity:0}   /* 베타 1차: 알약을 꽉 채운 투명 select = 알약 전체가 누르는 칸 · 목록은 알약 바로 아래 */
.fsel .fv{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-900);pointer-events:none}
.fsel .fx{position:relative;z-index:1}
.fsel select:focus{box-shadow:none}
.fsel:focus-within{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary),var(--focus-ring)}
.fsel .fp{cursor:pointer;white-space:nowrap}
.fsel svg{flex:none;width:14px;height:14px;color:var(--ink-500)}
.fsel.set{border:1.5px solid var(--coral-500);background:var(--bg-surface);color:var(--ink-900);font-weight:var(--w-bold);padding:0 3.5px 0 11.5px}
.fsel.set .fv,.fsel.set .fp{background:transparent;color:var(--ink-900);font-weight:var(--w-bold)}
.fx{flex:none;height:28px;min-width:24px;padding:0 4px;border:0;border-radius:6px;background:none;color:var(--ink-700);font-size:var(--fs-13);font-weight:var(--w-normal)}
.fx:hover{background:rgba(20,20,19,.06)}
.fsearch{flex:1;min-width:140px;display:flex;align-items:center;gap:8px;height:var(--h-control);padding:0 4px 0 12px;border:1px solid var(--line-input);border-radius:var(--r-control);background:var(--bg-surface);color:var(--ink-500)}
.fsearch svg{flex:none;width:16px;height:16px}
.fsearch input{flex:1;min-width:0;height:100%;padding:0;border:0;background:transparent;font-size:var(--fs-14)}
.fsearch input:focus{box-shadow:none}
.fsearch:focus-within{border:2px solid var(--primary);padding:0 3px 0 11px;box-shadow:var(--focus-ring);color:var(--ink-500)}
.fsearch.set{border:1.5px solid var(--coral-500);padding:0 3.5px 0 11.5px;color:var(--ink-900)}
.filters .fsearch input.set{background:transparent;color:var(--ink-900);font-weight:var(--w-normal)}
.n-count{flex:none;padding:0 6px 0 2px;font-size:var(--fs-14);color:var(--ink-500);white-space:nowrap}
/* 머리글 · 줄: 40 · 업무 · 190 · 130 · 80 · 72 · 176 (줄 44px). 지연 · ASAP 줄 = 붉은 바탕 + 왼쪽 붉은 띠 + 굵은 제목 · 보류 줄 = 왼쪽 주황 띠 */
.row,.head{display:grid;grid-template-columns:40px minmax(0,1fr) 130px 130px 80px 72px 72px 176px;align-items:center;padding:0 12px}
.head{height:38px;background:var(--bg-sub);border-bottom:1px solid var(--line-200);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-500);white-space:nowrap}
.head .s{cursor:pointer;user-select:none}
.head .s:hover{color:var(--ink-900)}
.head .s.cur{color:var(--ink-900);font-weight:var(--w-bold)}
.head .h-due{padding-left:8px}
.row{height:var(--h-row);border-bottom:1px solid var(--line-100);background:var(--bg-surface);font-size:var(--fs-15);cursor:pointer;transition:background-color var(--t-fast) ease-out}
.row:hover{background:var(--bg-hover)}
.row.hot{background:var(--late-row);border-bottom-color:var(--late-line);box-shadow:inset 3px 0 0 var(--late-dot)}
.row.hot:hover{background:var(--late-bg)}
.row.hot .txt{font-weight:var(--w-bold)}
.row:has(> .dot.hold){box-shadow:inset 3px 0 0 var(--st-stop-dot)}
/* 지연 줄 30% 게이트 (app.js): 보이는 줄의 30% 넘게 지연 · ASAP 이면 붉은 줄 바탕만 끔 · 왼쪽 붉은 띠 · 굵은 제목 · 마감일 꼬리표는 그대로 */
.lbox.hot-many .row.hot{background:var(--bg-surface);border-bottom-color:var(--line-100)}
.lbox.hot-many .row.hot:hover{background:var(--bg-hover)}
.row .dot{width:10px;height:10px;margin-left:6px}
.row.is-done .txt,.row.mine-done .txt,.row.is-done .c-owner,.row.dim .c-owner{color:var(--ink-500)}
.row.dim .txt{color:var(--ink-500);text-decoration:line-through}
.dot{width:11px;height:11px;border-radius:50%;display:inline-block;flex:none}
.dot.doing{background:var(--doing)}.dot.hold{background:var(--hold)}.dot.late,.dot.asap{background:var(--late)}.dot.done{background:var(--done)}.dot.cancel{background:var(--cancel)}
/* 줄 · 상세 · 달력의 점: 같은 색 옅은 고리 3px (점 색은 그대로) */
.row .dot.doing,.pt-t .dot.doing,.ev-top .dot.doing{box-shadow:0 0 0 3px var(--st-doing-bg)}
.row .dot.hold,.pt-t .dot.hold,.ev-top .dot.hold{box-shadow:0 0 0 3px var(--st-stop-bg)}
.row .dot.late,.row .dot.asap,.pt-t .dot.late,.pt-t .dot.asap,.ev-top .dot.late,.ev-top .dot.asap{box-shadow:0 0 0 3px var(--late-bg)}
.row .dot.done,.pt-t .dot.done,.ev-top .dot.done{box-shadow:0 0 0 3px var(--st-done-bg)}
.row .dot.cancel{box-shadow:0 0 0 3px var(--st-off-bg)}
.txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-task{display:flex;align-items:center;gap:6px;min-width:0;padding-right:16px}
.c-task .txt{min-width:0}
.tags{flex:none;display:inline-flex;align-items:center;gap:6px}
/* 꼬리표 (알약 22 · 13px 굵게) */
.tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-tag);font-size:var(--fs-13);font-weight:var(--w-bold);line-height:1;white-space:nowrap}
.tag > svg[data-ic]{width:13px;height:13px;margin-right:4px}
.tag.push{background:var(--hold-bg);color:var(--hold-ink)}
.tag.shared{background:var(--bg-cream);color:var(--ink-700)}
.tag.pill{background:var(--run-bg);color:var(--run-ink)}
.tag.fail{background:var(--late-bg);color:var(--late-ink)}
.c-pjt,.c-owner{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .c-pjt{padding-right:12px;font-size:var(--fs-14);color:var(--ink-700)}
.row .c-pjt.none{color:var(--ink-400)}
.row .c-owner{padding-right:8px;font-size:var(--fs-14);color:var(--ink-700)}
.row .c-by,.row .c-created,.row .c-done{font-size:var(--fs-14);color:var(--ink-700);white-space:nowrap}
.row .c-created,.row .c-done{font-variant-numeric:tabular-nums}
/* 마감일 꼬리표 (알약 26 · 14px): ASAP · 지연(--late) · 보류(--hold) · 오늘(흰 바탕 + 먹색 안쪽 테) · 진행중(꼬리표 없음) · 완료 · 업무 취소(--done) */
.c-due,.c-due-m{justify-self:start;display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:var(--r-due);font-size:var(--fs-14);color:var(--ink-900);white-space:nowrap;font-variant-numeric:tabular-nums}
.row .c-due:not(.d-hot):not(.d-hold):not(.d-today):not(.d-off):not(.d-done){padding:0 8px}
.d-hot{background:var(--late-bg);color:var(--late-ink);font-weight:var(--w-bold)}
.d-hold{background:var(--st-stop-bg);color:var(--st-stop-ink);font-weight:var(--w-bold)}
.d-today{background:var(--bg-surface);box-shadow:inset 0 0 0 1.5px var(--ink-700);color:var(--ink-900);font-weight:var(--w-bold)}
.d-off{background:var(--st-off-bg);color:var(--st-off-ink);font-weight:var(--w-bold)}
.d-done{background:var(--st-done-bg);color:var(--st-done-ink);font-weight:var(--w-bold)}
.c-m,.c-due-m{display:none}
.c-sub{color:var(--sub)}
.due-late{color:var(--late);font-weight:bold}
.due-asap{color:var(--late);font-weight:bold}
.due-done{color:var(--mute)}
.ghead{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--soft);border-bottom:1px solid var(--line);font-weight:bold;font-size:var(--fs-13);user-select:none}
.ghead[data-act]{cursor:pointer}
.ghead .n{color:var(--sub);font-weight:normal}
.ghead .arrow{color:var(--mute);width:12px}
/* 묶음 머리줄 (담당자 · PJT · 상태 머리글을 누르면): ▼ + 이름 + 건수 + 급한 건수 */
.ghead.grp{height:40px;gap:10px;padding:0 16px;background:var(--bg-soft);border-bottom:1px solid var(--line-100);font-size:var(--fs-15);font-weight:var(--w-normal)}
.ghead.grp:hover{background:var(--bg-hover)}
.grp .arrow{width:auto;font-size:var(--fs-13);color:var(--ink-500)}
.grp .dot{width:9px;height:9px}
.grp .g-name{font-weight:var(--w-bold)}
.grp .g-name.st-late{color:var(--late-ink)}
.grp .g-name.st-hold{color:var(--st-stop-ink)}
.grp .g-name.st-doing{color:var(--st-doing-ink)}
.grp .g-name.st-done{color:var(--st-done-ink)}
.grp .g-name.st-cancel{color:var(--st-off-ink)}
.grp .n{font-size:var(--fs-14);color:var(--ink-500)}
.gtag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-tag);font-size:var(--fs-13);font-weight:var(--w-bold)}
.gtag.hot{background:var(--late-bg);color:var(--late-ink)}
.gtag.hold{background:var(--st-stop-bg);color:var(--st-stop-ink)}
.empty{padding:28px 10px;color:var(--sub);text-align:center}
/* 범례 (목록 상자 맨 아래) · AI 비서가 고른 목록 띠 */
.legend{display:flex;align-items:center;gap:18px;flex-wrap:wrap;min-height:44px;padding:10px 16px;font-size:var(--fs-13);color:var(--ink-500)}
.legend .l-i{display:inline-flex;align-items:center;gap:6px}
.legend .dot{width:8px;height:8px}
.legend .l-hint{margin-left:auto}
.ai-line{display:none;align-items:center;gap:8px;margin:12px 12px 0;padding:8px 12px;border-radius:12px;background:var(--bg-cream);font-size:var(--fs-14);color:var(--ink-700)}
.ai-line svg[data-ic]{width:16px;height:16px;color:var(--ink-500)}
#app.ai-filtered .ai-line{display:flex}
.ai-line button{font-size:var(--fs-14)}
/* == 08 빈 화면: 업무 없음(진행중 색 원 + 이번 주 완료 목록) · 필터 결과 없음(크림 원) == */
.t-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:52px 24px 44px;color:var(--ink-900);text-align:center}
.t-empty.no-hit{gap:8px;padding:40px 24px 44px}
.e-t{margin-top:6px;font-size:var(--fs-20);line-height:1.35}
.no-hit .e-t{margin-top:6px;font-size:var(--fs-20)}
.e-s{font-size:var(--fs-15);line-height:1.55;color:var(--ink-500)}
.e-btns{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px}
.e-btns button{height:var(--h-button);padding:0 20px;font-size:var(--fs-15)}
.wk-head{display:flex;align-items:baseline;gap:10px;padding:12px 16px;border-top:1px solid var(--line-200);border-bottom:1px solid var(--line-100);background:var(--bg-sub)}
.wk-head b{font-size:var(--fs-15)}
.wk-head span{font-size:var(--fs-14);color:var(--ink-500)}
/* == 02 업무 상세 = 오른쪽 판 (r2 · 10-15): 오른쪽에서 밀려 나오는 520px 판 · 목록 위에 겹침 (목록은 그대로 · 옅은 그림자) ==
   머리(제목 · 이전/다음 · [닫기]) 고정 → 몸(판 안 스크롤): 제목 줄 → 정보 → 담당자별 상태 → 처리 내용 → 메일 못 보냄 띠 → 아래 띠 → 변경 이력(판 안에서 펼침).
   고른 줄 = 크림 바탕 + 왼쪽 먹색 막대. AI 비서 판(z 15)과 겹치면 나중에 연 것이 위 (.under = 아래로) */
#view .row.sel,#view .row.sel:hover{background:var(--bg-cream);box-shadow:inset 3px 0 0 var(--primary)}
.dpanel{position:fixed;top:var(--h-header);right:0;bottom:0;z-index:16;width:520px;max-width:100%;display:flex;flex-direction:column;background:var(--bg-surface);border-left:1px solid var(--line-200);box-shadow:-24px 0 48px -24px rgba(60,40,30,.30)}
.dpanel.under{z-index:14}
.dpanel.in{animation:dp-in var(--t-slow) ease-out}
@keyframes dp-in{from{transform:translateX(28px);opacity:0}to{transform:none;opacity:1}}
@keyframes dp-up{from{transform:translateY(36px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){ .dpanel.in{animation:none} }
.dp-head{flex:none;display:flex;align-items:center;gap:6px;height:56px;padding:0 12px 0 20px;border-bottom:1px solid var(--line-100);background:linear-gradient(180deg,var(--bg-soft) 0%,var(--bg-surface) 100%)}
.dp-t{display:flex;align-items:center;gap:8px;margin:0 auto 0 0;font-size:var(--fs-16)}
.dp-t > svg[data-ic]{width:18px;height:18px;color:var(--coral-500)}
.dp-nav{display:flex;gap:4px}
.dp-mv{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0}
.dp-mv > svg[data-ic]{width:18px;height:18px;margin:0}
.dp-mv.up > svg[data-ic]{transform:rotate(-90deg)}
.dp-mv.down > svg[data-ic]{transform:rotate(90deg)}
.dp-mv:disabled{opacity:.4;cursor:default}
.dp-x{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;font-size:var(--fs-14)}
.dp-x > svg[data-ic]{width:16px;height:16px;margin:0}
.dp-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.detail{background:var(--bg-surface)}
.d-title{display:grid;grid-template-columns:12px minmax(0,1fr);gap:8px 12px;align-items:start;padding:18px 24px 14px;border-bottom:1px solid var(--line-100)}
.d-title > .dot{margin-top:8px}
.d-tt{margin:0;font-size:var(--fs-17);line-height:1.45;font-weight:var(--w-bold);color:var(--ink-900);overflow-wrap:anywhere}
.d-title > .tags{grid-column:2;flex-wrap:wrap}
#app #dpanel .d-body{grid-template-columns:minmax(0,1fr)}
#dpanel .meta,#dpanel .owners{border-right:0}
#dpanel .owners,#dpanel .d-notes{grid-column:auto;border-top:1px solid var(--line-100)}
#dpanel .d-foot{border-radius:0}
.detail .full{padding:14px 24px;border-bottom:1px solid var(--line-100);font-size:var(--fs-15);line-height:1.6;white-space:pre-wrap}
.d-body{display:grid;grid-template-columns:300px 280px minmax(0,1fr)}
.meta{display:grid;grid-template-columns:56px minmax(0,1fr);gap:12px;align-content:start;padding:18px 22px 20px 24px;background:var(--bg-soft);border-right:1px solid var(--line-100);font-size:var(--fs-15);line-height:1.45}
.meta .kv{display:contents}
.meta > .d-h{grid-column:1 / -1}
.meta .k{font-size:var(--fs-14);line-height:21px;color:var(--ink-500)}
.meta .v.none{color:var(--ink-400)}
.meta .v.hot{color:var(--late-ink);font-weight:var(--w-bold)}
.v-sub,.o-d{font-size:var(--fs-13);font-weight:var(--w-normal);color:var(--ink-500)}
.owners{display:flex;flex-direction:column;gap:12px;padding:18px 22px 20px;border-right:1px solid var(--line-100)}
/* 카드 안 소제목: 아이콘 17 + 14px 굵게 */
.d-h{display:flex;align-items:center;gap:7px;font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-700)}
.d-h > svg[data-ic]{width:17px;height:17px;color:var(--ink-500)}
.d-hs{font-size:var(--fs-13);font-weight:var(--w-normal);color:var(--ink-500)}
.o-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--fs-15)}
.o-all{font-size:var(--fs-13);color:var(--ink-500)}
/* 진척 막대 8px: 담당자 수만큼 칸 · 완료한 칸만 진행중 색 + 오른쪽 「완료 1/2」 */
.o-prog{display:flex;align-items:center;gap:10px;font-size:var(--fs-13);color:var(--ink-500)}
.o-bar{flex:1;display:flex;gap:3px;height:8px}
.o-bar i{flex:1;border-radius:4px;background:var(--line-100)}
.o-bar i.on{background:var(--mango-500)}   /* 완료한 칸 = 익은 망고 색 (10-15) */
.o-pn{flex:none;font-variant-numeric:tabular-nums}
/* AI 비서로 한 줄의 「누가」: 이름 + 크림 알약(작은 AI 비서 표식 + 「AI 비서」) */
.ai-by{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px 0 2px;border-radius:var(--r-pill);background:var(--bg-cream);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-700);vertical-align:1px;white-space:nowrap}
.ai-by .mark{width:16px;height:16px;box-shadow:none}
.ai-by .mark svg[data-ic]{width:10px;height:10px}
/* 읽음 확인 표시 (10-14): 담당 이름 아래 작은 한 줄 · 회색 · 「아직 안 봄」 은 주의 색 */
.o-one{display:flex;flex-direction:column;gap:2px;padding-bottom:10px;border-bottom:1px dashed var(--line-100)}
.o-one:last-of-type{padding-bottom:0;border-bottom:0}
.o-seen{font-size:var(--fs-13);line-height:1.4;color:var(--ink-500)}
.o-seen.wait{color:var(--hold-ink)}
/* 상태 칩 (알약 24) */
.st{flex:none;display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:var(--fs-13);font-weight:var(--w-bold);white-space:nowrap;line-height:1}
.st .dot{width:7px;height:7px}
.st.doing{background:var(--st-doing-bg);color:var(--st-doing-ink)}
.st.hold{background:var(--st-stop-bg);color:var(--st-stop-ink)}
.st.late{background:var(--late-bg);color:var(--late-ink)}
.st.done{background:var(--st-done-bg);color:var(--st-done-ink)}
.st.cancel{background:var(--st-off-bg);color:var(--st-off-ink)}
.st.cancel{text-decoration:line-through}
.d-notes{display:flex;flex-direction:column;gap:14px;min-width:0;padding:18px 24px 20px}
/* 처리 내용 = 세로 시간줄 (최신이 위) */
.note{position:relative;display:flex;flex-direction:column;gap:3px;padding-left:22px}
.note::before{content:"";position:absolute;left:0;top:5px;width:10px;height:10px;border-radius:50%;background:var(--bg-surface);box-shadow:inset 0 0 0 2px var(--ink-500)}
.note + .note::after{content:"";position:absolute;left:4px;top:-14px;height:17px;width:2px;border-radius:1px;background:var(--line-100)}
.n-h{font-size:var(--fs-13);color:var(--ink-500)}
.n-h b{font-size:var(--fs-14);color:var(--ink-900)}
.n-t{font-size:var(--fs-15);line-height:1.6;white-space:pre-wrap}
.n-none{font-size:var(--fs-14);color:var(--ink-500)}
/* 담당자 본인만: 내 상태 3칸 + 처리 내용 쓰기 + [저장] */
.mine{display:flex;flex-direction:column;gap:10px;padding:16px 18px;border:1px solid var(--line-200);border-radius:var(--r-card);background:var(--bg-soft)}
.seg3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;height:42px;padding:3px;border:1px solid var(--line-200);border-radius:var(--r-pill);background:var(--bg-cream)}
.seg3 button{display:flex;align-items:center;justify-content:center;gap:6px;padding:0;border:0;border-radius:var(--r-pill);background:none;color:var(--ink-700);font-size:var(--fs-15);font-weight:var(--w-normal)}
.seg3 button:hover{background:rgba(255,255,255,.65);border:0}
.seg3 button .dot{width:8px;height:8px}
.seg3 button.st-doing.on{background:var(--st-doing-bg);color:var(--st-doing-ink);box-shadow:inset 0 0 0 1.5px var(--st-doing-dot);font-weight:var(--w-bold)}
.seg3 button.st-hold.on{background:var(--st-stop-bg);color:var(--st-stop-ink);box-shadow:inset 0 0 0 1.5px var(--st-stop-dot);font-weight:var(--w-bold)}
.seg3 button.st-done.on{background:var(--st-done-bg);color:var(--st-done-ink);box-shadow:inset 0 0 0 1.5px var(--st-done-dot);font-weight:var(--w-bold)}
.seg3 button.on{border:0}
.seg-row{display:flex;align-items:center;gap:10px}   /* 상태 칩(고르기) + [바꾸기] — 베타 1차 */
.seg-row .seg3{flex:1 1 auto;min-width:0}
.seg-row > button{flex:none;height:42px;padding:0 20px;font-size:var(--fs-15)}
.seg3 button.now:not(.on){color:var(--ink-900);text-decoration:underline;text-underline-offset:3px}   /* 다른 칩을 고른 동안 지금 상태 표시 */
.mine textarea{width:100%;min-height:72px;padding:10px 12px;border-radius:12px;font-size:var(--fs-16);line-height:1.5;resize:vertical}
.mine-f{display:flex;align-items:center;justify-content:space-between;gap:12px}
.mine-f button{flex:none;height:var(--h-button);padding:0 22px;font-size:var(--fs-15)}
/* 메일: 못 보냄 = 붉은 띠(경고 아이콘 + 진한 붉은 글) + [다시 보내기] · 보냄 = 아래 띠 한 줄 (점) */
.detail .mail.bad{display:flex;align-items:center;gap:12px;padding:10px 24px;border-top:1px solid var(--late-edge);background:var(--late-bg);font-size:var(--fs-14);color:var(--late-ink-strong)}
.mail.bad .ic{flex:none;width:22px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--late-ink)}
.mail.bad .ic svg[data-ic]{width:20px;height:20px}
.mail.bad .m-t{flex:0 1 auto;min-width:0}
.mail.bad button{flex:none;height:34px;padding:0 14px;border:1px solid var(--late-edge);border-radius:var(--r-button);background:var(--bg-surface);color:var(--late-ink);font-size:var(--fs-14);font-weight:var(--w-bold)}
.mail.bad .sending{flex:none;font-weight:var(--w-bold)}
.d-foot{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;padding:10px 14px 10px 24px;border-top:1px solid var(--line-100);border-radius:0 0 var(--r-card) var(--r-card);background:var(--bg-sub);font-size:var(--fs-14);color:var(--ink-700)}
.detail.h-open .d-foot{border-radius:0}
.d-foot .mail{display:inline-flex;align-items:center;gap:7px}
.d-foot .mail > svg[data-ic]{width:17px;height:17px;color:var(--run-ink)}
.d-foot .mail.maybe > svg[data-ic]{color:var(--done-ink)}
.d-foot .link{display:inline-flex;align-items:center;font-size:var(--fs-14)}
.d-foot .link > svg[data-ic],.plegend .link > svg[data-ic]{margin:0 5px 0 0;color:var(--ink-500)}
.d-hint{margin-left:auto;font-size:var(--fs-13);color:var(--ink-500)}
.d-btns{display:flex;gap:8px;margin-left:auto}
.d-hint + .d-btns{margin-left:0}
.d-btns button{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 16px;background:var(--bg-surface);font-size:var(--fs-14)}
.d-btns button.warn{border-color:var(--late-edge);color:var(--late-ink)}
.d-btns button.warn:hover{border-color:var(--late-dot);background:var(--late-bg)}
.d-btns button.warn.sure{border-color:var(--late-ink);background:var(--late-ink);color:#fff;font-weight:var(--w-bold)}
.d-btns button.warn.sure:hover{border-color:var(--late-ink-strong);background:var(--late-ink-strong)}
.d-btns.sure{flex-basis:100%;justify-content:flex-end;align-items:center}
/* 업무 취소 확인: 묻는 줄(경고 아이콘 + 굵은 글) + [그대로 두기][업무 취소 확인] */
.d-btns .c-ask{align-self:center;display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-900)}
.d-btns .c-ask > svg[data-ic]{width:16px;height:16px;color:var(--late-ink)}
.d-btns button.warn.sure > svg[data-ic]{color:#fff}
/* 업무 상세 아래 띠 오른쪽 묶음 (안내 + 등록자 단추): 좁으면 묶음째 다음 줄 오른쪽으로 */
.d-rt{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px 14px}
.d-rt .d-hint,.d-rt .d-btns{margin-left:0}
.d-rt:has(> .d-btns.sure){display:contents}   /* 업무 취소 확인 중: 안내는 첫 줄 오른쪽 · 묻는 줄은 다음 줄 가득 */
.d-rt:has(> .d-btns.sure) .d-hint{margin-left:auto}
.hist{display:flex;flex-direction:column;gap:6px;margin:0;padding:12px 24px 16px;list-style:none}
.hist li{display:grid;grid-template-columns:100px 64px minmax(0,1fr);gap:8px;font-size:var(--fs-14);line-height:1.5}
.hist .h-at{color:var(--ink-500);font-variant-numeric:tabular-nums}
/* 좁은 PC · 태블릿 (768~1180) · AI 비서 패널이 열려 목록이 줄어든 PC: 칸을 좁힘 (999 이하는 등록자 · 등록일 숨김) */
@media (min-width:768px) and (max-width:1180px){
  .row,.head{grid-template-columns:36px minmax(0,1fr) 100px 110px 70px 64px 64px 150px}
  .d-body{grid-template-columns:260px 220px minmax(0,1fr)}
}
@media (min-width:768px) and (max-width:999px){
  .row,.head{grid-template-columns:36px minmax(0,1fr) 110px 100px 150px}
  .row .c-by,.row .c-created,.row .c-done,.head .h-by,.head .h-created,.head .h-done{display:none}
  .d-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .d-notes{grid-column:1 / -1;border-top:1px solid var(--line-100)}
  .owners{border-right:0}
}
@media (min-width:1280px){
  #app.ai-open .row,#app.ai-open .head{grid-template-columns:36px minmax(0,1fr) 100px 110px 70px 64px 64px 150px}
  #app.ai-open .d-body{grid-template-columns:262px 230px minmax(0,1fr)}
}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:0 0 10px}   /* PJT 현황 묶기 줄 */
/* AI 비서 칸 (머리줄 가운데 · 크림 알약 42px): AI 표식 → 「AI 비서」 → 세로 선 → 입력칸 → [물어보기](먹색). 누르면 흰 바탕 + 먹색 테두리 + 초점 번짐.
   예시 칩은 입력칸을 누를 때만 아래로 펼침 (#ai.ex-open) */
#ai{flex:1;min-width:0;display:flex;justify-content:center;position:relative}
#ai .bar{width:100%;max-width:600px;height:42px;border:1px solid var(--line-200);border-radius:var(--r-pill);background:var(--bg-cream);display:flex;align-items:center;gap:10px;padding:0 5px 0 6px;transition:background-color var(--t-fast) ease-out,border-color var(--t-fast) ease-out}
#ai:focus-within .bar,#app.ai-open #ai .bar{border-color:var(--primary);background:var(--bg-surface);box-shadow:var(--focus-ring)}
#ai .lab,#ai-answer .lab{flex:none;font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-900);white-space:nowrap;line-height:1.3}
#ai .lab{padding-right:12px;border-right:1px solid var(--line-control)}
#ai input{flex:1;min-width:0;height:100%;border:0;padding:0;background:transparent;font-size:var(--fs-15);box-shadow:none}
#ai input:focus{box-shadow:none}
#ai .bar button{flex:none;height:32px;padding:0 16px;border-radius:var(--r-button);font-size:var(--fs-14)}
#ai .ex{display:none;position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);width:100%;max-width:600px;z-index:25;flex-direction:column;gap:10px;padding:14px 16px 16px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-card);box-shadow:var(--sh-float)}
#ai.ex-open .ex{display:flex}
#ai .ex .say{font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-500)}
#ai .ex .say.bad{color:var(--late-ink);font-weight:var(--w-bold)}
#ai .ex .chips,#ai-answer .chips{display:flex;flex-wrap:wrap;gap:8px}
/* 예시 칩: 흰 알약 40 + 오른쪽 코랄 화살표 */
#ai .ex button,#ai-answer .chips button{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px 0 16px;border:1px solid var(--line-control);border-radius:var(--r-pill);background:var(--bg-surface);color:var(--ink-900);font-size:var(--fs-15);white-space:nowrap}
#ai .ex button > svg[data-ic],#ai-answer .chips button > svg[data-ic]{order:2;width:15px;height:15px;margin:0;color:var(--coral-500)}
/* [내 질문 기록] (10-19): 펼침 단추 + 「질문은 관리자가 볼 수 있습니다」 한 줄 · 목록 = 줄바꿈 되는 글 단추 (폰 넘침 없음) */
#ai .ex .ai-mine-h{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding-top:8px;border-top:1px solid var(--line-100)}
#ai .ex .ai-mine-h button{height:32px;padding:0 12px;font-size:var(--fs-14)}
#ai .ex .ai-seen{font-size:var(--fs-13);color:var(--ink-500)}
#ai .ex .ai-mine-list{display:flex;flex-direction:column;gap:4px;max-height:260px;overflow-y:auto}
#ai .ex .ai-mine-list button{display:flex;justify-content:space-between;align-items:baseline;gap:10px;height:auto;min-height:36px;padding:6px 12px;border-radius:var(--r-button);white-space:normal;text-align:left;overflow-wrap:anywhere;font-size:var(--fs-14)}
#ai .ex .ai-mine-list .at{flex:none;font-size:var(--fs-13);color:var(--ink-500);font-variant-numeric:tabular-nums}
#ai .ex .ai-mine-empty{font-size:var(--fs-13);color:var(--ink-500)}
/* AI 비서 답: PC = 머리줄 아래 오른쪽 옆 패널 420px (1280px 이상만 목록이 비켜 줄어듦 · 그 아래는 목록 위에 겹침: 줄이면 업무 칸이 0px) · 폰 = 아래 입력줄 위로 올라오는 판 */
#ai-answer{position:fixed;top:var(--h-header);right:0;bottom:0;width:var(--ai-w);max-width:100%;z-index:15;background:var(--bg-surface);border-left:1px solid var(--line-200);box-shadow:var(--sh-panel);display:flex;flex-direction:column}
:root{--ai-w:clamp(420px,calc(100vw - 860px),560px)}   /* 베타 1차: 판 560px · 1440 미만은 목록이 720px 밑으로 안 줄게 (1280 = 420) */
@media (min-width:1280px){ #app.ai-open main{margin-right:var(--ai-w)} }
/* 태블릿 768~1099: [사용법] 칸만큼 AI 비서 입력칸이 줄지 않게 칸 사이 · 여백을 좁히고 「님」 · 메뉴 아이콘을 숨김 (폰과 같음 · 10-15) */
/* 좁은 PC: AI 비서 입력칸이 줄지 않게 1439 이하는 「AI 비서」 글자(AI 표식은 남김) · 1279 이하는 메뉴 아이콘도 숨김 */
@media (min-width:768px) and (max-width:1439px){ #ai .lab{display:none} }
@media (min-width:768px) and (max-width:1279px){ #menu button > svg[data-ic]{display:none} }
@media (min-width:768px) and (max-width:1099px){ #top{gap:10px;padding:0 16px} #top .brand .bn,#top .brand .name{display:none} #menu button{padding:0 8px} #top .me .guide > svg[data-ic]{display:none} #top .me{gap:6px} #top .me .guide{padding:0 8px} #who .nim{display:none} #ai .bar button{padding:0 12px} #ai .mark{display:none}
  .t-date .td-wk{flex-basis:100%;margin-left:0;padding-left:0;border-left:0} .counts .c{padding:14px 14px 12px 16px} .counts .c .l{font-size:var(--fs-14)} }
#ai-answer .grip{display:none}
#ai-answer .ai-head{flex:none;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 14px 0 20px;border-bottom:1px solid var(--line-100);background:linear-gradient(180deg,var(--bg-soft) 0%,var(--bg-surface) 100%)}
#ai-answer .ttl{display:flex;align-items:center;gap:10px;font-size:var(--fs-17)}
#ai-answer .ttl .lab{font-size:var(--fs-17)}
#ai-answer .ai-head button{height:36px;padding:0 14px;font-size:var(--fs-14)}
#ai-answer .ai-body{flex:1;overflow:auto;padding:20px 20px 28px;display:flex;flex-direction:column;gap:14px}
#ai-answer .ai-q{align-self:flex-end;max-width:86%;background:var(--bg-cream);border-radius:18px 18px 6px 18px;padding:10px 14px;font-size:var(--fs-15);white-space:pre-wrap}
#ai-answer .ai-box{flex:none;border:1px solid var(--line-200);border-radius:var(--r-card);overflow:hidden;background:var(--bg-surface);box-shadow:var(--sh-rest)}   /* 줄지 않음 → 길면 답 판이 내려감 (카드가 잘리지 않게) */
#ai-answer.bad .ai-box{border-color:var(--late-edge);background:var(--bg-surface)}
#ai-answer .ai-main{padding:14px 16px;display:flex;flex-direction:column;gap:4px}
#ai-answer .ai-sum{font-size:var(--fs-20);font-weight:var(--w-bold);line-height:1.4;white-space:pre-wrap}   /* 첫 줄 크게 (베타 1차) */
#ai-answer .ev-tg{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;min-height:40px;margin:2px 0 -6px;padding:0 4px;border:0;background:none;color:var(--ink-500);font-size:var(--fs-14)}
#ai-answer .ev-tg > svg[data-ic]{width:14px;height:14px}
#ai-answer .ev-tg[aria-expanded="true"] > svg[data-ic]{transform:rotate(180deg)}
#ai-answer.bad .ai-sum{color:var(--late-ink-strong)}
#ai-answer .ai-sum > svg[data-ic]{width:18px;height:18px;margin:-3px 7px 0 0;color:var(--late-ink)}
#ai-answer.wait .ai-sum{font-weight:var(--w-normal);color:var(--ink-500)}
#ai-answer .ai-more{font-size:var(--fs-14);color:var(--ink-500);line-height:1.6;white-space:pre-wrap}
/* AI 비서 표 (10-15 r2): 13~14px · 머리줄 고정 · 가로 · 세로 스크롤은 표 상자 안에서만 (답 판 · 화면은 안 밀림) */
#ai-answer .ai-tbl{border-top:1px solid var(--line-100);min-width:0}
#ai-answer .tbl-scroll{max-height:420px;overflow:auto;-webkit-overflow-scrolling:touch}
#ai-answer .ai-tbl table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:var(--fs-13);line-height:1.45}
#ai-answer .ai-tbl th{position:sticky;top:0;z-index:1;background:var(--bg-soft);color:var(--ink-700);font-weight:var(--w-bold);text-align:left;white-space:nowrap;padding:8px 10px;border-bottom:1px solid var(--line-200)}
#ai-answer .ai-tbl td{padding:7px 10px;border-bottom:1px solid var(--line-100);color:var(--ink-900);white-space:nowrap;vertical-align:top}
#ai-answer .ai-tbl td.wide{white-space:normal;min-width:180px;max-width:320px;overflow-wrap:anywhere}
#ai-answer .tbl-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-top:1px solid var(--line-100)}
#ai-answer .tbl-n{font-size:var(--fs-14);color:var(--ink-500)}
#ai-answer .tbl-foot button{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;font-size:var(--fs-14)}
#ai-answer .tbl-foot button > svg[data-ic]{width:15px;height:15px}
#ai-answer .tbl-foot{flex-wrap:wrap}
#ai-answer .tbl-gets{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;min-width:0}
#ai-answer .ai-tbl td.pre{white-space:pre-wrap}
#ai-answer .tbl-fold summary{cursor:pointer;list-style:none}
#ai-answer .tbl-fold summary::-webkit-details-marker{display:none}
#ai-answer .tbl-fold .pv{display:block}
#ai-answer .tbl-more{display:inline-block;margin-top:2px;color:var(--ink-500);text-decoration:underline;font-size:var(--fs-13)}
#ai-answer .tbl-fold[open] .tbl-more{display:none}
/* 「PJT 없음」 업무에 PJT 붙이기 (10-19) · PJT 목록 「담당자가 만든 PJT」 꼬리표 (회색 · 코랄 아님) */
.meta .pj-att{grid-column:2;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
.meta .pj-att .psel,.meta .pj-att input{min-width:0;max-width:100%}
.meta .pj-att input{flex:1 1 140px;min-height:36px;padding:0 10px;border:1px solid var(--line-200);border-radius:8px;font-size:var(--fs-14)}
.meta .pj-att button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;font-size:var(--fs-14)}
.p-made{display:inline-block;padding:0 6px;border:1px solid var(--line-200);border-radius:999px;color:var(--ink-500);font-size:var(--fs-12);font-weight:400;vertical-align:middle}
#ai-answer .ai-ev{padding:12px 16px;border-top:1px solid var(--line-100);display:flex;flex-direction:column;gap:4px}
#ai-answer .ev-top{display:flex;align-items:flex-start;gap:8px;min-width:0}
#ai-answer .ev-top .dot{margin-top:6px}
/* 근거 아랫줄: 담당자 · 처리 내용 (왼쪽) + 마감일 꼬리표 (오른쪽) */
#ai-answer .ev-bot{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-width:0;padding-left:17px}
#ai-answer .ev-bot .ev-sub{flex:1;min-width:0;padding-left:0}
#ai-answer .ev-top .dot{width:9px;height:9px;flex:none}
#ai-answer .ev-t{flex:1;min-width:0;font-size:var(--fs-15);font-weight:var(--w-bold);line-height:1.4;overflow-wrap:anywhere}
#ai-answer .ev-due{flex:none;font-size:var(--fs-13);padding:2px 0;white-space:nowrap}
#ai-answer .ev-due.hot{display:inline-flex;align-items:center;height:24px;font-weight:var(--w-bold);padding:0 9px;border-radius:var(--r-due);background:var(--late-bg);color:var(--late-ink)}
#ai-answer .ev-sub{font-size:var(--fs-13);color:var(--ink-500);padding-left:17px;line-height:1.55;white-space:pre-line;overflow-wrap:anywhere}
#ai-answer .ev-more{padding:8px 16px;border-top:1px solid var(--line-100);font-size:var(--fs-13);color:var(--ink-500)}
#ai-answer .ai-band{padding:10px 16px;border-top:1px solid var(--line-100);background:var(--bg-cream);display:flex;align-items:center;gap:8px;font-size:var(--fs-14);color:var(--ink-700)}
#ai-answer .ai-band > svg[data-ic]{width:16px;height:16px;color:var(--ink-500)}
#ai-answer .ai-band > span{flex:1;min-width:0}
#ai-answer .ai-band button{flex:none;height:auto;border:0;background:none;padding:2px 0;color:var(--ink-900);font-weight:var(--w-bold);font-size:inherit;border-radius:4px;text-decoration:underline;text-decoration-color:var(--coral-500);text-decoration-thickness:1.5px;text-underline-offset:4px}
#ai-answer .ai-band .phone-only{display:none}
/* AI 비서 실행 카드 (10-14 밤): 「실행할 일」(확인 카드) · 「한 일」 · 「다시 알려 주세요」 · 「하지 못한 일」 — 줄 = 서버가 만든 글 그대로, 긴 글은 줄바꿈 */
#ai-answer .ai-x{border-top:1px solid var(--line-100)}
#ai-answer .x-head{display:flex;align-items:center;gap:8px;padding:12px 16px 10px}
#ai-answer .x-head > svg[data-ic]{width:18px;height:18px;color:var(--ink-500)}
#ai-answer .ai-x.did .x-head > svg[data-ic]{color:var(--run-ink)}
#ai-answer .ai-x.no .x-head > svg[data-ic]{color:var(--late-ink)}
#ai-answer .x-h{font-size:var(--fs-15);font-weight:var(--w-bold)}
#ai-answer .x-n{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-pill);background:var(--bg-cream);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-700)}
#ai-answer .x-list{list-style:none;margin:0;padding:0 12px 12px;display:flex;flex-direction:column;gap:8px}
#ai-answer .x-it{display:flex;flex-direction:column;gap:3px;min-width:0;padding:10px 12px 11px;border:1px solid var(--line-200);border-radius:12px;background:var(--bg-soft)}
#ai-answer .x-it.bad{border-color:var(--late-edge);background:var(--late-bg)}
#ai-answer .x-top{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:2px}
#ai-answer .x-t{font-size:var(--fs-15);font-weight:var(--w-bold)}
/* 이유 꼬리표 (신호색 아님): 흰 알약 + 고르기 선 + 13px 굵게 */
#ai-answer .x-why{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 9px;border:1px solid var(--line-control);border-radius:var(--r-pill);background:var(--bg-surface);font-size:var(--fs-13);font-weight:var(--w-bold);line-height:1;color:var(--ink-700)}
#ai-answer .x-why > svg[data-ic]{width:14px;height:14px;color:var(--ink-500)}
#ai-answer .x-l{font-size:var(--fs-14);color:var(--ink-700);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
#ai-answer .x-l:first-of-type{font-size:var(--fs-15);color:var(--ink-900)}
#ai-answer .x-note{font-size:var(--fs-13);color:var(--ink-500);line-height:1.5;overflow-wrap:anywhere}
#ai-answer .x-res{display:flex;align-items:center;gap:5px;margin-top:3px;font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--run-ink)}
#ai-answer .x-res > svg[data-ic]{width:15px;height:15px}
#ai-answer .x-it.bad .x-res{color:var(--late-ink)}
#ai-answer .ai-x.ask .x-it,#ai-answer .ai-x.no .x-it{background:var(--bg-surface)}
#ai-answer .x-band{padding:10px 12px 10px 16px;border-top:1px solid var(--line-100);background:var(--bg-sub);display:flex;align-items:center;flex-wrap:wrap;gap:8px}
#ai-answer .x-b{flex:1 1 140px;min-width:0;font-size:var(--fs-13);color:var(--ink-500)}
#ai-answer .x-b.bad{color:var(--late-ink);font-weight:var(--w-bold)}
#ai-answer .x-band button{height:36px;padding:0 14px;font-size:var(--fs-14)}
#ai-answer .x-band button.primary{padding:0 18px}
#ai-answer .x-band button{display:inline-flex;align-items:center;flex:none;white-space:nowrap}
#ai-answer .x-res > svg[data-ic]{flex:none}
@media (min-width:768px){ #ai-answer .x-band{flex-wrap:nowrap} #ai-answer .x-b{flex:1 1 0}
  #ai-answer .x-band:has(> button:nth-of-type(3)){flex-wrap:wrap;justify-content:flex-end} #ai-answer .x-band:has(> button:nth-of-type(3)) .x-b{flex:1 0 100%} }   /* 단추 3개([고치기][취소][실행]) = 안내는 윗줄 · 단추는 아랫줄 오른쪽 */
#ai-answer .ai-src{display:flex;align-items:center;gap:6px;padding-left:2px;font-size:var(--fs-13);color:var(--ink-500);margin-top:-4px}
#ai-answer .ai-src > svg[data-ic]{width:15px;height:15px;color:var(--run-ink)}
#ai-answer .ai-also{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:4px;padding-top:16px;border-top:1px dashed var(--line-200)}
#ai-answer .ai-also>span{font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-700)}
#ai-answer .ai-also .chips{flex-direction:column;align-items:flex-start}
#ai-answer .chips button{height:auto;min-height:40px;max-width:100%;padding:8px 14px 8px 16px;white-space:normal;text-align:left;line-height:1.35}   /* 긴 예시도 판 안에서 줄바꿈 (420px 판 밖으로 안 나감) */
#ai-dim{display:none}
/* 알림 (10-14): 머리줄 종(이름 왼쪽) + 안 읽은 수(먹색 원) · 목록 판(PC = 머리줄 아래 떠오르는 판 360px) · 업무 화면 숫자 칸 위 「새로 받은 업무」 띠 */
#top .me .bell{position:relative;flex:none;width:36px;height:36px;padding:0;border:0;border-radius:12px;background:none;color:var(--ink-700);display:inline-flex;align-items:center;justify-content:center}
#top .me .bell svg{width:21px;height:21px}
#top .me .bell:hover,#top .me .bell[aria-expanded="true"]{background:var(--bg-cream);color:var(--ink-900)}
#top .me .bell-n{position:absolute;top:0;right:0;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--primary);color:#fff;font-size:var(--fs-13);font-weight:var(--w-bold);line-height:20px;text-align:center;box-shadow:0 0 0 2px var(--bg-surface)}
#al-panel{position:fixed;top:calc(var(--h-header) + 6px);right:24px;z-index:26;width:360px;max-width:calc(100% - 32px);max-height:calc(100vh - var(--h-header) - 24px);display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-card);box-shadow:var(--sh-float);overflow:hidden}
.al-grip{display:none}
.al-head{flex:none;display:flex;align-items:center;gap:8px;padding:10px 12px 10px 16px;border-bottom:1px solid var(--line-100)}
.al-head h2{margin:0;font-size:var(--fs-16)}
.al-head .al-n{font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-700)}
.al-btns{margin-left:auto;display:flex;gap:6px}
.al-btns button{height:32px;padding:0 12px;font-size:var(--fs-13)}
.al-list{flex:1 1 auto;min-height:0;overflow-y:auto}
/* 알림 줄: 왼쪽 32px 원 아이콘(종류) · 누가 · 무엇 · 언제 / 업무 이름 / 짧은 글 · 안 읽은 줄 = 오른쪽 먹색 점 + 굵은 업무 이름.
   신호색은 상태 뜻이 있는 완료 · 업무 취소에만 */
.al-row{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line-100);cursor:pointer}
.al-row:hover{background:var(--bg-hover)}
.al-row:last-child{border-bottom:0}
.al-ic{flex:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg-cream);color:var(--ink-700)}
.al-ic svg[data-ic]{width:17px;height:17px}
.al-ic.k-done{background:var(--st-done-bg);color:var(--st-done-ink)}
.al-ic.k-cancel{background:var(--st-off-bg);color:var(--st-off-ink)}
.al-ic.k-seen{background:var(--bg-surface);color:var(--ink-400);box-shadow:inset 0 0 0 1px var(--line-200)}   /* 확인함 = 회색 눈 (읽기만 함) */
.al-ic.k-state{background:var(--primary);color:var(--bg-surface)}   /* 상태 바꿈 = 먹색 화살표 */
.al-dot{order:3;flex:none;width:8px;height:8px;margin-top:8px;border-radius:50%}
.al-row.new .al-dot{background:var(--primary)}
.al-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.al-top{display:flex;align-items:baseline;font-size:var(--fs-13);color:var(--ink-700);white-space:nowrap}
.al-by{color:var(--ink-900)}
.al-k{padding-left:4px}   /* 줄 머리는 flex 라 「 · 」 앞 띄어쓰기가 사라짐 → 4px */
.al-at{margin-left:auto;padding-left:10px;color:var(--ink-500);font-variant-numeric:tabular-nums}
.al-title{font-size:var(--fs-14);color:var(--ink-900);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.al-row.new .al-title{font-weight:var(--w-bold)}
.al-text{font-size:var(--fs-13);color:var(--ink-500);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.al-none{display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 16px 32px;text-align:center;font-size:var(--fs-14);color:var(--ink-500)}
.al-foot{flex:none;padding:9px 16px;border-top:1px solid var(--line-100);background:var(--bg-sub);font-size:var(--fs-13);color:var(--ink-500)}
#al-dim{display:none}
/* 새로 받은 업무 띠: 흰 + 1px 선 + 왼쪽 4px 코랄 막대 + 받은 업무 아이콘 + 굵은 글 + [보기] */
.al-band{display:flex;align-items:center;gap:10px;margin:18px 0 0;padding:8px 8px 8px 18px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:14px;box-shadow:inset 4px 0 0 var(--coral-500),var(--sh-rest);color:var(--ink-900);font-size:var(--fs-15)}
.al-band > svg[data-ic]{width:18px;height:18px;color:var(--ink-700)}
.al-band .al-b-t{flex:1;min-width:0}
.al-band button{flex:none;height:34px;padding:0 16px;font-size:var(--fs-14)}
.al-band .al-b-x{border:0;background:none;color:var(--ink-500)}
.al-band .al-b-x:hover{background:rgba(20,20,19,.06)}
.fonly .fp{cursor:default}
/* 걸린 필터 (AI 비서가 바꾼 필터 포함): 칸 테두리 코랄 · 글자 먹색 굵게 (칸 안 고르기 바탕은 비움) */
.filters select.set,.filters input.set{background:transparent;color:var(--ink-900);font-weight:var(--w-bold)}
/* == 03 달력 (목록 상자 안) ==
   [‹ 이전 달] 2026년 10월 [다음 달 ›] [오늘] + 범례 → ASAP 띠 → 월 달력(칸 112px · 칩 24px 2개까지 · +N건 더) → 고른 날 마감 업무 줄.
   오늘 = 먹색 원 · 고른 날 = 안쪽 2px 코랄 + 옅은 크림 · 토 · 일 열 = 옅은 크림 */
.calbar{display:flex;align-items:center;gap:8px;padding:12px}
.cal-nav{display:flex;align-items:center;gap:8px}
.cal-nav button{height:var(--h-control);padding:0 14px;font-size:var(--fs-14);white-space:nowrap}
.cal-title{padding:0 10px;font-size:var(--fs-20);letter-spacing:-.3px;line-height:1.35;white-space:nowrap}
.cal-title .num-serif{font-size:26px;line-height:1}
.cal-lg{margin-left:auto;display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:4px 16px;padding-right:4px;font-size:var(--fs-13);color:var(--ink-500)}
.cal-lg .l-i{display:inline-flex;align-items:center;gap:6px}
.cal-lg .dot{width:8px;height:8px}
.cal-lg .l-red{color:var(--late-ink)}
.cal-asap{display:flex;align-items:center;gap:12px;margin:0 12px 12px;padding:8px 12px;background:var(--late-row);border:1px solid var(--late-line);border-radius:12px;box-shadow:inset 3px 0 0 var(--late-dot)}
.cal-asap .a-l{flex:none;font-size:var(--fs-14);color:var(--late-ink)}
.cal-asap .a-chips{display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.cal-asap .cal-chip{height:28px;gap:6px;padding:0 12px;border-radius:var(--r-due);background:var(--late-bg);font-size:var(--fs-14)}
.cal-asap .cal-chip .dot{width:8px;height:8px}
.cal-chip .c-days{flex:none;margin-left:4px;color:var(--late-ink)}
.cal-wk{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line-200);background:var(--bg-sub);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-500);text-align:center}
.cal-wd{padding:8px 0}
.cal-wd.sun{color:var(--late-ink)}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line-200)}
.cal-day{display:flex;flex-direction:column;gap:4px;min-width:0;min-height:112px;padding:8px;border-right:1px solid var(--line-100);border-bottom:1px solid var(--line-100);background:var(--bg-surface);cursor:pointer}
.cal-day:nth-child(7n){border-right:0}
.cal-day:nth-child(7n),.cal-day:nth-child(7n+6){background:var(--bg-soft)}
.cal-day:hover{background:var(--bg-hover)}
.cal-day.other{background:var(--bg-soft)}
.cal-day.sel{background:var(--bg-soft);box-shadow:inset 0 0 0 2px var(--coral-500)}
.cal-num{display:flex;align-items:center;gap:6px;min-width:0}
.cal-n{flex:none;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:14px;font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-900);font-variant-numeric:tabular-nums}
.cal-day.we .cal-n{color:var(--late-ink)}
.cal-day.other .cal-n{color:var(--line-input)}   /* 다른 달 = 흐리게 · 누르는 칸이라 3:1 은 넘김 (#8a8379 · 흰 3.75) */
.cal-day.today .cal-n{background:var(--primary);color:#fff}
.cal-hol{min-width:0;font-size:var(--fs-13);color:var(--late-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-chip{display:flex;align-items:center;gap:5px;min-width:0;height:24px;padding:0 8px;border-radius:var(--r-pill);background:var(--st-doing-bg);font-size:var(--fs-13);cursor:pointer}
.cal-chip .dot{width:7px;height:7px}
.cal-chip .c-tx{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-chip:hover .c-tx{text-decoration:underline}
.cal-chip.hold{background:var(--st-stop-bg)}
.cal-chip.late,.cal-chip.asap{background:var(--late-bg)}
.cal-chip.done{background:var(--st-done-bg);color:var(--ink-500)}
.cal-chip.cancel{background:var(--st-off-bg);color:var(--ink-500)}
.cal-chip.cancel .c-tx{text-decoration:line-through}
.cal-more{padding-left:6px;font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-900)}
.cal-dots,.cal-holl{display:none}
.cal-list{border-top:1px solid var(--line-200)}
.cal-lh{display:flex;align-items:baseline;gap:10px;padding:16px 16px 10px;border-bottom:1px solid var(--line-100)}
.cal-lh b{font-size:var(--fs-17)}
.cal-lh .n{font-size:var(--fs-14);color:var(--ink-500)}
.cal-list > .row:last-child{border-bottom:0;border-radius:0 0 var(--r-box) var(--r-box)}
.cal-none{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 28px;font-size:var(--fs-15);color:var(--ink-500);text-align:center}
/* 창 바탕 (업무 등록 · 고치기 · PJT 추가) */
#modal{position:fixed;inset:0;background:rgba(20,20,19,.38);display:flex;align-items:flex-start;justify-content:center;padding:72px 16px 40px;z-index:40;overflow:auto}
#modal[hidden]{display:none}
.panel{background:var(--bg-surface);border-radius:var(--r-modal);width:100%;max-width:560px;padding:20px 22px}
.panel h2{font-size:var(--fs-17);margin:0 0 12px}
.panel label.l{display:block;font-size:var(--fs-13);color:var(--sub);margin:12px 0 4px}
.panel select{width:100%}
.panel .err{color:var(--danger);font-size:var(--fs-13);min-height:20px;margin-top:10px}
.panel .foot{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}
/* == 04 업무 등록 창 (고치기도 같은 창) == 가운데 600px · 모서리 20 · 뜬 그림자.
   머리(크림 네모 아이콘 + 제목 20 + [닫기]) → 업무 내용 → 담당자 알약(38px, 고르면 흰 바탕 + 코랄 테두리 + 체크) → 마감일 빠른 단추 + 날짜 칸 → PJT → 아래 띠(메일 안내 + [닫기][등록]) */
.panel.tform{max-width:600px;padding:0;border-radius:var(--r-modal);box-shadow:var(--sh-modal)}
.tform .p-head{display:flex;align-items:center;gap:12px;padding:16px 16px 6px 24px}
.tform .p-ic{flex:none;width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--bg-cream);color:var(--ink-700)}
.tform .p-ic svg[data-ic]{width:20px;height:20px}
.tform h2{flex:1;min-width:0;margin:0;font-size:var(--fs-20);letter-spacing:-.3px;line-height:1.4}
.tform .p-x{height:36px;padding:0 14px;font-size:var(--fs-14)}
.tform .p-body{display:flex;flex-direction:column;gap:20px;padding:16px 24px 20px}
.tform .ff{display:flex;flex-direction:column;gap:8px}
.tform .fl{font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-700)}
.tform .fls{font-size:var(--fs-13);font-weight:var(--w-normal);color:var(--ink-500)}
.tform textarea{display:block;width:100%;height:84px;min-height:60px;padding:10px 12px;border-color:var(--line-input);border-radius:12px;font-size:var(--fs-16);line-height:1.5;resize:vertical}
.tform textarea:focus{border:2px solid var(--primary);padding:9px 11px;box-shadow:var(--focus-ring)}
.tform .people{display:flex;flex-wrap:wrap;gap:8px}
.tform .op{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;padding:0 14px;border:1px solid var(--line-control);border-radius:var(--r-pill);background:var(--bg-surface);font-size:var(--fs-15);white-space:nowrap;cursor:pointer;user-select:none}
.tform .op:hover{background:var(--bg-hover)}
.tform .op input{position:absolute;left:0;top:0;width:1px;height:1px;margin:0;opacity:0;pointer-events:none}
.tform .op svg{display:none;flex:none;width:14px;height:14px}
.tform .op:has(input:checked){padding:0 13.5px 0 9.5px;border:1.5px solid var(--coral-500);background:var(--bg-surface);color:var(--ink-900);font-weight:var(--w-bold)}
.tform .op:has(input:checked) svg{display:block;color:var(--ink-900)}
.tform .op:focus-within{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--primary)}
.tform .dues{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tform .dues button{height:38px;padding:0 14px;font-size:var(--fs-15);font-weight:var(--w-normal);color:var(--ink-900);white-space:nowrap}
.tform .dues button.on{padding:0 13.5px;border:1.5px solid var(--coral-500);background:var(--bg-surface);color:var(--ink-900);font-weight:var(--w-bold)}
.tform .dues button.asap{border-color:var(--late-edge);color:var(--late-ink);font-weight:var(--w-bold)}
.tform .dues button.asap.on{border:1.5px solid var(--late-dot);background:var(--late-bg);color:var(--late-ink)}
.tform .dpick{display:flex;margin-left:auto}
.tform .dp-t,.tform .due-sum{display:none}
.tform #f-due{height:38px;padding:0 12px;border-color:var(--line-input);font-size:var(--fs-15)}
.tform .f-note{font-size:var(--fs-13);color:var(--ink-700)}
.tform .f-note:empty{display:none}
.tform .psel{position:relative;display:block}
.tform .psel select{appearance:none;-webkit-appearance:none;width:100%;height:42px;padding:0 40px 0 14px;border-color:var(--line-control);font-size:var(--fs-16)}
.tform .psel svg{position:absolute;right:16px;top:50%;width:14px;height:14px;margin-top:-7px;color:var(--ink-500);pointer-events:none}
.tform .err{min-height:0;margin:0;font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--late-ink)}
.tform .err:empty{display:none}
.tform .ff.bad textarea{border:1.5px solid var(--late-dot);padding:9.5px 11.5px}
.tform .ff.bad .op:not(:has(input:checked)),.tform .ff.bad .dues button:not(.on),.tform .ff.bad #f-due,.tform .ff.bad select{border-color:var(--late-edge)}
.tform .foot{display:flex;align-items:center;gap:8px;margin:0;padding:14px 24px;border-top:1px solid var(--line-100);border-radius:0 0 var(--r-modal) var(--r-modal);background:var(--bg-sub)}
.tform .foot > svg[data-ic]{width:17px;height:17px;color:var(--ink-500)}
.tform .mailhint{flex:1;min-width:0;font-size:var(--fs-14);color:var(--ink-700)}
.tform .mailhint b{color:var(--ink-900)}
.tform .foot button{flex:none;height:var(--h-button);padding:0 20px;font-size:var(--fs-15)}
.tform .foot button.primary{padding:0 26px}
/* == 05 PJT 현황 ==
   제목 「PJT 현황」 + 오른쪽 [신호별|담당별] · [주간보고 다시 읽기] · [+ PJT 추가] → 숫자 칸 4개(누르지 않음 · 정체 1 이상이면 정체 칸만 옅은 붉은 면)
   → 읽은 때 한 줄 → 미등록 PJT 점선 상자 → 표 상자 → 삭제한 PJT 상자 */
body[data-view="pjt"] main{padding-top:0}
.ptbar{padding:22px 0 18px}
/* 제목 줄 (PC): 「PJT 현황」 + 읽은 때 13px (제목 옆) */
.t-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px}
.t-head .fresh{padding:0}
.ptbar .reread{display:inline-flex;align-items:center;height:var(--h-button);padding:0 16px;font-size:var(--fs-14);white-space:nowrap}
.fresh{padding:0 4px 14px;font-size:var(--fs-13);color:var(--ink-500)}
.fresh-warn{margin:0 0 12px;padding:8px 14px;border-radius:12px;background:var(--hold-bg);color:var(--hold-ink);font-size:var(--fs-13);overflow-wrap:anywhere}
.fresh-warn.bad{background:var(--late-bg);color:var(--late-ink);font-weight:var(--w-bold)}
/* 미등록 PJT 점선 상자: 접힘 = PJT 아이콘(코랄) · 개수 · 이름들 · [펼치기 ▾] / 펼침 = 이름 · 「WW40, WW41 주간보고에 있음」 · [PJT로 추가] (등록자만) */
.unmatched{margin:0 0 16px;background:rgba(255,255,255,.7);border:1.5px dashed var(--line-control);border-radius:14px}
.um-top{display:flex;align-items:center;gap:12px;min-height:48px;padding:0 12px 0 16px}
.um-top > svg[data-ic]{width:18px;height:18px;color:var(--coral-500)}
.unmatched.open .um-top{border-bottom:1px solid var(--line-100)}
.um-head{flex:none;font-size:var(--fs-15)}
.um-sub{flex:1;min-width:0;font-size:var(--fs-14);color:var(--ink-500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.um-top .link{flex:none;display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 4px;font-size:var(--fs-14)}
.um-top .link > svg[data-ic]{order:2;width:14px;height:14px;margin:0;color:var(--ink-500)}
.unmatched.open .um-top .link svg{transform:rotate(180deg)}
.um-row{display:grid;grid-template-columns:180px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:48px;padding:0 16px;border-bottom:1px solid var(--line-100);font-size:var(--fs-15)}
.um-row:last-child{border-bottom:0}
.um-tag{min-width:0;overflow-wrap:anywhere}
.um-wk{min-width:0;font-size:var(--fs-14);color:var(--ink-500)}
.um-row button{height:34px;padding:0 14px;font-size:var(--fs-14);white-space:nowrap}
/* 표 상자: 머리글 38 · 묶음 머리줄 40 · 줄 46. 칸 = 신호 104 · PJT 190 · 담당 110 · 이번 주 요약 · 진행 중 업무 96 · 지연 64 · 마지막 보고 200. 정체 줄 = 왼쪽 붉은 띠 */
.pbox{background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-box);box-shadow:var(--sh-rest)}
.prow,.phead,.arow{display:grid;grid-template-columns:104px 190px 110px minmax(0,1fr) 96px 64px 200px;align-items:center;padding:0 16px}
.phead{height:38px;background:var(--bg-sub);border-bottom:1px solid var(--line-200);border-radius:var(--r-box) var(--r-box) 0 0;font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-500);white-space:nowrap}
.prow{height:46px;border-bottom:1px solid var(--line-100);background:var(--bg-surface);font-size:var(--fs-15);color:var(--ink-700);cursor:pointer;transition:background-color var(--t-fast) ease-out}
.prow:hover{background:var(--bg-hover)}
.pbox > .prow:has(.p-chip .sig.late){box-shadow:inset 3px 0 0 var(--late-dot)}
.p-chip{justify-self:start;display:flex}
/* 신호 칩 (알약 26): 정체 = 지연 색 · 주의 = 보류 색 · 정상 = 진행중 색 · 보고 없음 · 보류 · 삭제 · 종료 = 완료 색 */
.sig{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--r-pill);font-size:var(--fs-13);font-weight:var(--w-bold);white-space:nowrap;line-height:1}
.sig .dot{width:7px;height:7px}
.sig.late{background:var(--late-bg);color:var(--late-ink)}
.sig.hold{background:var(--st-stop-bg);color:var(--st-stop-ink)}
.sig.doing{background:var(--st-doing-bg);color:var(--st-doing-ink)}
.sig.done{background:var(--st-done-bg);color:var(--st-done-ink)}
.sig.off,.sig.cancel{background:var(--st-off-bg);color:var(--st-off-ink)}
.p-name{min-width:0;padding-right:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-900)}
.p-owner{min-width:0;padding-right:8px;font-size:var(--fs-14);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .p-owner.nodata{color:var(--late-ink);font-weight:var(--w-bold)}
.p-sum{padding-right:20px;font-size:var(--fs-14);color:var(--ink-900)}
.p-sum.none,.p-open.none,.p-late.none{color:var(--ink-400)}
.p-open,.p-late,.p-last{min-width:0;font-size:var(--fs-14);white-space:nowrap}
.p-late.hot{color:var(--late-ink);font-weight:var(--w-bold)}
.p-last{color:var(--ink-500);overflow:hidden;text-overflow:ellipsis}
.p-last.hot{color:var(--late-ink);font-weight:var(--w-bold)}
.pl-t{overflow:hidden;text-overflow:ellipsis}
/* 정체 · 주의 줄 마지막 보고 아래 12칸 눈금 (칸 6×8 · 사이 2 · 채운 칸 = 그대로인 주 수) */
.p-last.has-g{display:flex;flex-direction:column;justify-content:center;gap:5px}
.gauge{display:flex;gap:2px}
.gauge i{width:6px;height:8px;border-radius:2px;background:var(--line-200)}
.gauge i.on{background:var(--late-dot)}
.gauge.hold i.on{background:var(--st-doing-dot)}
.p-m{display:none}
.pbox > .empty{border-bottom:1px solid var(--line-100)}
.plegend{display:flex;align-items:center;gap:18px;min-height:46px;padding:10px 16px;font-size:var(--fs-13);color:var(--ink-500)}
.plegend .link{font-size:var(--fs-14)}
.plegend .l-hint{margin-left:auto}
/* 떠오르는 카드 (업무 상세와 같은 모양): 머리 줄 54px → 금주 원문 | 차주 계획 원문 | 진행 중 업무 320 → 아래 띠 → 변경 이력 */
.pdetail{position:relative;z-index:1;margin:10px -12px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-card);box-shadow:var(--sh-card)}
.pdetail > .prow{height:54px;padding:0 28px;border-bottom:1px solid var(--line-100);border-radius:var(--r-card) var(--r-card) 0 0}
.pdetail > .prow:hover{background:var(--bg-soft)}
.pdetail > .prow .p-name{font-size:var(--fs-17)}
.p-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 320px}
.p-col{display:flex;flex-direction:column;gap:10px;min-width:0;padding:18px 28px 20px;border-right:1px solid var(--line-100)}
.p-text{font-size:var(--fs-15);line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}
.p-text.none{color:var(--ink-400)}
.p-tasks{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0;padding:18px 24px 20px;background:var(--bg-sub)}
.p-task{display:flex;flex-direction:column;gap:3px;min-width:0;align-self:stretch}
.pt-t{display:flex;align-items:center;gap:8px;min-width:0;font-size:var(--fs-15)}
.pt-t .dot{width:9px;height:9px}
.pt-x{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.p-task.is-done .pt-x{color:var(--ink-500)}
.pt-s{padding-left:17px;font-size:var(--fs-13);color:var(--ink-500)}
.p-rest{margin-top:4px}
.p-tasks .link{margin-top:4px;font-size:var(--fs-14)}
.p-tasks .d-hs{margin-left:-3px}
/* 링크형 단추 뒤 화살표 (업무 화면에서 보기) */
button.link.go{display:inline-flex;align-items:center;gap:5px}
button.link.go > svg[data-ic]{order:2;width:15px;height:15px;margin:0;color:var(--ink-500)}
.pdetail .d-foot{padding:10px 14px 10px 28px}
.pdetail.h-open .d-foot{border-radius:0}
.p-src{font-size:var(--fs-13);color:var(--ink-500)}
.d-btns.p-act{align-items:center}
.p-act .p-ol{font-size:var(--fs-14);color:var(--ink-700)}
.p-act .psel{position:relative;display:block}
.p-act select{appearance:none;-webkit-appearance:none;height:36px;min-width:120px;padding:0 34px 0 12px;border-color:var(--line-control);background:var(--bg-surface);font-size:var(--fs-14)}
.p-act .psel svg{position:absolute;right:12px;top:50%;width:14px;height:14px;margin-top:-7px;color:var(--ink-500);pointer-events:none}
.d-btns button.primary{border-color:var(--primary);background:var(--primary);color:#fff;font-weight:var(--w-bold)}
.d-btns button.primary:hover{border-color:var(--primary-hover);background:var(--primary-hover)}
.pdetail .hist{padding:12px 28px 16px}
/* 삭제한 PJT 보기 (등록자): 표 상자 아래 상자 */
.parchive{margin-top:16px}
.parchive .ghead.grp{cursor:default;border-radius:var(--r-box) var(--r-box) 0 0}
.parchive .ghead.grp:hover{background:var(--bg-soft)}
.arow{grid-template-columns:104px 190px 110px minmax(0,1fr) auto;min-height:46px;border-bottom:1px solid var(--line-100);font-size:var(--fs-15)}
.arow:last-child{border-bottom:0}
.a-log{min-width:0;padding-right:12px;font-size:var(--fs-13);color:var(--ink-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arow button{height:34px;padding:0 14px;font-size:var(--fs-14)}
.parchive .empty{padding:20px 16px}
/* PJT 추가 창 (업무 등록 창과 같은 .tform): 이름 칸 42px · 담당 고르기 */
.tform .p-in{display:block;width:100%;height:42px;padding:0 14px;border-color:var(--line-input);font-size:var(--fs-16)}
.tform .p-in:focus{border:2px solid var(--primary);padding:0 13px;box-shadow:var(--focus-ring)}
.tform .ff.bad .p-in{border:1.5px solid var(--late-dot);padding:0 13.5px}
/* 좁은 PC · 태블릿 · AI 비서 패널이 열려 줄어든 PC: PJT 칸을 좁힘 (999 이하는 진행 중 업무 · 지연 칸 숨김) */
@media (min-width:768px) and (max-width:1180px){
  .prow,.phead{grid-template-columns:96px 150px 96px minmax(0,1fr) 84px 56px 170px}
  .arow{grid-template-columns:96px 150px 96px minmax(0,1fr) auto}
  .p-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 260px}
}
@media (min-width:768px) and (max-width:999px){
  .prow,.phead{grid-template-columns:96px 140px 90px minmax(0,1fr) 150px}
  .prow .p-open,.prow .p-late,.phead span:nth-child(5),.phead span:nth-child(6){display:none}
  .p-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .p-col:nth-child(2){border-right:0}
  .p-tasks{grid-column:1 / -1;border-top:1px solid var(--line-100)}
}
@media (min-width:1280px){
  #app.ai-open .prow,#app.ai-open .phead{grid-template-columns:96px 150px 96px minmax(0,1fr) 84px 56px 170px}
  #app.ai-open .p-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 260px}
}
/* == 06 주간보고 ==
   흰 위 줄(14px 32px): 「주간보고」(20px) + [WW 단추 3개 | 그 전 주 ▾] + 파일 이름 · 쪽 수 + (오른쪽) 안내 + [인쇄](40px).
   아래는 따뜻한 책상 바탕 위에 쪽 그림을 Letter 세로 816×1056 으로 세로로 쌓고 쪽 아래 「1 / 3쪽」(13px). 종이는 떠 있는 것이라 그림자 */
:root{--bg-desk:#ebe5db;--sh-paper:0 2px 6px rgba(20,20,19,.05),0 18px 40px -16px rgba(60,40,30,.32)}
body[data-view="report"][data-wmode="view"]{background:var(--bg-desk)}   /* 짙은 책상 바탕은 「지난 보고 보기」만 · 이번 주 작성은 크림 페이지 + 빛 띠 */
body[data-view="report"] main{padding:0}
.wk-bar{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px}
.wk-title{margin:0;font-size:var(--fs-20);line-height:var(--lh-tight);letter-spacing:-.3px}
.wk-pick{display:flex;align-items:center;gap:8px;margin-left:8px}
.wk-seg button{padding:0 14px}
.wk-older{height:var(--h-button)}
.wk-file{font-size:var(--fs-14);color:var(--ink-500);overflow-wrap:anywhere}
.wk-note{margin-left:auto;font-size:var(--fs-13);color:var(--ink-500)}
.wk-print{display:inline-flex;align-items:center;height:var(--h-button);padding:0 22px;font-size:var(--fs-15)}
.wk-body{padding:32px 32px 48px}
.wk-pages{display:flex;flex-direction:column;align-items:center;gap:12px}
.wk-page{margin:0;display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}
.wk-paper{width:816px;max-width:100%;aspect-ratio:816 / 1056;background:#fff;box-shadow:var(--sh-paper);overflow:hidden}
.wk-paper img{display:block;width:100%;height:100%;object-fit:contain}
.wk-zoom{display:block;width:100%;height:100%;cursor:zoom-in}   /* 쪽을 누르면 그 쪽 그림을 새 창으로 (원본 2배 크기) */
.wk-tap{display:none}
.wk-paper.bad{display:flex;align-items:center;justify-content:center;padding:24px;color:var(--late-ink);font-size:var(--fs-15);font-weight:var(--w-bold)}
.wk-no{margin-bottom:16px;font-size:var(--fs-12);color:var(--ink-500)}
.wk-msg{width:816px;max-width:100%;margin:0 auto;display:flex;gap:12px;padding:20px 24px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-card);box-shadow:var(--sh-rest)}
.wk-msg .m-ic{flex:none;display:flex;padding-top:1px;color:var(--ink-500)}
.wk-msg .m-ic svg[data-ic]{width:20px;height:20px}
.wk-msg.bad .m-ic{color:var(--late-ink)}
.wk-msg .m-tx{display:flex;flex-direction:column;gap:4px;min-width:0}
.wk-msg .m-t{font-size:var(--fs-16);overflow-wrap:anywhere}
.wk-msg .m-f{font-size:var(--fs-14);color:var(--ink-700);overflow-wrap:anywhere}
.wk-msg.bad{background:var(--late-bg);border-color:var(--late-edge)}
.wk-msg.bad .m-t{color:var(--late-ink-strong)}
/* == 주간보고 작성 칸 (10-14) ==
   맨 위 흰 줄: [이번 주 작성 WW42 | 지난 보고 보기]. 작성 = 흰 위 줄(「주간보고 작성 WW42」 + 날짜 · 팀장 [이전 주] [이번 주]) 아래 크림 바탕에
   팀장 상자(안 쓴 PJT · [합본 만들기] · 점검 결과 · 쪽 미리보기) → 판매 카드 → 내 PJT 카드 → 다른 PJT 카드(쓸 수 없으면 보기만 바탕 · 칸 잠김).
   카드 = 머리줄(이름 · 담당 · 상태 칩) + 칸 둘(금주 추진 | 차주 예정: 이름 · 쓰는 법 한 줄 · 표시 · 글 칸 · 그림 줄) + [저장] */
/* 위 흰 띠 하나 (.wr-top): 왼쪽 [이번 주 작성 | 지난 보고 보기] + 그 화면 위 줄 (좁으면 다음 줄로) */
.wr-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px 20px;min-height:64px;padding:10px 32px;background:var(--bg-surface);border-bottom:1px solid var(--line-200)}
.wr-switch{flex:none;display:flex;align-items:center;gap:12px}
.wr-seg button{padding:0 16px}
.wr-bar{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.wr-title{margin:0;font-size:var(--fs-20);line-height:var(--lh-tight);letter-spacing:-.3px}
.wr-range{font-size:var(--fs-15);color:var(--ink-500)}
.wr-wk{display:inline-flex;align-items:center;height:var(--h-control);padding:0 14px 0 12px;font-size:var(--fs-14)}
.wr-wk > svg[data-ic]{margin:0 4px 0 -2px}
.wr-wk.next{padding:0 12px 0 14px}
.wr-wk.next > svg[data-ic]{order:2;margin:0 -2px 0 4px}
.wr-tip{margin-left:auto;font-size:var(--fs-13);color:var(--ink-500)}
.wr-body{max-width:1240px;margin:0 auto;padding:24px 32px 48px;display:flex;flex-direction:column;gap:16px}
.wr-past{padding:10px 14px;border-radius:12px;background:var(--hold-bg);color:var(--hold-ink);font-size:var(--fs-14);font-weight:var(--w-bold)}
.wr-ro-note{font-size:var(--fs-14);color:var(--ink-500)}
/* 묶음 소제목 (「내 PJT 2개」 · 「PJT 11개」): 17px 굵게 + 왼쪽 4px 코랄 막대 */
.wr-group{display:flex;align-items:center;gap:10px;margin:8px 0 0;font-size:var(--fs-17);color:var(--ink-900)}
.wr-group::before{content:"";flex:none;width:4px;height:20px;border-radius:2px;background:var(--coral-500)}
.wr-lead{display:flex;flex-direction:column;gap:14px;padding:20px 24px 22px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-box);box-shadow:var(--sh-rest)}
.wr-lead{scroll-margin-top:120px}   /* 카드에서 [합본 다시 만들기] 를 누르면 이 상자로 올라옴 (붙어 있는 머리줄 밑으로) */
.wr-lead-top{display:flex;align-items:center;flex-wrap:wrap;gap:10px 12px}
.wr-lead-t{margin-right:auto;font-size:var(--fs-17)}
/* 팀장 합본 머리: 크림 네모 안 합본 아이콘 */
.wr-sq{flex:none;display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;background:var(--bg-cream);color:var(--ink-700)}
.wr-sq svg[data-ic]{width:20px;height:20px}
.wr-lead-top button{display:inline-flex;align-items:center;justify-content:center;height:var(--h-button);padding:0 18px;font-size:var(--fs-15)}
.wr-lead-top [data-act="wr-build"]{padding:0 22px}
/* 작성 칸 막대 (팀장 합본 안): 「PJT 11개 중 2개 저장」 + PJT 수만큼 칸 + 범례. 칸 = 저장(진행중 색) · Word 초안(흰 칸 + 테) · 안 씀(빈 칸) */
.wr-prog{display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px}
.wp-l{font-size:var(--fs-15);color:var(--ink-700);white-space:nowrap}
.wp-l .num-serif{margin:0 2px;font-size:24px;line-height:1;color:var(--ink-900)}
.wp-cells{flex:1 1 240px;max-width:520px;display:flex;gap:4px}
.wp-cells i{flex:1;min-width:5px;height:12px;border-radius:4px;background:var(--line-200)}
.wp-cells i.saved,.wp-k i.saved{background:var(--run-dot)}
.wp-cells i.draft,.wp-k i.draft{background:var(--bg-surface);box-shadow:inset 0 0 0 2px var(--run-dot)}
.wp-leg{display:flex;align-items:center;flex-wrap:wrap;gap:4px 14px;font-size:var(--fs-13);color:var(--ink-500);white-space:nowrap}
.wp-k{display:inline-flex;align-items:center;gap:5px}
.wp-k i{width:12px;height:12px;border-radius:3px;background:var(--line-200)}
.wr-all{font-size:var(--fs-14);color:var(--run-ink);font-weight:var(--w-bold)}
.wr-drafts{font-size:var(--fs-13);color:var(--ink-500);overflow-wrap:anywhere}
.wr-drafts.bad{color:var(--late-ink);font-weight:var(--w-bold)}
.wr-result{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:1px solid var(--line-100)}
.wr-res-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.wr-res-t{font-size:var(--fs-16)}
.wr-res-at{font-size:var(--fs-14);color:var(--ink-500)}
.wr-res-btns{display:flex;gap:8px;margin-left:auto}
.wr-res-btns button{display:inline-flex;align-items:center;justify-content:center;height:var(--h-button);padding:0 20px;font-size:var(--fs-15)}
.wr-ok{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:12px;background:var(--run-bg);color:var(--run-ink);font-size:var(--fs-15);font-weight:var(--w-bold)}
.wr-ok > svg[data-ic],.wr-stale > svg[data-ic],.wr-again > svg[data-ic],.wr-miss > svg[data-ic]{flex:none;width:18px;height:18px;margin-top:2px}
.wr-bad-t{display:flex;align-items:flex-start;gap:8px}
.wr-bad-t > svg[data-ic]{flex:none;width:18px;height:18px;margin-top:1px;color:var(--late-ink)}
.wr-bad{padding:12px 14px;border-radius:12px;background:var(--late-bg);border:1px solid var(--late-edge);color:var(--late-ink-strong);font-size:var(--fs-14)}
.wr-bad ul{margin:6px 0 0;padding-left:20px}
/* 참고 (합본은 받을 수 있음): 정보 아이콘 + 굵은 머리 한 번 · 줄은 점 없이 14 ink-500 */
.wr-notes{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-14);color:var(--ink-700)}
.wr-notes-t{display:flex;align-items:center;gap:6px}
.wr-notes-t > svg[data-ic]{flex:none;width:16px;height:16px;color:var(--ink-500)}
.wr-notes ul{display:flex;flex-direction:column;gap:2px;margin:0;padding:0 0 0 22px;list-style:none;color:var(--ink-500)}
.wr-miss{display:flex;align-items:flex-start;gap:6px;font-size:var(--fs-14);color:var(--hold-ink);font-weight:var(--w-bold)}
.wr-files{font-size:var(--fs-13);color:var(--ink-500);overflow-wrap:anywhere}
.wr-preview{padding:16px;border-radius:12px;background:var(--bg-desk)}
.wr-preview.shut{display:none}   /* 다시 열면 접힘 ([미리보기 보기]) · 인쇄 때는 아래 인쇄 규칙이 보이게 함 */
.wr-pv-tog{align-self:flex-start;height:var(--h-button);padding:0 18px;font-size:var(--fs-15)}
/* 합본 뒤에 고친 칸 줄 = 맨 위 합본 상자(.wr-stale) · 고친 카드 [저장] 아래(.wr-again) 같은 모양: 아이콘 + 글 + [합본 다시 만들기] (좁으면 단추가 다음 줄 가득) */
.wr-stale,.wr-again{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 8px 8px 14px;border-radius:12px;background:var(--late-bg);border:1px solid var(--late-edge);color:var(--late-ink-strong);font-size:var(--fs-15);font-weight:var(--w-bold)}
.wr-stale-t{flex:1 1 220px;min-width:0}
.wr-stale > button,.wr-again > button{flex:none;display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 16px;font-size:var(--fs-14)}
.wr-res-btns .dim{opacity:.55}   /* 합본 뒤에 고친 칸이 있음: 첫 누름은 알림만 */
.wr-card{display:flex;flex-direction:column;gap:12px;padding:20px 24px 22px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-box);box-shadow:var(--sh-rest)}
.wr-card.own{box-shadow:inset 3px 0 0 var(--primary),var(--sh-rest)}   /* 내 PJT (업무 상세의 .mine 과 다른 이름) */
.wr-card.sales{border-color:var(--line-control)}
.wr-card.ro{background:var(--bg-sub);box-shadow:none}
.wr-card.ro .wr-name{color:var(--ink-500)}
.wr-chead{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px}
.wr-name{font-size:var(--fs-17);overflow-wrap:anywhere}
.wr-owner{font-size:var(--fs-14);color:var(--ink-500)}
.wr-chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-pill);background:var(--done-bg);color:var(--done-ink);font-size:var(--fs-13);font-weight:var(--w-bold)}
.wr-chip::before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:var(--done-dot)}   /* 다른 신호 칩과 같은 점 */
.wr-chip.st-written::before{background:var(--run-dot)}
.wr-chip.st-draft::before{background:var(--ink-500)}
.wr-chip.st-partial::before{background:var(--hold-dot)}
.wr-chip.st-written{background:var(--run-bg);color:var(--run-ink)}
.wr-chip.st-draft{background:var(--bg-cream);color:var(--ink-700)}
.wr-chip.st-partial{background:var(--hold-bg);color:var(--hold-ink)}   /* 쓴 칸은 있는데 미리 채운 금주는 저장 전 */
.wr-ro{margin-left:auto;font-size:var(--fs-13);color:var(--ink-500)}
.wr-cells{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.wr-cell{display:flex;flex-direction:column;gap:6px;min-width:0}
.wr-label{font-size:var(--fs-14);font-weight:var(--w-bold);color:var(--ink-700)}
.wr-hint{font-size:var(--fs-13);line-height:1.45;color:var(--ink-500)}
.wr-hint.how{display:flex;align-items:flex-start;gap:6px}
.wr-hint.how > svg[data-ic]{flex:none;width:15px;height:15px;margin-top:2px;color:var(--ink-400)}
.wr-badges{display:flex;flex-wrap:wrap;gap:6px}
.wr-badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-tag);font-size:var(--fs-13);font-weight:var(--w-bold)}
.wr-badge.pre{background:var(--hold-bg);color:var(--hold-ink)}
.wr-badge.draft{background:var(--bg-cream);color:var(--ink-700)}
.wr-text{width:100%;min-height:128px;max-height:480px;field-sizing:content;resize:vertical;padding:10px 12px;border-radius:12px;font-size:var(--fs-15);line-height:1.6}
.wr-text[readonly]{min-height:60px;background:var(--bg-sub);border-color:var(--line-200);color:var(--ink-500)}
.wr-text[readonly]:focus{border-color:var(--line-200);box-shadow:none}
.wr-imgs{display:flex;flex-wrap:wrap;gap:10px}
.wr-img{margin:0;display:flex;flex-direction:column;gap:6px;width:152px;max-width:100%}
.wr-img img{display:block;width:100%;height:96px;object-fit:contain;background:var(--bg-sub);border:1px solid var(--line-200);border-radius:8px}
.wr-ibtns{display:flex;flex-wrap:wrap;gap:4px}
.wr-ibtns button{height:30px;padding:0 10px;font-size:var(--fs-13)}
.wr-up{font-size:var(--fs-13);color:var(--ink-500)}
.wr-conflict{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--late-bg);border:1px solid var(--late-edge);border-radius:12px}
.wr-cf-t{color:var(--late-ink-strong);font-size:var(--fs-14)}
.wr-conflict button{height:34px;padding:0 14px;font-size:var(--fs-14)}
.wr-mine-h{font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-700)}
.wr-mine{width:100%;padding:8px 10px;background:var(--bg-surface);border:1px dashed var(--line-input);border-radius:8px;white-space:pre-wrap;font-size:var(--fs-14);user-select:all}
.wr-foot{display:flex;align-items:center;justify-content:flex-end;gap:12px}
.wr-unsaved{display:none;font-size:var(--fs-13);color:var(--hold-ink);font-weight:var(--w-bold)}
.wr-card.dirty .wr-unsaved{display:inline}
.wr-foot button{height:var(--h-button);padding:0 26px;font-size:var(--fs-15)}
/* 인쇄: Letter 세로 · 여백 0 · 쪽 그림 하나 = 종이 한 장. 머리줄 · 메뉴 · AI 비서 · 알림 · 위 줄 · 쪽 번호는 숨김. 새 장식(빛 띠 · 숫자 칸 면 · 그림자 · 날짜 줄 · AI 표식)도 끔 */
@page{size:letter portrait;margin:0}
@media print{
  body[data-view="report"] #top,body[data-view="report"] #menu,body[data-view="report"] #ai,body[data-view="report"] #notice,body[data-view="report"] #report-bar,#modal,
  #toast,#ai-answer,#ai-dim,.wk-no,#wr-switch,.wr-top,#al-panel,#al-dim,.al-band{display:none !important}
  main#view,#login{background:none}
  #top,.lbox,.pbox,.detail,.pdetail,.counts .c,.wr-card,.wr-lead,.wk-msg,.unmatched{box-shadow:none}
  .counts .c,.counts .c.s-late:not(.zero){background:#fff}
  .t-date,.mark{display:none}
  /* 합본 [인쇄] (body data-print="build"): 미리보기 쪽 그림만 (작성 칸 · 점검 결과 · 단추는 숨김) */
  body[data-print="build"] #view > :not(.wr-body),body[data-print="build"] .wr-body > :not(.wr-lead),body[data-print="build"] .wr-lead > :not(.wr-result),
  body[data-print="build"] .wr-result > :not(.wr-preview){display:none !important}
  body[data-print="build"] .wr-body,body[data-print="build"] .wr-lead,body[data-print="build"] .wr-result,body[data-print="build"] .wr-preview,body[data-print="build"] .wr-preview.shut{display:block;max-width:none;margin:0;padding:0;border:0;border-radius:0;background:#fff}
  body[data-view="report"],body[data-view="report"][data-wmode]{background:#fff}
  body[data-view="report"] main{padding:0;max-width:none;margin:0 !important}
  .wk-body{padding:0}
  .wk-pages,.wk-page{display:block;gap:0}
  .wk-paper{width:8.5in;max-width:none;height:11in;aspect-ratio:auto;box-shadow:none;break-after:page;break-inside:avoid}
  .wk-page:last-child .wk-paper{break-after:auto}
  .wk-msg{display:none}
}
/* 폰 */
@media (max-width:767px){
  body{font-size:15px}
  input,select,textarea,button{font-size:16px}
  /* 폰 머리 2줄: 로고 + 이름 / 이름 님 + 로그아웃 (52px) · 메뉴 3칸 (46px · 아이콘 + 글자 · 고른 칸 아래 코랄 막대) = 98px, 내려도 위에 고정 (02 「조금 내려 본 상태」 그림). AI 비서 입력줄은 화면 아래 고정 */
  #top{position:sticky;top:0;height:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;row-gap:0;padding:0}
  #top .brand{grid-column:1;grid-row:1;height:52px;padding-left:16px;gap:8px;min-width:0}
  #top .brand .logo{height:24px}
  #top .brand .name{font-size:var(--fs-16);min-width:0;overflow:hidden;text-overflow:ellipsis}
  #top .me{grid-column:2;grid-row:1;padding-right:16px;gap:8px;font-size:var(--fs-14)}
  #top .me button{height:40px;padding:0 12px;border-radius:var(--r-button);font-size:var(--fs-14)}
  #menu{grid-column:1 / -1;grid-row:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));height:46px;gap:0;border-top:1px solid var(--line-100)}
  #menu button{justify-content:center;gap:6px;padding:0;font-size:var(--fs-16)}
  #menu button.cur::after{left:18%;right:18%}
  #ai{position:fixed;left:0;right:0;bottom:0;z-index:30;display:block;padding:10px 12px 18px;background:var(--bg-surface);border-top:1px solid var(--line-200);box-shadow:var(--sh-dock)}
  #ai .bar{max-width:none;height:var(--h-touch-lg);border-radius:var(--r-pill);gap:8px;padding:0 4px 0 8px}
  #ai .lab{padding-right:8px}
  #ai input{font-size:var(--fs-16)}
  #ai .bar button{height:40px;padding:0 14px;font-size:var(--fs-15)}
  #ai .ex{top:auto;bottom:calc(100% + 8px);left:12px;right:12px;width:auto;max-width:none;transform:none}
  #ai .ex button{height:auto;min-height:40px;max-width:100%;white-space:normal;text-align:left;line-height:1.35;border-radius:20px;font-size:var(--fs-15);padding:8px 14px}
  html{scroll-padding-top:110px}   /* 고정 머리 98px + 12 : 달력 날짜 누름 등으로 내려갈 때 머리 밑에 안 가림 */
  /* 로그인 (폰): 흰 화면 전체 · 위 96px · 칸 50px · 단추 52px */
  #login{padding:96px 24px 40px;background:var(--bg-surface)}
  #login .l-box{width:100%;border:0;border-radius:0;padding:0;gap:24px;box-shadow:none}
  #login h1{font-size:var(--fs-26)}
  #login p.hint{font-size:var(--fs-16)}
  #login label{font-size:var(--fs-15)}
  #login input{height:50px;border-radius:10px;font-size:17px}
  #login .go{height:52px}
  #login .l-foot{font-size:var(--fs-14)}
  #login .err.field,#login .err.cred{margin-top:-18px}
  #toast{left:12px;right:12px;bottom:88px;width:auto;max-width:none}
  #toast .x,#toast .r{height:40px}
  #toast.has-r{flex-wrap:wrap;row-gap:10px}   /* 폰: 글 한 줄 · 아래 줄 오른쪽에 [다시 보내기][닫기] */
  #toast.has-r #notice{flex:1 1 calc(100% - 30px)}
  #toast.has-r .r{margin-left:auto}
  #toast.has-r .x{width:40px}
  /* AI 비서 답 (폰): 아래 입력줄 위로 올라오는 판(위 모서리 20 · 손잡이) · 뒤는 어둡게 */
  #ai-answer{top:clamp(56px,12vh,110px);left:0;right:0;bottom:76px;width:auto;z-index:29;border-left:0;border-radius:var(--r-sheet) var(--r-sheet) 0 0;box-shadow:0 -10px 30px -10px rgba(20,20,19,.3)}
  #ai-answer .grip{display:flex;justify-content:center;padding:10px 0 0;flex:none}
  #ai-answer .grip::before{content:"";width:40px;height:4px;border-radius:2px;background:var(--line-control)}
  #ai-answer .ai-head{height:auto;padding:4px 12px 8px 16px;border-bottom:0;background:none}
  #ai-answer .ttl{font-size:var(--fs-17)}
  #ai-answer .ai-head button{height:40px;padding:0 14px;font-size:var(--fs-15)}
  #ai-answer .ai-body{padding:4px 16px 16px;gap:14px}
  #ai-answer .ai-q{max-width:85%;font-size:var(--fs-16)}
  #ai-answer .ai-main{padding:14px}
  #ai-answer .ai-more{font-size:var(--fs-15)}
  #ai-answer .ai-ev{padding:12px 14px}
  #ai-answer .ev-t{font-size:var(--fs-15)}
  #ai-answer .ev-due{font-size:var(--fs-13)}
  #ai-answer .ev-sub{display:none}
  #ai-answer .ai-band{padding:10px 14px;font-size:var(--fs-14)}
  #ai-answer .ai-band button{min-height:40px;padding:0 8px}
  #ai-answer .ai-band .pc-only{display:none}
  #ai-answer .ai-band .phone-only{display:inline-flex;align-items:center}
  #ai-answer .x-head{padding:14px 14px 6px}
  #ai-answer .x-list{padding:0 12px 12px}
  #ai-answer .x-l{font-size:var(--fs-15)}
  #ai-answer .x-band{padding:12px}
  #ai-answer .x-band button{height:44px;padding:0 14px;font-size:var(--fs-15)}   /* 폰 누르는 칸 40px 이상 */
  #ai-answer .x-band button.primary{flex:1 1 auto}
  #ai-answer .chips button{height:auto;min-height:40px;max-width:100%;padding:6px 14px 6px 16px;white-space:normal;text-align:left;font-size:var(--fs-15)}
  #ai-answer .chips button:nth-child(n+3){display:none}
  #app.ai-open #ai-dim{display:block;position:fixed;inset:0;z-index:28;background:rgba(20,20,19,.38)}
  #app.ai-open #top{z-index:29}
  /* 알림 (폰): 종 40px · 목록 = 아래에서 올라오는 판(입력줄까지 덮음) + 뒤 어둡게 · 줄 · 단추 40px 이상 · 띠는 숫자 칸 위.
     머리 위 줄에 종 자리를 내려고: 「님」 숨김 · 로고 20px · 칸 사이를 좁힘 · 로그아웃 옆 여백 8px · 종 36×40 (360 까지 「영업 Mango」 이 말줄임 없이 다 보이게) */
  #top{column-gap:4px}
  #top .brand .logo{height:20px}
  #top .me{gap:6px}
  #top .me .bell{width:40px;height:40px;margin-right:-6px}   /* 누르는 칸 40×40 · 자리는 예전 36px(-2) 그대로 (10-15) */
  #top .me .bell-n{top:2px;right:3px}
  #top .me [data-act="logout"]{padding:0 10px}
  #who .nim{display:none}
  /* [사용법] (폰): 위 줄은 자리가 없어 메뉴 줄 오른쪽 칸 (메뉴 3칸은 그만큼 좁힘 · 머리 높이 그대로) */
  #top .me .guide{position:absolute;right:0;top:52px;width:76px;height:46px;min-height:0;padding:0;border:0;border-left:1px solid var(--line-100);border-top:1px solid var(--line-100);border-radius:0;background:none;color:var(--ink-700);font-size:var(--fs-15);justify-content:center}
  #top .me .guide > svg[data-ic]{display:none}
  #menu{margin-right:76px}
  #al-panel{top:auto;left:0;right:0;bottom:0;width:auto;max-width:none;max-height:calc(100% - 64px);z-index:32;border:0;border-radius:var(--r-sheet) var(--r-sheet) 0 0;box-shadow:0 -10px 30px -10px rgba(20,20,19,.3)}
  .al-grip{display:flex;justify-content:center;padding:10px 0 0;flex:none}
  .al-grip::before{content:"";width:40px;height:4px;border-radius:2px;background:var(--line-control)}
  .al-head{padding:4px 16px 10px}
  .al-head h2{font-size:var(--fs-17)}
  .al-head .al-n{font-size:var(--fs-14)}
  .al-btns button{height:40px;padding:0 14px;font-size:var(--fs-15)}
  .al-row{min-height:56px;padding:12px 16px}
  .al-top,.al-text{font-size:var(--fs-14)}
  .al-title{font-size:var(--fs-16)}
  .al-dot{margin-top:9px}
  .al-foot{padding:10px 16px 20px;font-size:var(--fs-13)}
  #app.al-open #al-dim{display:block;position:fixed;inset:0;z-index:31;background:rgba(20,20,19,.38)}
  .al-band{margin:0 0 10px;padding:6px 6px 6px 14px;gap:8px}
  .al-band button{height:var(--h-touch);padding:0 14px;font-size:var(--fs-15)}
  main{padding:10px 12px 96px}
  /* 업무 (폰): 숫자 칸 4개 한 줄(68 · 점 + 세리프 숫자 / 이름) → 필터 칸(40 · 16px) → 찾기 + [+ 업무 등록] → 「N건 · 정렬 ▲」 + [목록|달력] → 두 줄 목록(화면 폭) */
  body[data-view="tasks"] main{padding:12px 16px 96px}
  .tbar{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:0 0 10px}
  .counts{width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
  .counts .c{height:68px;grid-template-columns:auto auto;grid-template-rows:auto auto;grid-template-areas:"dot n" "l l";justify-content:center;align-content:center;align-items:center;column-gap:6px;row-gap:3px;padding:6px 2px;border-radius:14px}
  .counts .c .ci{display:none}
  .counts .c .dot{display:block;grid-area:dot;width:7px;height:7px}
  .counts .c b{grid-area:n;align-self:center;font-size:var(--fs-num-m);line-height:1}
  .counts .c b::after{display:none}
  .counts .c .l{grid-area:l;justify-self:center;padding:0;font-size:var(--fs-13);line-height:1.28;white-space:nowrap;overflow:visible}
  .counts .k-s,.counts .k-rng{display:none}
  .filters.tf{gap:8px;padding:0;margin:0 0 8px;border:0}
  .filters.tf .fsel{flex:1 1 0;min-width:0;max-width:none;height:var(--h-touch);gap:2px;padding:0 8px 0 10px;border-radius:var(--r-control)}
  .fsel select{font-size:var(--fs-16)}
  .fsel .fv{flex:1;font-size:var(--fs-16)}
  .filters.tf .fsel.set{padding:0 0 0 9.5px}
  .fsel .fx{min-width:40px;height:40px;margin:-1px 0;font-size:var(--fs-15)}
  .frow2{display:flex;gap:8px}
  .fsearch{min-width:0;height:var(--h-touch);border-radius:var(--r-control);font-size:var(--fs-16)}
  .fsearch input{font-size:var(--fs-16)}
  .fsearch .fx{min-width:40px;height:40px;font-size:var(--fs-15)}
  .frow2 .new{flex:none;height:var(--h-touch);padding:0 16px;font-size:var(--fs-15)}
  .sortbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0 8px}
  .sortbar .sl{display:flex;align-items:center;gap:4px;min-width:0;font-size:var(--fs-14);color:var(--ink-700)}
  .sortbar .n-count{padding:0;font-size:var(--fs-14);color:var(--ink-700)}
  .sortbar select{appearance:none;-webkit-appearance:none;height:var(--h-touch);padding:0 2px;border:0;background:none;color:var(--ink-900);font-size:var(--fs-16);font-weight:var(--w-bold);field-sizing:content;min-width:0}
  .sortbar select:focus{box-shadow:var(--focus-ring)}
  .sortbar .dir{height:var(--h-touch);min-width:40px;padding:0 4px;border:0;background:none;color:var(--ink-900);font-size:var(--fs-14);font-weight:var(--w-bold);text-align:left}
  .modes{flex:none;height:auto;padding:0;gap:0}
  .modes button{height:var(--h-touch);padding:0 14px;font-size:var(--fs-15)}
  .modes button.on{box-shadow:inset 0 0 0 3px var(--bg-cream),inset 0 0 0 4px var(--line-200)}
  /* 목록 = 둥근 상자(양옆 16px 여백) 안 두 줄 줄: 윗줄 점 + 업무(꼬리표는 업무 뒤에 이어서 · 넘치면 줄바꿈) / 아랫줄 담당 · PJT · 등록자 + 짧은 마감일 */
  .lbox{margin:0;border:1px solid var(--line-200);border-radius:14px;box-shadow:var(--sh-rest)}
  .lbox > .head + .row,.lbox > .head + .ghead{border-radius:13px 13px 0 0}
  .head{display:none}
  .row{height:auto;min-height:64px;grid-template-columns:13px minmax(0,1fr) auto;grid-template-areas:"dot task task" ". meta due";column-gap:6px;row-gap:5px;padding:11px 14px 11px 16px;line-height:1.3}
  .row .dot{grid-area:dot;margin:0;align-self:start;margin-top:6px}
  .row .c-task{grid-area:task;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;padding-right:0}
  .row .txt{flex:0 1 auto;min-width:0;white-space:normal;overflow:visible;font-size:var(--fs-16)}
  .row .tags{display:contents}
  .row .tag{padding:0 7px}
  .row .c-pjt,.row .c-owner,.row .c-by,.row .c-created,.row .c-done,.row .c-due{display:none}
  .row .c-m{grid-area:meta;display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-14);color:var(--ink-500)}
  .row .c-due-m{grid-area:due;display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:var(--r-due);font-size:var(--fs-13)}
  .ghead.grp{height:auto;min-height:44px}
  .legend{gap:12px}
  .legend .l-hint{margin-left:0}
  .ai-line button{min-height:var(--h-touch)}   /* [필터 해제] 누르는 칸 40 */
  .t-empty{padding:28px 20px}
  .t-empty .e-t{font-size:18px}
  .e-btns{align-self:stretch;flex-direction:column}
  .e-btns button{height:46px;font-size:var(--fs-16)}
  /* 업무 상세 (폰): 아래에서 올라오는 전체 판 (AI 비서 줄 위 · AI 판을 나중에 열면 그 아래) · 위에서부터 제목 → 정보 2×2 → 담당자별 상태 →
     처리 내용 → 메일 → 변경 이력 → [고치기][업무 취소] 44px 반반 · 머리 단추 44px */
  .dpanel{top:0;left:0;width:auto;z-index:33;border-left:0;box-shadow:none}
  .dpanel.under{z-index:27}
  .dpanel.in{animation-name:dp-up}
  .dp-head{height:auto;min-height:60px;padding:8px 8px 8px 16px}
  .dp-mv{width:44px;height:44px}
  .dp-x{height:44px;padding:0 16px}
  .d-title{padding:14px 16px 12px}
  .detail .full{padding:12px 16px}
  .d-body{grid-template-columns:minmax(0,1fr)}
  .meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;padding:12px 16px;border-right:0}
  .meta .kv{display:block}
  .meta .k{display:block;font-size:var(--fs-13);line-height:1.5}
  .owners{gap:8px;padding:12px 16px;border-top:1px solid var(--line-100);border-right:0}
  .d-notes{gap:10px;padding:12px 16px;border-top:1px solid var(--line-100)}
  .seg3{height:auto;padding:0;gap:0;border:0;background:none}
  .seg3 button{height:var(--h-touch);border-radius:var(--r-pill)}
  .seg3 button.st-doing.on{box-shadow:inset 0 0 0 1.5px var(--st-doing-dot)}
  .seg3 button.st-hold.on{box-shadow:inset 0 0 0 1.5px var(--st-stop-dot)}
  .seg3 button.st-done.on{box-shadow:inset 0 0 0 1.5px var(--st-done-dot)}
  .mine{padding:14px}
  .seg-row{flex-wrap:wrap}
  .seg-row .seg3{flex:1 1 100%}
  .seg-row > button{flex:1 1 100%;height:44px}
  .mine-f{flex-wrap:wrap}
  .mine-f button{height:44px;flex:1 1 100%}
  .detail .mail.bad{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:8px 10px;padding:12px 16px}
  .mail.bad button,.mail.bad .sending{grid-column:2;justify-self:start;height:var(--h-touch)}
  .mail.bad .sending{display:flex;align-items:center}
  .e-s .pc-only{display:none}
  .lbox.none-left{margin:0 -16px;border:0;border-radius:0;background:none;box-shadow:none}
  .lbox.none-left .t-empty{margin:0 16px;padding:28px 20px;gap:8px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-card);box-shadow:var(--sh-rest)}
  .lbox.none-left .e-ic{width:52px;height:52px}
  .lbox.none-left .wk-head{padding:18px 16px 8px;border:0;background:none}
  .lbox.none-left .wk-head b{font-size:var(--fs-16)}
  .lbox.none-left .wk-head + .row{border-top:1px solid var(--line-200)}
  .d-foot{flex-direction:column;align-items:stretch;gap:0;padding:8px 16px 16px;border-top:1px solid var(--line-100);border-radius:0 0 var(--r-modal) var(--r-modal);background:var(--bg-surface)}
  .d-foot .mail{min-height:28px}
  .d-foot .link{height:var(--h-touch);text-align:left;font-size:var(--fs-14)}
  .d-rt{display:flex;flex-direction:column;align-items:stretch;gap:0;margin:0}
  .d-rt:has(> .d-btns.sure) .d-hint{margin-left:0}
  .d-hint{margin:0 0 8px}
  .d-btns{display:grid;grid-template-columns:1fr 1fr;margin:4px 0 0}
  .d-btns button{height:44px;padding:0 8px;font-size:var(--fs-15)}
  .hist{padding:8px 16px 16px}
  .hist li{grid-template-columns:auto auto minmax(0,1fr)}
  .hint-desk{display:none}
  .d-btns .c-ask{grid-column:1 / -1;margin-bottom:4px;font-size:var(--fs-14)}
  /* 달력 (폰): 필터 칸 → 찾기 → ‹ 2026년 10월 › [오늘] + [목록|달력] → ASAP 띠 → 달력 상자(칸 46px · 숫자 + 점 3개) → 공휴일 한 줄 → 그날 마감 업무 */
  .lbox.cal-mode{margin:0 -16px;border:0;border-radius:0;background:none;box-shadow:none}
  .calbar{flex-wrap:wrap;justify-content:space-between;gap:8px;padding:8px 16px}
  .cal-nav{flex:none;gap:2px}
  .cal-nav > *{flex:none}   /* [‹] [›] [오늘] 은 40px 그대로 (줄면 누르는 칸이 13 · 6px 이 됐음) */
  .calbar .modes{margin-left:auto}
  .calbar .modes button{padding:0 10px}
  .calbar .modes button > svg[data-ic]{display:none}   /* 달 바꾸기 줄 한 줄에 맞추려고 달력 줄의 [목록|달력]만 글자만 */
  .cal-nav .cal-prev,.cal-nav .cal-next{width:40px;height:var(--h-touch);padding:0;border:0;background:none;font-size:var(--fs-20);color:var(--ink-700)}
  .cal-title{padding:0;font-size:18px}
  .cal-title .num-serif{font-size:20px}
  .cal-nav .cal-today{height:var(--h-touch);margin-left:2px;padding:0 10px}
  .cal-asap{align-items:flex-start;gap:8px;margin:0 16px;padding:0 10px 0 12px}
  .cal-asap .a-l{line-height:40px}
  .cal-asap .a-chips{flex:1;flex-direction:column;flex-wrap:nowrap;gap:0}
  .cal-asap .cal-chip{height:var(--h-touch);gap:8px;padding:0;border-radius:0;background:none}
  .cal-asap .cal-chip + .cal-chip{border-top:1px solid var(--late-line)}
  .cal-asap .c-who{display:none}
  .cal-asap .c-days{margin-left:auto;padding-left:8px;font-size:var(--fs-13)}
  .cal-box{margin:8px 16px 0;padding:4px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:14px;box-shadow:var(--sh-rest)}
  .cal-wk{padding:4px 0;border:0;background:none;font-size:var(--fs-13)}
  .cal-wd{padding:0}
  .cal{gap:2px;border:0}
  .cal-day{align-items:center;gap:3px;height:46px;min-height:0;padding:4px 0 0;border:0;border-radius:var(--r-control)}
  .cal-day:nth-child(7n){border:0}
  .cal-day:nth-child(7n),.cal-day:nth-child(7n+6),.cal-day.other{background:none}
  .cal-day.sel{background:var(--bg-soft)}
  .cal-num{justify-content:center}
  .cal-day .cal-chip,.cal-more,.cal-hol{display:none}
  .cal-dots{display:flex;gap:3px;height:6px}
  .cal-dots .dot{width:6px;height:6px}
  .cal-holl{display:block;padding:6px 6px 4px;font-size:var(--fs-13);color:var(--late-ink)}
  .cal-list{border-top:0}
  .cal-lh{gap:8px;padding:14px 16px 8px;border-bottom:1px solid var(--line-200)}
  .cal-lh b{font-size:var(--fs-16)}
  .cal-list > .row:last-child{border-bottom:1px solid var(--line-100);border-radius:0}
  .cal-none{background:var(--bg-surface);border-bottom:1px solid var(--line-100)}
  #modal{padding:0}
  .panel{border-radius:0;min-height:100%;max-width:none}
  /* 업무 등록 창 (폰): 화면 전체 · [닫기] 왼쪽 위 · 담당자 4열 · 마감일 3열(44px) · [등록] 50px 아래 고정 */
  .panel.tform{display:flex;flex-direction:column;max-width:none;border-radius:0;box-shadow:none}
  .tform .p-head{display:grid;grid-template-columns:80px minmax(0,1fr) 80px;flex:none;height:56px;padding:0 8px;border-bottom:1px solid var(--line-200)}
  .tform .p-ic,.tform .foot > svg[data-ic],.tform .p-x > svg[data-ic]{display:none}
  .tform h2{grid-column:2;grid-row:1;text-align:center;font-size:var(--fs-17)}
  .tform .p-x{grid-column:1;grid-row:1;justify-self:start;height:44px;padding:0 8px;border:0;background:none;color:var(--ink-700);font-size:var(--fs-16)}
  .tform .p-body{flex:1 0 auto;padding:18px 16px}
  .tform textarea{height:88px;border-radius:12px}
  .tform .people{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
  .tform .op{gap:4px;height:44px;padding:0 4px;border-radius:var(--r-pill)}
  .tform .op:has(input:checked){padding:0 3.5px}
  .tform .op svg{width:13px;height:13px}
  .tform .dues{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .tform .dues button{height:44px;padding:0 4px}
  .tform .dues button.on{padding:0 3.5px}
  .tform .dpick{position:relative;align-items:center;justify-content:center;height:44px;margin:0;border:1px solid var(--line-control);border-radius:var(--r-pill);background:var(--bg-surface);color:var(--ink-700);font-size:var(--fs-15);overflow:hidden}
  .tform .dp-t{display:block;pointer-events:none}
  .tform .dpick #f-due{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;font-size:var(--fs-16);cursor:pointer}
  .tform .dpick.on{border:1.5px solid var(--coral-500);background:var(--bg-surface);color:var(--ink-900);font-weight:var(--w-bold)}
  .tform .dpick:has(#f-due:disabled){opacity:.5}
  .tform .dpick:focus-within{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--primary)}
  .tform .ff.bad .dpick{border-color:var(--late-edge)}
  .tform .due-sum{display:block;font-size:var(--fs-14);color:var(--ink-700)}
  .tform .due-sum b{color:var(--ink-900)}
  .tform .psel select{height:46px;border-radius:12px}
  .tform .foot{position:sticky;bottom:0;flex-direction:column;align-items:stretch;gap:8px;padding:10px 16px 20px;border-top:1px solid var(--line-200);border-radius:0;background:var(--bg-surface)}
  .tform .mailhint{text-align:center}
  .tform .foot .f-close{display:none}
  .tform .foot button.primary{height:50px;font-size:var(--fs-17)}
  /* PJT 현황 (폰): 숫자 칸 4개 → [신호별|담당별] + 읽은 때 + [+ PJT 추가] → [주간보고 다시 읽기] → 미등록 PJT → PJT 하나 = 세 줄 (화면 폭) */
  body[data-view="pjt"] main{padding:12px 16px 96px}
  .ptbar{flex-direction:column;align-items:stretch;gap:8px;padding:0 0 8px}
  .counts.pc{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr)}
  .ptbar .tact{flex-wrap:wrap;gap:8px}
  .ptbar .modes button{padding:0 12px}
  .ptbar .fresh{order:-1;flex:1 1 100%;min-width:0;display:flex;flex-wrap:wrap;gap:0 6px;padding:0 2px;font-size:var(--fs-13);line-height:1.35}
  .ptbar .new{order:2;flex:1 1 100%;justify-content:center;height:var(--h-touch);padding:0 14px}
  .ptbar .reread{order:1;flex:1 1 0;min-width:0;justify-content:center;height:var(--h-touch);padding:0 12px;font-size:var(--fs-15)}
  .fresh-warn{margin:0 0 8px}
  .unmatched{margin:0 0 8px}
  .um-top{gap:8px;min-height:44px;padding:0 4px 0 12px}
  .um-sub{font-size:var(--fs-13)}
  .um-sub .pc-only{display:none}
  .um-top .link{height:var(--h-touch);padding:0 8px}
  .um-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"tag btn" "wk btn";column-gap:8px;row-gap:2px;padding:8px 8px 8px 12px}
  .um-tag{grid-area:tag}
  .um-wk{grid-area:wk;font-size:var(--fs-13)}
  .um-row button{grid-area:btn;height:var(--h-touch)}
  .pbox{margin:10px -16px 0;border-width:1px 0 0;border-radius:0;box-shadow:none}
  .phead{display:none}
  .pbox .ghead.grp{border-radius:0}
  .prow{height:auto;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"chip name" "sum sum" "meta meta";column-gap:8px;row-gap:4px;padding:11px 16px}
  .prow .p-chip{grid-area:chip}
  .prow .sig{height:24px;gap:5px;padding:0 9px;font-size:var(--fs-13)}
  .prow .sig .dot{width:6px;height:6px}
  .prow .p-name{grid-area:name;font-size:var(--fs-16)}
  .prow .p-sum{grid-area:sum;padding:0;font-size:var(--fs-15);line-height:1.5;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .prow .p-owner,.prow .p-open,.prow .p-late,.prow .p-last{display:none}
  .prow .p-m{grid-area:meta;display:block;font-size:var(--fs-13);color:var(--ink-500)}
  .prow .p-m.hot{color:var(--late-ink);font-weight:var(--w-bold)}
  .plegend{padding:4px 16px}
  .plegend .link{min-height:var(--h-touch)}
  /* PJT 카드 (폰): 줄 자리 카드 · 금주 → 차주 → 진행 중 업무 → 아래 띠(원문 · 변경 이력 · 담당 고르기 · [담당 바꾸기] · [PJT 삭제] 44px) */
  .pdetail{margin:8px;border-radius:var(--r-modal)}
  .pdetail > .prow{height:auto;padding:14px 16px 12px;border-radius:var(--r-modal) var(--r-modal) 0 0}
  .pdetail > .prow .p-name{font-size:var(--fs-17)}
  .p-body{grid-template-columns:minmax(0,1fr)}
  .p-col{padding:12px 16px;border-right:0;border-bottom:1px solid var(--line-100)}
  .p-text{line-height:1.6}
  .p-tasks{padding:12px 16px}
  .p-tasks .link{min-height:var(--h-touch);margin-top:0}
  .pdetail .d-foot{padding:8px 16px 16px}
  .p-foot .p-src{padding:8px 0 4px;font-size:var(--fs-13)}
  .d-btns.p-act{grid-template-columns:auto minmax(0,1fr);gap:8px}
  .p-act .p-ol{font-size:var(--fs-15)}
  .p-act select{width:100%;height:44px;font-size:var(--fs-16)}
  .p-act button{grid-column:1 / -1}
  .d-btns.p-act.sure{grid-template-columns:1fr 1fr}
  .d-btns.p-act.sure button{grid-column:auto}
  .pdetail .hist{padding:8px 16px 16px}
  .parchive{margin:12px -16px 0;border-width:1px 0 0;border-radius:0}
  .parchive .ghead.grp{border-radius:0}
  .arow{grid-template-columns:auto minmax(0,1fr) auto;column-gap:8px;padding:8px 16px}
  .arow .p-owner,.arow .a-log{display:none}
  .arow button{height:var(--h-touch)}
  /* 누르는 칸 36px 이상 (업무 등록 창 알약 · 마감일 단추는 44px) */
  #top .me button{min-height:36px}
}
/* 주간보고 (폰): 위 줄 = 「주간보고」 + [인쇄] / WW 단추 + 그 전 주 / 파일 이름 · 쪽 수. 종이는 화면 폭 (Letter 비율 그대로).
   screen 으로만 잡는다: 인쇄 때 Edge 가 폭을 767px 아래로 재서 폰 규칙(여백)이 섞이면 종이가 줄고 빈 장이 생김 (10-14 실측) */
@media screen and (max-width:767px){
  body[data-view="report"] main{padding:0 0 96px}
  .wr-top{gap:10px;min-height:0;padding:10px 16px 12px}
  .wk-bar{gap:8px 12px}
  .wk-title{flex:1;min-width:0}
  .wk-print{order:2;height:var(--h-touch);padding:0 18px}
  .wk-pick{order:3;flex:1 1 100%;margin-left:0}
  .wk-seg{flex:none}
  .wk-seg button{padding:0 12px}
  .wk-older{flex:1;min-width:0;max-width:none;height:var(--h-touch)}
  .wk-file{order:4;flex:1 1 100%}
  .wk-note{display:none}
  .wk-tap{display:block;order:5;flex:1 1 100%;font-size:var(--fs-13);color:var(--ink-500)}
  .wk-body{padding:16px 16px 24px}
  .wk-msg{padding:16px}
  /* 주간보고 작성 칸 (폰): 카드 한 줄로 쌓기 · 칸 둘도 아래로 · 글 칸 16px · 누르는 칸 40px 이상 · 그림은 줄바꿈 */
  .wr-switch{flex:1 1 100%}
  .wr-seg{flex:1}
  .wr-seg button{flex:1;padding:0 8px}
  .wr-bar{gap:8px 10px}
  .wr-title{flex:1 1 100%;font-size:var(--fs-20)}
  .wr-wk{height:var(--h-touch);font-size:var(--fs-15)}
  .wr-tip{display:none}
  .wr-body{padding:14px 16px 24px;gap:12px}
  .wr-lead{padding:14px}
  .wr-lead-top button{height:var(--h-touch)}
  .wr-lead-t{flex:1 1 calc(100% - 52px);margin-right:0}   /* 윗줄 = 아이콘 + 팀장 합본 · 아랫줄 = [안 쓴 PJT][합본 만들기] 반반 */
  .wr-lead-top [data-act="wr-missing"],.wr-lead-top .wr-all,.wr-lead-top [data-act="wr-build"]{flex:1 1 calc(50% - 6px);height:var(--h-touch-lg);padding:0 10px}
  .wr-lead-top .wr-all{display:flex;align-items:center;height:auto}
  .wp-cells{flex:1 1 100%;max-width:none}
  .wr-res-btns{flex:1 1 100%;margin-left:0}
  .wr-res-btns button{flex:1;height:var(--h-touch)}
  .wr-pv-tog{height:var(--h-touch)}
  .wr-preview{padding:12px 8px}
  .wr-card{padding:12px 14px 14px}
  .wr-cells{grid-template-columns:minmax(0,1fr);gap:14px}
  .wr-text{font-size:var(--fs-16);min-height:120px}
  .wr-img{width:calc(50% - 5px)}
  .wr-ibtns button{flex:1;height:var(--h-touch);padding:0 4px;font-size:var(--fs-14)}
  .wr-conflict button{height:var(--h-touch)}
  .wr-foot button{flex:1;height:var(--h-touch-lg)}
  .wr-stale > button,.wr-again > button{flex:1 1 100%;height:var(--h-touch-lg)}
}
@media (min-width:768px){ .row .c-m{display:none} }
/* 374 이하: 회사 로고를 숨기고 망고 + 「영업 Mango」 를 말줄임 없이 (망고가 붙어 이름 줄이 길어짐 · 10-15 밤) */
@media (max-width:374px){ #top .brand .logo{display:none} #top .brand .name{font-size:var(--fs-15)} #menu button > svg[data-ic]{display:none} .counts .c .l{white-space:normal;text-align:center} }
/* 360 폭 (갤럭시 기본): 필터 칸 안 여백 · 꺾쇠를 줄여 「완료 제외」 가 다 보이게 · 아랫줄(담당 · PJT · 등록자)은 자르지 않고 줄바꿈 ·
   미등록 PJT 이름 줄은 숨김(펼치면 나옴) · AI 비서 칸은 「AI 비서」 글자를 빼고 표식만 (입력 안내가 다 보이게) */
@media (max-width:374px){ .filters.tf .fsel{padding:0 4px 0 8px} .filters.tf .fsel.set{padding:0 0 0 7.5px} .filters.tf .fsel > svg{width:12px;height:12px}
  .row .c-m{white-space:normal;overflow:visible} .row .c-due-m{align-self:start}
  .um-sub{display:none} .um-top .link{margin-left:auto}
  #ai .lab{display:none} }
/* 389 이하 (360 · 375): 달 바꾸기 줄이 한 줄에 안 들어가 [목록|달력]을 다음 줄 가득 (아이콘 다시 보임) */
@media (max-width:389px){ .calbar .modes{flex:1 1 100%} .calbar .modes button{flex:1;padding:0 14px} .calbar .modes button > svg[data-ic]{display:inline-block} }
/* == 관리자 모드 (10-15 · 이학준만) ==
   머리줄 (PC): 꺼짐 = [자물쇠 관리자] 보조 단추 ([사용법] 왼쪽) · 켜짐 = 먹색 알약 「자물쇠(코랄) 관리자 모드 · N분 남음」 + [나가기](흰 알약) + 메뉴 [관리](방패).
   폰: 꺼짐 = 메뉴 줄 [사용법] 왼쪽 자물쇠 칸 · 켜짐 = 머리 아래 먹색 띠 「관리자 모드 · N분 남음 [관리] [나가기]」 (아래 폰 규칙).
   다른 사람 화면으로 보는 중(body[data-as]) = 맨 위 띠(크림 + 코랄 왼쪽 선) · AI 비서 · 종 숨김 (그 화면에서는 쓰기를 안 보냄) */
#top .me .adm{display:inline-flex;align-items:center;flex:none}
#top .me .adm-open{display:inline-flex;align-items:center;padding:0 12px 0 11px}
#top .me .adm-open > svg[data-ic]{width:15px;height:15px;margin:0 5px 0 -2px;color:var(--ink-500)}
#top .me .adm.on{gap:8px;height:36px;padding:0 4px 0 12px;border-radius:var(--r-pill);background:var(--primary);color:#fff}
#top .me .adm-mark{display:inline-flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;font-size:var(--fs-14)}
#top .me .adm-mark b{color:#fff}
#top .me .adm-mark > svg[data-ic]{flex:none;width:16px;height:16px;color:var(--coral-300)}
#top .me .adm-left{color:var(--line-200)}
#top .me .adm.on button{height:28px;padding:0 12px;border:0;border-radius:var(--r-pill);background:var(--bg-surface);color:var(--ink-900);font-size:var(--fs-13);font-weight:var(--w-bold)}
#top .me .adm.on button:hover{background:var(--bg-cream)}
#top .me .adm .adm-go{display:none}
/* 켜짐 (PC): 표식 · 메뉴 [관리] 자리만큼 AI 비서 칸이 줄어듦 → 「AI 비서」 글자 · 「님」 · [사용법] 아이콘을 뺌 (AI 표식은 남김 · 좁은 PC 와 같은 방식) */
body[data-adm="on"] #ai .lab,body[data-adm="on"] #who .nim,body[data-adm="on"] #top .me .guide > svg[data-ic]{display:none}
/* 켜짐 · 768~1439 (태블릿 · 1280 · 1366 노트북): 머리줄에 알약을 두면 AI 비서 칸이 0px 이 되고 [물어보기]가 알약을 덮음 (검토 r3) →
   폰처럼 머리 아래 먹색 띠 44px 「관리자 모드 · N분 남음 [관리] [나가기]」 · 메뉴 [관리] 는 띠로 · 머리 = 56 + 44 (--h-header 로 AI 판 · 알림 판 · 보기만 띠도 같이 내려감) */
@media (min-width:768px) and (max-width:1439px){
  body[data-adm="on"]{--h-header:100px}
  body[data-adm="on"] #top{padding-bottom:44px}
  #top .me .adm.on{position:absolute;left:0;right:0;top:55px;height:44px;gap:8px;padding:0 16px 0 24px;border-radius:0}
  #top .me .adm.on .adm-mark{flex:1;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-15)}
  #top .me .adm.on button{height:32px;padding:0 16px;font-size:var(--fs-14)}
  #top .me .adm .adm-go{display:inline-flex;align-items:center}
  #top .me .adm .adm-go.cur{box-shadow:inset 0 0 0 2px var(--coral-500)}
  body[data-adm="on"] #menu [data-tab="admin"]{display:none}
  html:has(> body[data-adm="on"]){scroll-padding-top:116px}
}
body[data-as] #ai,body[data-as] #bell{display:none !important}
/* 변경 이력 · 처리 내용의 「관리자」 꼬리표 (AI 비서 꼬리표와 같은 크기 · 크림 알약 + 자물쇠) */
.adm-by{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 7px 0 5px;border-radius:var(--r-pill);background:var(--bg-cream);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-700);vertical-align:1px;white-space:nowrap}
.adm-by > svg[data-ic]{width:12px;height:12px;color:var(--ink-500)}
.mine.adm{border-style:dashed;border-color:var(--line-input)}   /* 관리자 모드로 바꾸는 상태 상자 (담당이 아닌 업무) */
/* 관리자 모드 · 담당 여럿: 「누구 몫」 고르기 (16px · 높이 = 3칸과 같은 42px · 폰 44px) */
.mine-who{display:flex;align-items:center;gap:10px}
.mine-who .d-h{flex:none}
.mine-who .psel{position:relative;display:block;flex:1 1 auto;min-width:0}
.mine-who select{appearance:none;-webkit-appearance:none;width:100%;height:42px;padding:0 40px 0 14px;border-color:var(--line-control);background:var(--bg-surface);font-size:var(--fs-16)}
.mine-who .psel svg{position:absolute;right:16px;top:50%;width:14px;height:14px;margin-top:-7px;color:var(--ink-500);pointer-events:none}
@media (max-width:767px){ .mine-who select{height:44px} }
/* 업무 창 관리자 확인 (메일 받는 사람 · 한 번 더 누름): 크림 상자 + 코랄 왼쪽 선 */
.tform .f-sure{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:12px;background:var(--bg-cream);box-shadow:inset 3px 0 0 var(--coral-500);font-size:var(--fs-14);color:var(--ink-700);line-height:1.5}
.tform .f-sure > svg[data-ic]{flex:none;width:16px;height:16px;margin-top:2px;color:var(--ink-500)}
.tform .f-sure b{color:var(--ink-900)}
/* 다른 사람 화면으로 보는 중 띠: 화면 맨 위 · 내려도 머리줄 아래 붙음 */
.as-band{position:sticky;top:var(--h-header);z-index:12;display:flex;align-items:center;gap:10px;margin:12px 0 0;padding:8px 8px 8px 16px;background:var(--bg-cream);border:1px solid var(--line-200);border-radius:14px;box-shadow:inset 4px 0 0 var(--coral-500),var(--sh-rest);font-size:var(--fs-15);color:var(--ink-700)}
.as-band > svg[data-ic]{flex:none;width:18px;height:18px;color:var(--ink-700)}
.as-band .as-t{flex:1;min-width:0}
.as-band .as-t b{color:var(--ink-900)}
.as-band button{flex:none;display:inline-flex;align-items:center;height:36px;padding:0 16px;font-size:var(--fs-14)}
body[data-view="report"] .as-band{margin:12px 32px}
.as-wait{padding:40px 10px}
/* 관리 화면: 제목 줄 → 사람 · 역할 표 → 다른 사람 화면으로 보기 → 관리자 기록 (상자 = 흰 + 1px 선 · 머리 아이콘 코랄) */
.adm-sub{font-size:var(--fs-13);color:var(--ink-500)}
.adm-err{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:10px 14px;border-radius:12px;background:var(--late-bg);color:var(--late-ink);font-size:var(--fs-14);font-weight:var(--w-bold)}
.adm-err > svg[data-ic]{flex:none;width:16px;height:16px}
.adm-box{margin:0 0 16px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:var(--r-box);box-shadow:var(--sh-rest);overflow:hidden}
.adm-h{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;min-height:56px;padding:8px 12px 8px 20px;border-bottom:1px solid var(--line-100)}
.adm-h > svg[data-ic]{width:18px;height:18px;color:var(--coral-500)}
.adm-ht{font-size:var(--fs-17)}
.adm-hs{font-size:var(--fs-13);color:var(--ink-500)}
.adm-h .adm-add{margin-left:auto;height:var(--h-button);padding:0 18px;font-size:var(--fs-14)}
.adm-thead,.adm-row{display:grid;grid-template-columns:130px 100px 140px minmax(0,1fr) 100px 120px 170px;align-items:center;column-gap:12px;padding:0 16px 0 20px}
.adm-thead{height:38px;background:var(--bg-sub);border-bottom:1px solid var(--line-200);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-500);white-space:nowrap}
.adm-row{min-height:50px;padding-top:6px;padding-bottom:6px;border-bottom:1px solid var(--line-100);font-size:var(--fs-14);color:var(--ink-700)}
.adm-row:last-child{border-bottom:0}
.adm-row.me{background:var(--bg-soft)}
.au-name{min-width:0;font-size:var(--fs-15);color:var(--ink-900);overflow-wrap:anywhere}
.au-me{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:var(--r-pill);background:var(--primary);color:#fff;font-size:var(--fs-13);vertical-align:1px}
.au-title.none{color:var(--ink-400)}
.au-gw,.au-mail{min-width:0;overflow-wrap:anywhere}
.au-role{justify-self:start;display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:var(--r-pill);background:var(--bg-cream);font-size:var(--fs-13);font-weight:var(--w-bold);color:var(--ink-700);white-space:nowrap}
.au-ed{font-size:var(--fs-13);color:var(--ink-400)}
.au-ed.on{color:var(--ink-900);font-weight:var(--w-bold)}
.au-btns{display:flex;gap:6px;justify-content:flex-end}
.au-btns button{display:inline-flex;align-items:center;height:34px;padding:0 14px;font-size:var(--fs-14);white-space:nowrap}
.adm-pick{display:flex;flex-wrap:wrap;gap:8px;padding:14px 20px 18px}
.adm-who{display:inline-flex;align-items:center;gap:8px;height:var(--h-button);padding:0 16px 0 12px;font-size:var(--fs-15)}
.adm-who > svg[data-ic]{margin:0;color:var(--ink-500)}
.adm-who .r{font-size:var(--fs-13);color:var(--ink-500)}
.adm-logs{list-style:none;margin:0;padding:4px 0}
.adm-logs .ll{display:grid;grid-template-columns:96px 70px minmax(0,240px) minmax(0,1fr);column-gap:12px;align-items:baseline;padding:8px 20px;border-bottom:1px solid var(--line-100);font-size:var(--fs-14);line-height:1.5}
.adm-logs .ll:last-child{border-bottom:0}
/* 「백업」 칸 (10-15 백업 설계서) · 머리줄 [관리자] 옆 경고 점 */
.adm-warn{display:inline-block;flex:none;width:8px;height:8px;margin:0 0 0 6px;border-radius:50%;background:var(--late-dot);box-shadow:0 0 0 2px var(--bg-surface);vertical-align:middle}
.bk-list{padding:4px 0}
.bk-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;padding:10px 20px;border-bottom:1px solid var(--line-100);font-size:var(--fs-14);line-height:1.5}
.bk-row .bk-where{flex:none;min-width:72px;color:var(--ink-900)}
.bk-row .bk-res{flex:none;padding:1px 8px;border-radius:999px;font-size:var(--fs-13);font-weight:var(--w-bold);background:var(--done-bg);color:var(--done-ink)}
.bk-row .bk-res.ok{background:var(--run-bg);color:var(--run-ink)}
.bk-row .bk-res.fail{background:var(--late-bg);color:var(--late-ink)}
.bk-row .bk-at{color:var(--ink-700)}
.bk-row .bk-err{color:var(--late-ink);font-weight:var(--w-bold)}
.bk-row .bk-keep{margin-left:auto;color:var(--ink-500);font-size:var(--fs-13)}
.bk-foot{display:flex;flex-wrap:wrap;gap:4px 16px;padding:10px 20px 12px;font-size:var(--fs-13);color:var(--ink-500)}
.bk-foot .bad,.bk-foot .bk-disk{color:var(--late-ink);font-weight:var(--w-bold)}
/* 「AI 사용」 칸 (10-19) */
.aiu-sum{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;padding:12px 20px 4px;font-size:var(--fs-15)}
.aiu-left{color:var(--ink-700)}
.aiu-left.bad,.aiu-over{color:var(--late-ink);font-weight:var(--w-bold)}
.aiu-tok,.aiu-note{padding:2px 20px;font-size:var(--fs-13);color:var(--ink-500);overflow-wrap:anywhere}
.aiu-over{display:flex;align-items:center;gap:6px;padding:6px 20px;font-size:var(--fs-14)}
.aiu-lim{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:10px 20px;border-bottom:1px solid var(--line-100)}
.aiu-ll{font-size:var(--fs-14);color:var(--ink-700)}
.aiu-in{width:160px;max-width:100%}
.aiu-lim button{height:var(--h-button);padding:0 18px;font-size:var(--fs-14)}
.aiu-people{padding:4px 0;border-bottom:1px solid var(--line-100)}
.aiu-p{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 12px;padding:8px 20px;font-size:var(--fs-14);line-height:1.5}
.aiu-p .aiu-who{flex:none;min-width:56px;color:var(--ink-900)}
.aiu-p .aiu-pn{color:var(--ink-700);font-variant-numeric:tabular-nums}
.aiu-p .aiu-top{flex:1 1 100%;min-width:0;color:var(--ink-500);font-size:var(--fs-13);overflow-wrap:anywhere}
.aiu-rec .ll{grid-template-columns:96px 70px minmax(0,1fr) auto}
.aiu-rec .aiu-qc{color:var(--ink-500);font-size:var(--fs-13);font-variant-numeric:tabular-nums}
.aiu-more{padding:8px 20px 12px}
@media (max-width:760px){.bk-row{padding:10px 16px}.bk-row .bk-keep{margin-left:0}.bk-foot{padding:10px 16px 12px}}
.ll-at{color:var(--ink-500);font-variant-numeric:tabular-nums}
.ll-by,.ll-what{min-width:0;color:var(--ink-900);overflow-wrap:anywhere}
.ll-diff{min-width:0;color:var(--ink-500);font-size:var(--fs-13);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 비밀번호 창 · 사람 창 · 빼기 창 (업무 등록 창과 같은 .tform) */
.tform .adm-what{font-size:var(--fs-13);color:var(--ink-500);line-height:1.55}
.tform .adm-hint{padding:8px 12px;border-radius:10px;background:var(--bg-cream);color:var(--ink-700);font-size:var(--fs-14)}
.tform .adm-ask{font-size:var(--fs-17);color:var(--ink-900)}
.tform .ff > .op{align-self:flex-start}
.tform .foot button.warn.sure{border-color:var(--late-ink);background:var(--late-ink);color:#fff;font-weight:var(--w-bold)}
.tform .foot button.warn.sure:hover{border-color:var(--late-ink-strong);background:var(--late-ink-strong)}
@media (max-width:767px){
  /* 꺼짐: 메뉴 줄 [사용법] 왼쪽 자물쇠 칸 48px (메뉴 3칸은 그만큼 좁힘 · 머리 높이 그대로) */
  body[data-adm="off"] #menu{margin-right:124px}
  #top .me .adm:not(.on){display:contents}   /* 위 줄 칸 사이(6px)를 안 차지함 (360 에서 「영업 Mango」 이 안 잘리게) */
  #top .me .adm-open{position:absolute;right:76px;top:52px;width:48px;height:46px;min-height:0;padding:0;border:0;border-left:1px solid var(--line-100);border-top:1px solid var(--line-100);border-radius:0;background:none;color:var(--ink-700);justify-content:center}
  #top .me .adm-open > svg[data-ic]{width:20px;height:20px;margin:0;color:var(--ink-700)}
  #top .me .adm-open .adm-t{display:none}
  /* 켜짐: 머리 아래 먹색 띠 48px (머리 = 52 + 메뉴 46 + 띠 48) · [관리] [나가기] 40px · 메뉴 [관리] 는 띠로 */
  body[data-adm="on"] #top{padding-bottom:48px}
  #top .me .adm.on{position:absolute;left:0;right:0;top:98px;height:48px;gap:6px;padding:0 8px 0 16px;border-radius:0}
  #top .me .adm.on .adm-mark{flex:1;overflow:hidden;text-overflow:ellipsis}
  #top .me .adm.on button{height:40px;padding:0 14px;font-size:var(--fs-15)}
  #top .me .adm .adm-go{display:inline-flex;align-items:center}
  #top .me .adm .adm-go.cur{box-shadow:inset 0 0 0 2px var(--coral-500)}
  #menu [data-tab="admin"]{display:none}
  html:has(> body[data-adm="on"]){scroll-padding-top:158px}
  .as-band{top:147px;margin:0 0 10px;padding:6px 6px 6px 14px;font-size:var(--fs-14)}
  .as-band button{height:var(--h-touch);padding:0 14px;font-size:var(--fs-15)}
  body[data-view="report"] .as-band{margin:10px 16px}
  /* 관리 화면 (폰): 표 → 사람마다 카드 (이름 + 역할 / 아이디 / 메일 / 직함 · 합본 / [고치기][빼기] 44px) */
  body[data-view="admin"] main{padding:12px 16px 96px}
  .tform .ff > .op{padding:0 14px}   /* 사람 창 「주간보고 합본」 알약 (업무 등록 창 담당 4열 알약보다 넓게) */
  .tform .ff > .op:has(input:checked){padding:0 13.5px 0 9.5px}
  /* 창 안 문구(오류 · 관리자 메일 확인)로 내려갈 때 고정 아래 줄([등록] 50px · 안내 줄)에 안 가리게 (검토 r4 · r5) */
  .tform .err,.tform .f-sure{scroll-margin:12px 0 150px}
  .adm-h{padding:8px 12px 8px 16px}
  .adm-h .adm-add{flex:1 1 100%;height:var(--h-touch);margin:4px 0 2px;justify-content:center;font-size:var(--fs-15)}
  .adm-thead{display:none}
  .adm-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name role" "gw gw" "mail mail" "title ed" "btns btns";row-gap:4px;padding:12px 16px}
  .au-name{grid-area:name}
  .au-role{grid-area:role;justify-self:end}
  .au-gw{grid-area:gw}
  .au-mail{grid-area:mail}
  .au-title{grid-area:title}
  .au-ed{grid-area:ed;justify-self:end}
  .au-btns{grid-area:btns;display:grid;grid-template-columns:1fr 1fr;margin-top:6px}
  .au-btns button{height:44px;justify-content:center;font-size:var(--fs-15)}
  .au-btns button:only-child{grid-column:1 / -1}
  .adm-pick{padding:12px 16px 16px}
  .adm-who{flex:1 1 calc(50% - 4px);min-width:0;height:44px}
  .adm-logs .ll{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"at by" "what what" "diff diff";row-gap:2px;padding:10px 16px}
  .ll-at{grid-area:at}
  .ll-by{grid-area:by}
  .ll-what{grid-area:what}
  .ll-diff{grid-area:diff;white-space:normal}
}

/* ---------- 공지 띠 + 의견 보내기 (10-15) — 크림 바탕 · 코랄 테두리 정보 띠 (신호 색 아님) ---------- */
#top .me .fbk{display:inline-flex;align-items:center;padding:0 11px}
#top .me .fbk > svg[data-ic]{width:15px;height:15px;margin:0 4px 0 -2px}
/* 1599 이하 PC: 머리줄 [의견 보내기] = 말풍선 아이콘만 (글은 aria-label · title) — AI 비서 입력칸 600px 를 지킴 (1440 에서 글까지 두면 484px) */
@media (min-width:768px) and (max-width:1599px){ #top .me .fbk{width:36px;padding:0;justify-content:center;font-size:0} #top .me .fbk > svg[data-ic]{width:18px;height:18px;margin:0} #top .me .guide > svg[data-ic]{display:none} #top .me .guide{padding:0 8px} #who .nim{display:none} }
.fb-band{display:flex;align-items:center;gap:10px;margin:12px 24px 0;padding:6px 6px 6px 16px;background:var(--bg-cream);border:1px solid var(--coral-300);border-left:4px solid var(--coral-500);border-radius:12px;color:var(--ink-900);font-size:var(--fs-14)}
.fb-band[hidden]{display:none}
.fb-band > svg[data-ic]{flex:none;width:18px;height:18px;color:var(--coral-600)}
.fb-band .fb-b-t{flex:1;min-width:0;line-height:1.45}
.fb-band button{flex:none;height:34px;padding:0 14px;font-size:var(--fs-14)}
.fb-band .fb-b-x{border:0;background:none;color:var(--ink-500);padding:0 10px}
.fb-band .fb-b-x:hover{background:rgba(20,20,19,.06)}
.fb-form{max-width:640px}
.fb-kinds .op{cursor:pointer}
.fb-kinds .op.on{border-color:var(--coral-500);box-shadow:inset 0 0 0 1px var(--coral-500);background:var(--bg-cream);font-weight:var(--w-bold)}
.fb-guide{margin:0 0 6px;font-size:var(--fs-14);color:var(--ink-700)}
.fb-form textarea#fb-text{height:150px;font-size:16px}
.fb-short{margin-top:6px;font-size:var(--fs-13);color:var(--ink-700)}
.fb-short[hidden]{display:none}
.fb-mine{margin-top:16px;padding-top:12px;border-top:1px solid var(--line-100)}
.fb-mh{display:block;margin-bottom:8px;font-size:var(--fs-15)}
.fb-none{font-size:var(--fs-14);color:var(--ink-500)}
.fb-list{list-style:none;margin:0;padding:0}
.fb-row{padding:10px 0;border-bottom:1px solid var(--line-100);min-width:0}
.fb-row:last-child{border-bottom:0}
.fb-top{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:var(--fs-13);color:var(--ink-500)}
.fb-top .fb-k{color:var(--ink-900);font-size:var(--fs-14)}
.fb-st{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-pill);background:var(--bg-cream);color:var(--ink-700);font-size:var(--fs-13)}
.fb-st.st-1{background:var(--run-bg);color:var(--run-ink)}
.fb-st.st-2{background:var(--done-bg);color:var(--done-ink)}
.fb-st.st-3{background:var(--hold-bg);color:var(--hold-ink)}
.fb-tx{margin-top:4px;font-size:var(--fs-14);color:var(--ink-900);white-space:pre-wrap;overflow-wrap:anywhere}
.fb-re{margin-top:6px;padding:6px 10px;border-radius:8px;background:var(--bg-soft);font-size:var(--fs-14);color:var(--ink-700);overflow-wrap:anywhere}
.fb-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.fb-ctl .fb-reply{flex:1;min-width:200px;height:36px;padding:0 10px;font-size:var(--fs-14)}
.fb-ctl button{height:36px}
.adm-notice .fb-on{display:flex;align-items:center;gap:8px;margin:4px 0 8px;font-size:var(--fs-15);cursor:pointer}
.adm-notice .fb-on input{width:18px;height:18px}
.adm-notice .fb-notice{display:block;width:100%;padding:8px 10px;border-radius:10px;font-size:var(--fs-15);line-height:1.5;resize:vertical}
.adm-notice .fb-ns{margin-top:8px;height:36px}
#fb-foot{display:none}
body[data-adm="on"] #top .me .fbk{display:none}   /* 관리자 모드 켜짐: 머리줄 자리 = 관리자 표시 (의견은 띠 · 의견함) */
@media print{ #fb-band,#fb-foot,#top .me .fbk{display:none !important} }
@media (max-width:1099px){
  #top .me .fbk{display:none}
  #fb-foot{display:flex;justify-content:center;padding:4px 16px 96px}
  #fb-foot button{display:inline-flex;align-items:center;height:var(--h-touch);padding:0 16px;font-size:var(--fs-15)}
}
@media (max-width:767px){
  /* 폰: 띠 = 글 두 줄까지 + [의견 보내기] + 닫기(✕) · [의견 보내기] 는 화면 맨 아래 (#fb-foot) */
  .fb-band{margin:10px 16px 0;padding:4px 4px 4px 12px;gap:6px;font-size:var(--fs-14)}
  .fb-band > svg[data-ic]{display:none}
  .fb-band .fb-b-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .fb-band button{height:var(--h-touch);padding:0 10px;font-size:var(--fs-14)}
  .fb-band .fb-b-x{width:40px;padding:0;font-size:0;justify-content:center}
  .fb-band .fb-b-x > svg[data-ic]{margin:0;width:18px;height:18px}
  .fb-kinds .op{height:var(--h-touch)}
  .fb-ctl .fb-reply{min-width:0;width:100%;height:var(--h-touch);font-size:16px}
  .fb-ctl button{height:var(--h-touch)}
  .adm-notice .fb-notice{font-size:16px}
  .adm-notice .fb-ns{height:var(--h-touch)}
}
/* ---------- 공지 (10-15 2차 E): 띠 = 옛 의견 안내 띠 모양 그대로 (.fb-band) + 중요 공지는 붉은 테 · 공지 판 · 등록 창 ---------- */
.nt-band.imp{border-color:var(--late-line);border-left-color:var(--late-dot);background:var(--late-bg)}
.nt-band.imp > svg[data-ic]{color:var(--late-ink)}
.nt-band .nt-b-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nt-band .nt-b-k{margin-right:2px}
.nt-form{max-width:640px}
.nt-form .nt-new{align-self:flex-start;height:38px;padding:0 16px}
.nt-form #nt-body{height:150px}
.nt-list{list-style:none;margin:0;padding:0}
.nt-item{padding:12px 0;border-bottom:1px solid var(--line-100);min-width:0}
.nt-item:last-child{border-bottom:0}
.nt-item.ended{opacity:.75}
.nt-top{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.nt-t{font-size:var(--fs-16);color:var(--ink-900);overflow-wrap:anywhere}
.nt-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-pill);font-size:var(--fs-13);background:var(--bg-cream);color:var(--ink-700)}
.nt-tag.imp{background:var(--late-bg);color:var(--late-ink)}
.nt-tag.new{background:var(--run-bg);color:var(--run-ink)}
.nt-meta{margin-top:4px;font-size:var(--fs-13);color:var(--ink-500)}
.nt-body{margin-top:6px;font-size:var(--fs-15);line-height:1.55;color:var(--ink-900);white-space:pre-wrap;overflow-wrap:anywhere}
.nt-ctl{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.nt-ctl button{display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 12px;font-size:var(--fs-14)}
.nt-ctl button > svg[data-ic]{width:15px;height:15px}
/* 읽은 사람 (쓴 사람 · 관리자 모드): 정보 줄 아래 작은 알약 단추 · 누르면 안 읽은 사람 이름 (작은 글씨 · 연한 바탕) */
.nt-rd{margin-top:6px;min-width:0}
.nt-rd button{display:inline-flex;align-items:center;height:28px;padding:0 10px;font-size:var(--fs-13);color:var(--ink-700)}
.nt-rd button[aria-expanded="true"]{border-color:var(--ink-500);color:var(--ink-900)}
.nt-rd-list{margin-top:6px;padding:8px 12px;border-radius:var(--r-control);background:var(--bg-sub);font-size:var(--fs-13);line-height:1.5;color:var(--ink-700);overflow-wrap:anywhere}
.nt-pt{align-self:flex-start;display:inline-flex;align-items:center;gap:4px}
.nt-pt > svg[data-ic]{width:15px;height:15px}
.nt-per{align-items:center}
.nt-per .nt-until{width:170px;height:38px}
.nt-per .nt-until:disabled{opacity:.45}
.nt-imp{display:flex;align-items:center;gap:8px;font-size:var(--fs-15);cursor:pointer}
.nt-imp input{width:18px;height:18px}
.al-foot .al-nt{margin-left:8px}
.al-ic.k-notice{background:var(--bg-cream)}
.al-ic.k-notice svg[data-ic]{color:var(--coral-600)}   /* 코랄은 아이콘에만 (글자색 금지 게이트) */
/* PJT 현황 숫자 칸 필터 (10-15 2차 D): 「정체 PJT 만 보는 중」 + [전체 보기] */
.p-only{display:flex;align-items:center;gap:10px;margin:14px 0 0}
/* 새 버전 띠 (10-15 2차 F): 화면 위 가운데에 떠 있음 (로그인 화면에도) */
.ver-band{position:fixed;top:10px;left:50%;transform:translateX(-50%);z-index:300;display:flex;align-items:center;gap:10px;max-width:calc(100% - 32px);padding:6px 6px 6px 16px;background:var(--bg-surface);border:1px solid var(--line-200);border-radius:12px;box-shadow:var(--sh-modal);font-size:var(--fs-15);color:var(--ink-900)}
.ver-band[hidden]{display:none}
.ver-band > svg[data-ic]{flex:none;width:18px;height:18px;color:var(--ink-700)}
.ver-band .ver-t{min-width:0}
.ver-band button{flex:none;height:34px;padding:0 14px}
.ver-band button.ver-x{width:34px;padding:0;border:0;background:none;color:var(--ink-500);font-size:var(--fs-16)}
@media print{ #nt-band,#ver-band{display:none !important} }
@media (max-width:767px){
  .nt-band .nt-b-t{white-space:normal}
  .nt-ctl button,.nt-form .nt-new{height:var(--h-touch)}
  .nt-rd button{height:var(--h-touch);font-size:var(--fs-14)}
  .nt-per .nt-until{width:100%;height:var(--h-touch);font-size:16px}
  .nt-form .p-in{font-size:16px}
  .nt-imp input{font-size:16px}
  .ver-band{top:8px;padding:4px 4px 4px 12px;font-size:var(--fs-14)}
  .ver-band button{height:var(--h-touch)}
  .p-only .p-all{height:var(--h-touch)}
}

/* 보고 (10-19): 받은/보낸 보고 목록 · 상세 판(업무 상세 판 .dpanel 그대로) · 한 줄 답 */
.rp-top{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:16px 0 12px}
.rp-seg button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.rp-list{background:var(--bg-surface);border:1px solid var(--line-200);border-radius:12px;overflow:hidden}
.rp-row{display:block;padding:12px 16px;border-top:1px solid var(--line-100);cursor:pointer;min-width:0}
.rp-row:first-child{border-top:0}
.rp-row:hover,.rp-row.sel{background:var(--bg-hover)}
.rp-t{display:flex;align-items:center;gap:8px;font-size:var(--fs-15);min-width:0;overflow-wrap:anywhere}
.rp-dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--coral-500)}
.rp-m{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:4px;font-size:var(--fs-13);color:var(--ink-500);overflow-wrap:anywhere}
.rp-title{margin:0 0 10px;font-size:var(--fs-17);overflow-wrap:anywhere}
.rp-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-15);line-height:var(--lh-body);padding:12px 14px;margin:12px 0;background:var(--bg-soft);border:1px solid var(--line-100);border-radius:10px}
.rp-acts{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
.rp-replies{display:flex;flex-direction:column;gap:8px}
.rp-reply{padding:8px 12px;border:1px solid var(--line-100);border-radius:10px;background:var(--bg-surface);overflow-wrap:anywhere}
.rp-reply.me{background:var(--bg-cream)}
.rp-reply .rp-at{margin-left:8px;font-size:var(--fs-13);color:var(--ink-500)}
.rp-say{display:flex;gap:8px;margin-top:12px}
.rp-say input{flex:1;min-width:0;font-size:var(--fs-16);padding:8px 10px;border:1px solid var(--line-input);border-radius:8px}
.rp-form input#rp-f-title{width:100%;box-sizing:border-box;font-size:var(--fs-16);padding:8px 10px;border:1px solid var(--line-input);border-radius:8px}
.frow2 .rp-go{flex:none;min-height:40px}

/* == 의견함 A묶음 (10-21) ==
   1. 업무 숫자 칸 = 얇은 띠 한 줄 (명노광 전무님 「목록이 더 보이게」): 112 → 52px · 작은 아이콘 · 이름 · 숫자 · 설명 줄은 오른쪽 · 누르면 필터 · 기간 고르기 그대로.
      폰 = 68 → 40px 한 줄 (점 · 이름 · 숫자). PJT 현황 숫자 칸(.counts.pc)은 그대로 */
@media (min-width:768px){
  #app .counts.slim{gap:10px}
  #app .counts.slim .kpi > .c{height:52px;grid-template-columns:auto auto auto minmax(0,1fr);grid-template-rows:1fr;grid-template-areas:"ic l n .";align-items:center;gap:0 9px;padding:0 14px 0 12px;border-radius:14px}
  #app .counts.slim .c .l{padding-top:0;font-size:var(--fs-15)}
  #app .counts.slim .c .ci{width:28px;height:28px;border-radius:9px}
  #app .counts.slim .c .ci svg[data-ic]{width:16px;height:16px}
  #app .counts.slim .c .ci.ci-mg .mg{width:20px;height:20px}
  #app .counts.slim .kpi > .c b{align-self:center;margin-top:0;font-size:var(--fs-num-m)}
  #app .counts.slim .c b::after{font-size:var(--fs-14);margin-left:3px}
  #app .counts.slim .k-s{left:auto;right:14px;top:50%;bottom:auto;transform:translateY(-50%);max-width:42%;text-align:right}
  #app .counts.slim .kpi:has(.k-rng) .k-s{right:96px;max-width:28%}
  #app .counts.slim .k-rng{top:50%;right:10px;transform:translateY(-50%);height:30px}
  .tbar:has(> .counts.slim){padding:16px 0 12px;gap:12px}
}
@media (min-width:768px) and (max-width:1279px){ #app .counts.slim .k-s{display:none} }
@media (min-width:1280px){ #app.ai-open .counts.slim .k-s{display:none} }
@media (max-width:767px){
  #app .counts.slim .c{height:40px;grid-template-columns:auto minmax(0,auto) auto;grid-template-rows:1fr;grid-template-areas:"dot l n";column-gap:4px;row-gap:0;padding:0 4px;border-radius:12px}
  #app .counts.slim .c .l{font-size:var(--fs-13);overflow:hidden;text-overflow:ellipsis}
  #app .counts.slim .c b{font-size:var(--fs-17);font-family:var(--font-num)}
}
@media (max-width:374px){ #app .counts.slim .c .l{white-space:nowrap} }

/* 2. 목록 업무 칸: 마우스 올림 = 떠 있는 상자 (전체 글 + 처리 내용 마지막 1줄) · [줄바꿈 보기] = 업무 글 3줄까지 (PC) */
.row-tip{position:fixed;z-index:60;max-width:440px;padding:10px 12px;border:1px solid var(--line-200);border-radius:12px;background:var(--bg-surface);box-shadow:var(--sh-float);font-size:var(--fs-14);line-height:1.5;color:var(--ink-900);pointer-events:none;white-space:pre-line;overflow-wrap:anywhere}
.row-tip .rt-n{margin-top:6px;padding-top:6px;border-top:1px solid var(--line-100);color:var(--ink-700);white-space:normal}
.row-tip .rt-n b{display:block;font-size:var(--fs-13);color:var(--ink-500)}
.filters.tf .wrap-tg{flex:none;height:36px;padding:0 12px;border-radius:var(--r-pill);font-size:var(--fs-14);color:var(--ink-700);white-space:nowrap}
.filters.tf .wrap-tg.on{border-color:var(--primary);background:var(--bg-cream);color:var(--ink-900);font-weight:var(--w-bold)}
.lbox.wrap .row{height:auto;min-height:var(--h-row);padding-top:8px;padding-bottom:8px}
.lbox.wrap .row .txt{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-line;overflow:hidden;line-height:1.45}
.lbox.wrap .row .c-task{align-items:flex-start}

/* 3. 입력칸 「@이름」 고르기 목록 (작게) */
.mn-pick{position:fixed;z-index:70;display:flex;flex-direction:column;min-width:120px;padding:4px;border:1px solid var(--line-200);border-radius:10px;background:var(--bg-surface);box-shadow:var(--sh-float)}
.mn-pick .mn-it{height:32px;padding:0 10px;border:0;border-radius:8px;background:none;text-align:left;font-size:var(--fs-14);white-space:nowrap}
.mn-pick .mn-it:first-child{background:var(--bg-hover)}
.mn-pick .mn-it:hover{background:var(--bg-cream)}

/* 4. [진행 확인 요청] · 「오늘 요청함」 */
.d-btns{flex-wrap:wrap;justify-content:flex-end}
.d-btns button.nudge.done{opacity:1;color:var(--ink-500);background:var(--bg-sub)}

/* 5. 머리줄 바탕 = 아래 화면과 같은 크림 (bg-page) · 경계선 살짝. AI 입력칸은 흰 바탕으로 (예전 흰 머리줄 위 크림 칸과 같은 대비) */
#top{background:var(--bg-page);border-bottom-color:var(--line-100)}
#ai .bar{background:var(--bg-surface)}
#top .me .bell-n{box-shadow:0 0 0 2px var(--bg-page)}
@media (max-width:767px){ #ai .bar{background:var(--bg-cream)} }
