/* ============================================================
   app.css — 블리츠씰 어드민 앱 셸(다크) + 홈 컴포넌트
   2026-07-10. tokens.css 위에 로드. 전부 .ax 스코프 (정본 DS 격리).
   셸 DOM = app/shell.js · 색/타입 규칙 = COMPONENTS.md
   ============================================================ */
.ax{display:flex;min-height:100vh;align-items:flex-start;}

/* ===== 사이드바 (확정 원본 admin-shell-page 이식) ===== */
.ax .sidebar{width:262px;flex:0 0 262px;background:var(--side);display:flex;flex-direction:column;padding:30px 30px 24px 30px;position:sticky;top:0;height:100vh;border-right:0;}
.ax .logo{line-height:0;display:inline-block;cursor:pointer;} .ax .logo img{height:24px;width:auto;opacity:.96;}
.ax .sbnav{display:flex;flex-direction:column;align-items:flex-start;margin-top:24px;}
.ax .item{font-size:15px;font-weight:600;color:#EEF1F8;letter-spacing:-.02em;line-height:1;cursor:pointer;text-decoration:none;display:block;}
.ax .item.on,.ax .sub.on{color:#fff;font-weight:600;text-decoration:underline;text-decoration-color:var(--sky);text-decoration-thickness:1.7px;text-underline-offset:6px;text-decoration-skip-ink:none;display:inline-block;}
.ax .g{margin-top:28px;align-self:stretch;} .ax .g0{margin-top:0;}
.ax .item-solo{margin-top:28px;}  /* 그룹들 아래 단독 메인 항목(협력사 관리) — 그룹과 동일 간격 */
.ax .exp-h{display:flex;align-items:center;justify-content:space-between;width:100%;cursor:pointer;}
.ax .exp{color:#8390A8;font-size:15px;font-weight:600;letter-spacing:-.02em;line-height:1;}
.ax .exp-h:hover .exp{color:#B9C3D6;}
.ax .chev{width:15px;height:15px;color:#5B6880;flex:0 0 auto;transition:transform .18s;}
.ax .g.open .chev{transform:rotate(90deg);}
.ax .subwrap{display:none;flex-direction:column;align-items:flex-start;padding-left:15px;}
.ax .g.open .subwrap{display:flex;}
.ax .sub{font-size:13px;font-weight:600;color:#96A2B8;letter-spacing:-.01em;cursor:pointer;text-decoration:none;} .ax .sub:hover{color:#DDE3EE;}
.ax .su{margin-top:14px;} .ax .su2{margin-top:11px;}
.ax .sbnav .nav-ext{opacity:.5;font-size:12px;margin-left:3px;font-weight:600;}
.ax .nav-extras{align-self:stretch;margin-top:28px;padding-top:22px;border-top:1px solid rgba(255,255,255,.09);display:flex;flex-direction:column;align-items:flex-start;gap:16px;}
.ax .foot{margin-top:auto;padding-top:20px;border-top:1px solid rgba(255,255,255,.09);}
.ax .sbprof{display:flex;align-items:center;gap:11px;cursor:pointer;}
.ax .sbprof .av{width:38px;height:38px;border-radius:8px;background:var(--sky);color:#fff;font-weight:600;font-size:14px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;}
.ax .sbprof .pt b{font-size:14px;font-weight:600;display:block;line-height:1.3;color:#EEF1F8;} .ax .sbprof .pt span{font-size:12px;color:#8390A8;line-height:1.3;display:block;}
.ax .sbprof .out{width:19px;height:19px;color:#96A2BC;margin-left:auto;flex:0 0 auto;cursor:pointer;transition:color .15s;} .ax .sbprof .out:hover{color:#FF7A7A;}

/* ===== 메인 (본문 흰색 — 디자인시스템 정본) ===== */
.ax .main{flex:1;min-width:0;background:#fff;display:block;}
.ax .wrap{padding:32px 44px 56px 52px;display:flex;flex-direction:column;gap:20px;}

/* 홈-01 인사 */
.ax .hero{background:linear-gradient(120deg,var(--chart-bar-emp),#3B82F6);color:#fff;border-radius:14px;padding:36px 34px;box-shadow:0 10px 26px rgba(30,58,138,.2);}
.ax .hgreet{font-size:28px;font-weight:700;letter-spacing:-.03em;color:#fff;}
.ax .hsub{margin-top:10px;font-size:15px;color:rgba(255,255,255,.85);font-weight:500;} .ax .hsub b{color:#fff;font-weight:700;}

/* 공통-카드 (타이틀 카드 안 · 04) */
.ax .grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch;}
.ax .g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;align-items:stretch;}
.ax .span2{grid-column:span 2;} .ax .span3{grid-column:span 3;}
.ax .ph{border:1.5px dashed var(--card-bd);border-radius:8px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:13px;color:var(--mut);font-weight:600;padding:20px;min-height:120px;flex:1;}
.ax .sec{display:flex;flex-direction:column;}
.ax .card{background:#fff;border:1px solid var(--card-bd);border-radius:13px;overflow:hidden;flex:1;box-shadow:var(--shadow);display:flex;flex-direction:column;}
.ax .chd{display:flex;align-items:baseline;justify-content:space-between;padding:20px 20px 12px;border-bottom:0;}
.ax .ctitle{font-size:17px;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;color:var(--ink);}
.ax .ctitle .cnt{margin-left:8px;font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-bg);border:1px solid var(--accent-bd);border-radius:999px;padding:0 8px;line-height:18px;}
.ax .cmore{font-size:17px;font-weight:700;color:var(--mut);text-decoration:none;cursor:pointer;line-height:1;} .ax .cmore:hover{color:var(--accent);} .ax .cmore:hover{color:var(--accent);}
.ax .cb{padding:12px 20px 20px;flex:1;}
.ax .chev{width:17px;height:17px;color:var(--faint);flex:0 0 auto;}
.ax .cr-t,.ax .nx-time,.ax .td-d,.ax .v-d{font-variant-numeric:tabular-nums;}

/* 홈-02 바로가기 (밑줄 링크 · 접기/펴기) */
.ax .lab{font-size:12px;font-weight:700;color:var(--mut);margin-bottom:10px;}
.ax .ulrow{display:flex;flex-wrap:wrap;gap:20px;}
.ax .ul{text-decoration:none;color:var(--ink);font-size:14.5px;font-weight:700;padding-bottom:2px;border-bottom:2px solid transparent;cursor:pointer;} .ax .ul:hover{color:var(--accent);border-bottom-color:var(--accent);}
.ax .favdiv{height:1px;background:var(--line);margin:16px 0;}
.ax .card.collapsible .chd{cursor:pointer;}
.ax .ccol{display:flex;align-items:center;color:var(--mut);}
.ax .cchev{width:16px;height:16px;transition:transform .18s;}
.ax .card.collapsible.open .cchev{transform:rotate(90deg);}
.ax .card.collapsible:not(.open) .cb{display:none;}
.ax .card.collapsible:not(.open) .chd{padding-bottom:16px;}

/* 홈-03 할일 */
/* 탭 정본 = 밑줄 스타일 (2026-07-13 확정, 기본 탭 디자인) */
.ax .tabs{display:flex;gap:16px;margin:0 0 10px;border-bottom:1px solid var(--line);}
.ax .tab{font-size:13.5px;font-weight:700;color:var(--mut);padding:8px 2px;cursor:pointer;background:none;border-radius:0;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .12s;}
.ax .tab:hover{color:var(--sub);} .ax .tab.on{color:var(--ink);border-bottom-color:var(--accent);}
.ax .td{display:flex;align-items:center;gap:12px;padding:11px 6px;margin:0 -6px;border-radius:8px;cursor:pointer;} .ax .td:hover{background:#F7F9FB;} .ax .td+.td{border-top:1px solid var(--line);}
.ax .ck{width:20px;height:20px;flex:0 0 auto;display:grid;place-items:center;border:2px solid var(--faint);border-radius:7px;color:transparent;cursor:pointer;transition:border-color .12s,background .12s;} .ax .ck svg{width:68%;height:68%;} .ax .ck.on{border-color:var(--accent);background:var(--accent);color:#fff;} .ax .td.busy{opacity:.55;}
.ax .td-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;justify-content:center;}
.ax .td-chip{align-self:flex-start;font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:var(--r-badge);letter-spacing:.01em;line-height:1.5;}
.ax .td-t{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em;line-height:1.35;word-break:break-word;}
.ax .td.is-done .td-t{color:var(--mut);text-decoration:line-through;}
.ax .td-lk{text-decoration:none;font-size:12px;}
.ax .td-sub{font-size:11.5px;color:var(--sub);font-weight:500;display:flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1;}
.ax .td-sub .dot{color:var(--faint);}
.ax .td-circle{flex:0 0 auto;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;text-align:center;line-height:1.05;letter-spacing:-.02em;}
.ax .td-circle.d1{color:var(--accent);background:var(--blue-soft);}
.ax .td-circle.today{color:#fff;background:#F5A623;box-shadow:0 3px 9px rgba(245,166,35,.28);}
.ax .td-circle.over{color:#fff;background:#E5484D;box-shadow:0 3px 9px rgba(229,72,77,.28);}
.ax .td-circle.done{color:var(--sub);background:#F1F3F6;}
.ax .addtodo{margin-top:12px;width:100%;height:40px;padding:0 10px;border:1px dashed var(--card-bd);border-radius:8px;background:#fff;color:var(--sub);font-size:13.5px;font-weight:600;font-family:inherit;cursor:pointer;} .ax .addtodo:hover{border-color:var(--accent);color:var(--accent);}
.ax .todo-empty{padding:26px 4px;text-align:center;font-size:13.5px;color:var(--mut);font-weight:600;}
.ax .td .ck{cursor:pointer;transition:border-color .12s,background .12s;} .ax .td.busy{opacity:.55;}
/* 할일 추가 모달 (.ax 밖 — document.body 직속) */
.tmodal{position:fixed;inset:0;z-index:9999;background:rgba(20,28,46,.44);display:flex;align-items:center;justify-content:center;padding:20px;font-family:var(--font,'Pretendard Variable','Pretendard',-apple-system,sans-serif);}
.tmbox{width:100%;max-width:600px;max-height:92vh;overflow-y:auto;background:#fff;border-radius:20px;box-shadow:0 24px 64px rgba(0,0,0,.28);}
.tmhd{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #F0F1F4;position:sticky;top:0;background:#fff;border-radius:20px 20px 0 0;z-index:1;}
.tmhd h3{margin:0;font-size:17px;font-weight:700;color:#191F28;letter-spacing:-.02em;}
.tmhd .x{color:#B0B8C1;font-size:19px;cursor:pointer;line-height:1;background:none;border:0;font-family:inherit;padding:0;}
.tmbd{padding:20px 24px 4px;display:flex;flex-direction:column;gap:16px;}
.tmfld{display:flex;flex-direction:column;gap:7px;}
.tml{font-size:12.5px;font-weight:700;color:#191F28;letter-spacing:.01em;}
.tml .req{color:var(--blue);} .tml .hint{font-weight:600;color:#B0B8C1;font-size:11px;margin-left:4px;}
.tmi{width:100%;box-sizing:border-box;padding:11px 13px;border:1px solid #E5E8EB;border-radius:8px;font-size:14px;font-family:inherit;color:#191F28;background:#F7F8FA;}
.tmi::placeholder{color:#B0B8C1;}
.tmi:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(49,130,246,.12);}
.tmi-title{font-size:16px;font-weight:600;padding:13px 14px;}
textarea.tmi{min-height:80px;resize:vertical;line-height:1.5;}
.tmrow{display:flex;gap:12px;align-items:flex-start;}.tmrow>.tmfld{flex:1;min-width:0;}
/* 수량은 두 자리면 충분하다 — 반반으로 벌리면 매체 칩 옆에 빈 입력칸만 커 보인다 */
.tmrow>.tmfld.narrow{flex:0 0 186px;}   /* 수량 = 입력칸 + 풀데이 칩 두 요소가 선다 (2026-08-25) */
.tmsec{padding-top:16px;border-top:1px solid #F0F1F4;display:flex;flex-direction:column;gap:14px;}
/* 첫 섹션은 위 선을 지운다 — 헤더 아래 선과 겹쳐 줄이 두 개로 보였다 (2026-08-18) */
.tmbd>.tmsec:first-child{border-top:0;padding-top:0;}
.tmsectitle{font-size:11.5px;font-weight:800;letter-spacing:.08em;color:#8B95A1;}
.tmchips,.tmbrands,.tmpeople{display:flex;flex-wrap:wrap;gap:8px;}
.tmchip{font-size:12.5px;font-weight:700;padding:7px 13px;border-radius:8px;border:1px solid #E5E8EB;background:#F7F8FA;color:#8B95A1;cursor:pointer;user-select:none;transition:.12s;}
.tmchip:hover{border-color:var(--blue);color:var(--blue-strong);} .tmchip.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-strong);} .tmchip.etc{border-style:dashed;}
/* 수량 = 편수 입력 + 풀데이 토글. 풀데이면 편수를 못 세는 작업이라 입력칸을 잠근다 (2026-08-25) */
/* 🔴 칩 높이를 입력칸(40px)에 맞춘다 — 같은 줄에 서는 요소는 높이가 같아야 한다 */
.tmqty{display:flex;gap:8px;align-items:stretch;}
.tmqty .tmi{min-width:0;flex:1 1 auto;}
.tmqty .tmchip{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;}
.tmi.off{opacity:.45;background:#F2F4F6;cursor:not-allowed;}
.tmbpill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;padding:6px 13px;border-radius:20px;border:1px solid #E5E8EB;background:#F7F8FA;color:#8B95A1;cursor:pointer;user-select:none;}
.tmbpill .bd{width:9px;height:9px;border-radius:50%;} .tmbpill.on{border-color:var(--blue);background:var(--blue-soft);color:#191F28;}
.tmpchip{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:8px;border:1px solid #E5E8EB;background:#F7F8FA;cursor:pointer;user-select:none;font-size:12.5px;font-weight:700;color:#8B95A1;transition:.12s;}
.tmpav{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;font-weight:700;color:#fff;} .tmpchip.on{border-color:var(--blue);background:var(--blue-soft);color:#191F28;}
.tmremind{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border:1px solid #E5E8EB;border-radius:12px;background:#F7F8FA;}
.tmremind .rl{font-size:13.5px;font-weight:700;color:#191F28;} .tmremind .rl small{display:block;font-size:11.5px;font-weight:600;color:#B0B8C1;margin-top:2px;}
.tmsw{width:44px;height:26px;border-radius:20px;background:var(--blue);position:relative;flex:0 0 auto;cursor:pointer;transition:.15s;}
.tmsw::after{content:"";position:absolute;top:3px;left:21px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:.15s;}
.tmsw.off{background:#D1D6DD;} .tmsw.off::after{left:3px;}
.tmerr{min-height:16px;font-size:12.5px;color:#E5484D;font-weight:700;padding:0 24px;}
/* 긴 안내문은 라벨 줄에 붙이지 않고 칩 아래로 내린다 (라벨이 문장에 묻힌다) */
.tmhint-b{font-size:12px;font-weight:600;color:#8B95A1;line-height:1.5;}
.tmnote{width:100%;font-size:12.5px;font-weight:600;color:#B0B8C1;padding:4px 0;}
/* 완료·취소 건 잠금 안내 — 흐린 톤이면 안 읽힌다. 여기서 뭘 할 수 있는지를 알려주는 줄이라 눈에 띄어야 한다 */
#pm-lock{width:100%;box-sizing:border-box;margin:0 0 10px;padding:10px 13px;border-radius:9px;
  background:#FFF7E8;border:1px solid #FFE0A3;color:#8A5A00;font-size:12.5px;font-weight:600;line-height:1.65;}
#pm-lock b{font-weight:800;}
.tmdraft{display:flex;align-items:center;gap:10px;background:#EAF2FE;border:1px solid #CFE0FB;border-radius:12px;padding:10px 14px;font-size:13px;font-weight:600;color:#1D6FE0;}
.tmdraft button{margin-left:auto;background:#fff;border:1px solid #CFE0FB;color:#1D6FE0;font-size:12.5px;font-weight:700;padding:5px 12px;border-radius:8px;cursor:pointer;}
.tmdraft button:hover{background:var(--accent-bg);}
.tmbtns{display:flex;gap:10px;padding:6px 24px 22px;}
.tmcancel{flex:0 0 auto;padding:12px 20px;border:1px solid #E5E8EB;border-radius:12px;background:#fff;color:#4E5968;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit;}
.tmsave{flex:1;padding:12px;border:0;border-radius:12px;background:var(--blue);color:#fff;font-weight:700;font-size:14.5px;cursor:pointer;font-family:inherit;}
.tmsave:disabled{opacity:.6;cursor:default;}
.tmdelete{flex:0 0 auto;margin-right:auto;padding:12px 16px;border:1px solid #FADBDD;border-radius:12px;background:#fff;color:#E5484D;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit;}
.tmdelete:hover{background:#FDECEC;} .tmdelete:disabled{opacity:.6;cursor:default;}
/* 진행상황 확인요청 — 치수는 .tmcancel 그대로 쓰고(자체 클래스 신설 금지) 글자색만 파랑으로 구분 */
.tmpoke{color:var(--blue);} .tmpoke:disabled{opacity:.6;cursor:default;}
/* 업무 현황판 표 — 행 끝 확인요청 아이콘 */
.tt-act{width:34px;text-align:center;}
.tt-poke{width:26px;height:26px;padding:0;border:1px solid #E5E8EB;border-radius:8px;background:#fff;color:#4E5968;font-size:13px;line-height:1;cursor:pointer;font-family:inherit;}
.tt-poke:hover{background:#F2F4F6;} .tt-poke:disabled{opacity:.5;cursor:default;}
.tmdone{flex:0 0 auto;padding:12px 16px;border:1px solid #B7E4C7;border-radius:12px;background:#E6F7EE;color:#0E9E5A;font-weight:700;font-size:14px;cursor:pointer;font-family:inherit;}
.tmdone:hover{background:#0E9E5A;color:#fff;border-color:#0E9E5A;} .tmdone:disabled{opacity:.6;cursor:default;}
.tmdone.undo{border-color:#E5E8EB;background:#fff;color:#4E5968;}
.tmdone.undo:hover{background:#EDF0F3;color:#191F28;border-color:#D1D6DB;}
.tmtoast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%) translateY(12px);z-index:10000;background:#191F28;color:#fff;font-size:13.5px;font-weight:600;padding:13px 20px;border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.3);opacity:0;transition:opacity .25s,transform .25s;max-width:88vw;text-align:center;}
.tmtoast.show{opacity:1;transform:translateX(-50%) translateY(0);}
/* 리치 세부내용 에디터 */
.rte{border:1px solid #E5E8EB;border-radius:8px;overflow:hidden;background:#fff;}
.rte:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px rgba(49,130,246,.12);}
.rte-tb{display:flex;gap:2px;padding:6px 8px;border-bottom:1px solid #F0F1F4;background:#FAFBFC;}
.rte-tb button{border:0;background:none;padding:5px 9px;border-radius:6px;font-size:13px;font-weight:700;color:#4E5968;cursor:pointer;font-family:inherit;}
.rte-tb button:hover{background:var(--dt-grid);color:#191F28;}
.rte-ed{min-height:82px;max-height:220px;overflow-y:auto;padding:11px 13px;font-size:14px;line-height:1.6;color:#191F28;outline:none;}
.rte-ed:empty:before{content:attr(data-ph);color:#B0B8C1;pointer-events:none;}
.rte-ed ul,.rte-ed ol{margin:4px 0;padding-left:22px;} .rte-ed a{color:var(--blue);text-decoration:underline;}
/* 페이지 공통 헤더 */
.ax .page-hd{margin-bottom:20px;}
.ax .page-hd-row{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.ax .page-t{font-size:25px;font-weight:700;letter-spacing:-.03em;margin:0 0 5px;color:var(--ink);}
.ax .page-s{font-size:13.5px;color:var(--sub);font-weight:500;margin:0;line-height:1.5;}
.ax .pg-add{flex:0 0 auto;height:40px;padding:0 16px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-weight:600;font-size:13.5px;font-family:inherit;cursor:pointer;}
.ax .pg-add:hover{filter:brightness(.96);}
/* 머리줄이 space-between 이라 버튼을 여럿 두면 양끝으로 벌어진다 — 한 묶음으로 감싼다 */
.ax .pg-acts{flex:0 0 auto;display:flex;align-items:center;gap:8px;}
.ax .pg-add-sec{background:#fff;color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);font-weight:600;}
.ax .pg-add-sec:hover{background:#f5f7ff;filter:none;}


/* 가이드 최상단 한눈에 요약 */
.ax .tldr{background:#0F172A;border:0;}
.ax .tldr h2{color:#fff;}
.ax .tl-hint{font-size:12.5px;color:#94A3B8;margin:6px 0 14px;}
.ax .tl-hint b{color:#fff;}
.ax .tl-two{display:flex;gap:14px;}
.ax .tl-c{flex:1;background:#1E293B;border-radius:10px;padding:14px 16px;}
.ax .tl-h{font-size:12px;font-weight:800;color:#93C5FD;margin-bottom:8px;}
.ax .tl-c ul{list-style:none;margin:0;padding:0;}
.ax .tl-c li{position:relative;padding-left:13px;margin-bottom:8px;font-size:12.5px;line-height:1.5;color:#CBD5E1;}
.ax .tl-c li::before{content:'';position:absolute;left:0;top:7px;width:4px;height:4px;border-radius:50%;background:#64748B;}
.ax .tl-c li b{color:#fff;}
.ax .tl-c a{color:#93C5FD;}
.ax .tl-sub{display:block;color:#94A3B8;font-size:11.5px;margin-top:3px;}
.ax .tl-c code{background:#334155;color:#E2E8F0;border-radius:4px;padding:1px 6px;font-size:12px;}
.ax .tl-f{margin-top:13px;font-size:12.5px;color:#FDE68A;}
.ax .tl-f a{color:#FDE68A;text-decoration:underline;text-underline-offset:2px;}
/* 요청 전 리소스 확인 안내 — 기한을 감으로 잡으면 마감이 밀린다 */
.ax .pg-tip{display:flex;gap:9px;align-items:flex-start;margin:0 0 14px;padding:11px 14px;
  background:#FFFBEB;border:1px solid #FDE68A;border-radius:10px;font-size:12.5px;color:#78350F;line-height:1.55;}
.ax .pg-tip-i{flex:0 0 auto;font-size:14px;line-height:1.35;}
.ax .pg-tip a{color:#92400E;text-decoration:underline;text-underline-offset:2px;}
.ax .pg-tip-sub{display:block;color:#92400E;opacity:.85;font-size:11.5px;margin-top:2px;}

/* 흰 패널 (헤드라인=헤더 · 본문=바디 구분) */
.ax .panel{background:#fff;border:1px solid var(--card-bd);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;}
.ax .panel+.panel{margin-top:18px;}
.ax .panel-hd{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 20px;border-bottom:1px solid var(--line);}
.ax .panel-hd h2{font-size:15px;font-weight:700;margin:0;letter-spacing:-.01em;color:var(--ink);}
.ax .panel-hd .ph-sub{font-size:12px;color:var(--mut);font-weight:600;}
.ax .panel-bd{padding:16px 20px;}
/* 어드민 바로가기 런처 */
.ax .lc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:10px;}
.ax .lc-card{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#F8FAFB;border:1px solid var(--line);border-radius:12px;text-decoration:none;transition:background .13s,border-color .13s,box-shadow .13s,transform .06s;}
.ax .lc-card:hover{background:#fff;border-color:var(--accent);box-shadow:0 5px 16px rgba(49,130,246,.1);transform:translateY(-1px);}
.ax .lc-ic{width:38px;height:38px;border-radius:8px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:15px;flex:0 0 auto;}
.ax .lc-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.ax .lc-body b{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.ax .lc-body small{font-size:11px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ax .lc-arw{color:var(--mut);font-size:15px;flex:0 0 auto;}
/* 현황판 상태 탭 (flex st — 밑줄) */
/* .stseg → .tabs 정본으로 통합 (밑줄 탭이 base가 됨) */
/* 필터 바 + 다중선택 드롭다운 */
.ax .fbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:14px;}
.ax .fbar .grow{flex:1;}
.ax .fdrop{position:relative;}
.ax .fdrop-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;min-width:112px;height:34px;box-sizing:border-box;padding:0 12px;border:1px solid var(--card-bd);border-radius:8px;background:#fff;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit;}
.ax .fdrop-btn:hover{border-color:#C9D0DA;} .ax .fdrop-btn.act{border-color:var(--accent);background:var(--accent-bg,var(--accent-bg));color:var(--accent-d,var(--blue-strong));}
.ax .fdrop-btn .cv{color:var(--mut);font-size:10px;transition:transform .15s;} .ax .fdrop.open .fdrop-btn .cv{transform:rotate(180deg);}
.ax .fdrop-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:60;min-width:210px;background:#fff;border:1px solid var(--card-bd);border-radius:12px;box-shadow:0 12px 34px rgba(20,40,80,.16);padding:6px;display:none;max-height:300px;overflow-y:auto;}
.ax .fdrop.open .fdrop-pop{display:block;}
.ax .fdrop-all{display:flex;justify-content:space-between;align-items:center;padding:6px 10px 8px;margin-bottom:4px;border-bottom:1px solid var(--line);}
.ax .fdrop-all span{font-size:11.5px;font-weight:700;color:var(--sub);}
.ax .fdrop-all button{border:0;background:none;color:var(--accent);font-weight:700;font-size:12px;cursor:pointer;font-family:inherit;padding:2px 4px;}
.ax .fda-btns{display:inline-flex;gap:9px;}
.ax .fdrop-search{width:calc(100% - 8px);margin:0 4px 6px;padding:7px 9px;border:1px solid var(--line-2);border-radius:8px;font-size:12.5px;font-family:inherit;color:var(--ink);background:#fff;box-sizing:border-box;}
.ax .fdrop-search:focus{outline:none;border-color:var(--accent);}
.ax .fopt{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13.5px;color:var(--ink);}
.ax .fopt:hover{background:var(--sb);}
.ax .fopt .fchk{width:17px;height:17px;border:2px solid var(--faint);border-radius:4px;display:grid;place-items:center;color:transparent;flex:0 0 auto;}
.ax .fopt.on .fchk{background:var(--accent);border-color:var(--accent);color:#fff;} .ax .fopt .fchk svg{width:70%;height:70%;}
.ax .fsearch{height:34px;box-sizing:border-box;padding:0 13px;border:1px solid var(--card-bd);border-radius:8px;font-size:13px;font-family:inherit;color:var(--ink);background:#fff;min-width:160px;}
.ax .fsearch:focus{outline:none;border-color:var(--accent);}
/* 현황판 테이블 (flex st — 흰 배경·얇은 구분선) */
.ax .tt{width:100%;border-collapse:collapse;}
.ax .tt th{font-size:12.5px;font-weight:600;color:var(--ink);text-align:left;padding:0 10px 11px;border-bottom:1.5px solid var(--card-bd);white-space:nowrap;}
.ax .tt th.num{text-align:right;}
.ax .tt th:first-child,.ax .tt td:first-child{padding-left:4px;} .ax .tt th:last-child,.ax .tt td:last-child{padding-right:4px;}
.ax .tt td{padding:13px 10px;border-bottom:1px solid var(--line);vertical-align:middle;}
.ax .tt tbody tr{cursor:pointer;} .ax .tt tbody tr:hover td{background:#F8FAFB;} .ax .tt tr.busy{opacity:.55;}
.ax .tt .tt-t{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.ax .tt tr.done .tt-t{color:var(--mut);text-decoration:line-through;}
.ax .tt .tt-meta{font-size:11.5px;color:var(--sub);margin-top:4px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.ax .tt .tt-meta .sep{color:var(--faint);}
.ax .tt .tt-dim{font-size:13px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:106px;}
.ax .tt .tt-none{color:var(--faint);}
.ax .tt tr.done .tt-dim,.ax .tt tr.done .td-chip{opacity:.6;}
.ax .tt .tt-dd{font-size:12.5px;font-weight:700;color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums;} .ax .tt .tt-dd.over{color:#E5484D;} .ax .tt .tt-dd.today{color:#F5A623;}
/* 상태 배지 = 디자인시스템 .badge 정본 사용(b-go 진행·b-ok 완료). 대기 = 중립 변형만 추가 */
.ax .badge.b-wait{color:var(--sub);background:#EEF1F4;}
.ax .badge.b-cf{color:#6741D9;background:#F3F0FF;}
.ax .tt .badge{white-space:nowrap;}
.ax .tt-empty{padding:44px;text-align:center;color:var(--mut);font-size:14px;font-weight:600;}

/* 제작 현황판 칸반 (담당자별 컬럼) */
.ax .kb{display:flex;gap:14px;align-items:flex-start;overflow-x:auto;padding:2px 2px 12px;}
/* 칸반 가로 스크롤 단서 (2026-08-20 통일 ⑤) — 우측 페이드 + 가는 스크롤바 */
.kbwrap{position:relative;}
.kbwrap::after{content:'';position:absolute;top:0;right:0;bottom:16px;width:64px;pointer-events:none;background:linear-gradient(270deg,rgba(255,255,255,.96) 12%,rgba(255,255,255,0));}
.ax .kb::-webkit-scrollbar{height:9px;}
.ax .kb::-webkit-scrollbar-thumb{background:#C4CBD4;border-radius:8px;}
.ax .kb::-webkit-scrollbar-thumb:hover{background:#A8B1BD;}
.ax .kb::-webkit-scrollbar-track{background:#F1F3F6;border-radius:8px;}
.ax .kcol{flex:0 0 300px;width:300px;background:#F6F8FA;border-radius:14px;padding:12px 11px;}
.ax .kcol-hd{display:flex;align-items:center;gap:8px;padding:2px 3px 12px;flex-wrap:wrap;}
.ax .kcol-av{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;flex:0 0 auto;}
.ax .kcol-nm{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em;white-space:nowrap;}
.ax .kcol-ct{margin-left:auto;font-size:12px;font-weight:700;color:var(--sub);background:#fff;border:1px solid var(--card-bd);border-radius:20px;min-width:22px;height:22px;display:flex;align-items:center;justify-content:center;padding:0 6px;white-space:nowrap;}
.ax .kcol-bd{display:flex;flex-direction:column;gap:10px;}
.ax .kcol-bd:empty:before{content:'없음';display:block;text-align:center;color:var(--faint);font-size:12px;padding:10px 0;}
/* 카드 — 헤드(D-day + 소재유형 · 배경색 = 기한) + 본문(라벨:값 3행 : 3행) */
.ax .kc{background:#fff;border:1px solid var(--card-bd);border-radius:13px;overflow:hidden;cursor:pointer;box-shadow:0 1px 2px rgba(16,24,40,.04);transition:box-shadow .15s,transform .15s,border-color .15s;display:flex;flex-direction:column;}
.ax .kc:hover{box-shadow:0 6px 16px rgba(16,24,40,.09);border-color:#D5DBE2;transform:translateY(-1px);}
.ax .kc.busy{opacity:.55;pointer-events:none;}
/* 기한 4단계 — 헤드 배경(--ub) · D-day 뱃지(--u) · 마감 값(--u) 이 한 변수에서 나온다 */
.ax .kc.u-over{--u:#E5484D;--ub:var(--crit-bg);}
.ax .kc.u-today{--u:#EA9A17;--ub:var(--warn-bg);}
.ax .kc.u-soon{--u:#EA9A17;--ub:#FFF8E8;}
.ax .kc.u-far{--u:var(--sub);--ub:var(--sb);}
.ax .kc-band{display:flex;align-items:center;gap:8px;height:38px;padding:0 15px;background:var(--ub);}
.ax .kc-dd{display:inline-flex;align-items:center;height:20px;padding:0 8px;font-size:12px;font-weight:700;line-height:1;border-radius:7px;white-space:nowrap;flex-shrink:0;background:var(--u);color:#fff;}
.ax .kc.u-soon .kc-dd{background:#FCEBCB;color:#8A5D08;}
.ax .kc.u-far .kc-dd{background:#fff;color:var(--sub);}
.ax .kc-mf{margin-left:auto;font-size:12px;font-weight:600;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ax .kc-body{padding:13px 15px 15px;display:flex;flex-direction:column;}
.ax .kc-title{font-size:14px;font-weight:700;color:var(--ink);line-height:1.45;letter-spacing:-.01em;height:40px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
/* ⚠️ 5열 그리드 안에 구분선을 끼우면 자동배치가 흐트러져 라벨이 4개 열로 흩어진다(실측).
   목록 2개를 나란히 두고, 구분선은 두 번째 목록의 왼쪽 테두리로 그린다. */
.ax .kc-cols{display:grid;grid-template-columns:1fr 1fr;margin-top:12px;}
.ax .kc-cols .kc-dl:last-child{border-left:1px solid var(--line);padding-left:12px;}
.ax .kc-dl{display:grid;grid-template-columns:auto 1fr;column-gap:10px;row-gap:8px;font-size:13px;align-items:baseline;margin:0;align-content:start;}
.ax .kc-dl dt{color:var(--mut);font-weight:600;}
.ax .kc-dl dd{margin:0;color:var(--ink);font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ax .kc-dl dd.plain{font-weight:600;color:var(--sub);}
.ax .kc-dl dd.v-due{color:var(--u);}
.ax .kc.u-far .kc-dl dd.v-due{color:var(--ink);}
.ax .kc-acts{display:flex;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
.ax .kc-btn{flex:1;height:40px;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--line-2);background:#fff;color:var(--sub);display:inline-flex;align-items:center;justify-content:center;transition:.15s;}
.ax .kc-btn:hover{background:var(--sb);}
.ax .kc-btn.chk{background:var(--sb);color:var(--sub);border-color:var(--line-2);}
.ax .kc-btn.cf{background:var(--blue-soft);color:var(--blue-strong);border-color:#CBDFFB;} .ax .kc-btn.cf:hover{background:#DCE9FD;}
.ax .kc-btn.done{background:var(--ok-bg);border-color:#BFE6D2;color:var(--ok-tx);} .ax .kc-btn.done:hover{background:#D8F3E4;}
.ax .kc-btn.done.on{background:#fff;border-color:var(--line-2);color:var(--mut);} .ax .kc-btn.done.on:hover{background:var(--sb);}
.ax .kc-slk2{display:block;text-align:center;margin-top:11px;font-size:12px;font-weight:600;color:var(--sub);text-decoration:none;} .ax .kc-slk2:hover{color:var(--blue-strong);}
/* 보조 줄 — 슬랙에서 보기 · 진행상황 확인요청. 상태 버튼과 같은 규격, 구분선 없음.
   높이는 kc-btn 기본(40px) 그대로 — 터치타깃 규격이라 줄이지 않는다(card_audit.py 가 잡는다) */
.ax .kc-sub{display:flex;gap:8px;margin-top:8px;}
.ax .kc-btn.slk,.ax .kc-btn.plan{text-decoration:none;}
/* 기획안 바로가기 — 카드에서 제일 먼저 눌리는 링크라 슬랙보다 한 단계 앞으로 세운다(2026-08-09) */
.ax .kc-btn.plan{background:var(--blue-soft);border-color:var(--accent-bd);color:var(--blue-strong);}
.ax .kc-btn.plan:hover{background:#DCE9FD;}
.ax .plc-sbtn.plan{border-color:var(--accent-bd);color:var(--accent);background:var(--accent-bg);}
.ax .kc-btn.slk:hover,.ax .kc-btn.poke:hover{background:var(--blue-soft);border-color:var(--accent-bd);color:var(--blue-strong);}
.ax .kc-btn.poke:disabled{opacity:.6;cursor:default;background:#fff;}
.ax .kc.done{opacity:.72;} .ax .kc.done .kc-title{text-decoration:line-through;color:var(--mut);}
/* 아래 3종은 기획관리(plan.html) 카드가 공유 — 제작 카드에서는 안 쓴다 */
.ax .kc-bchip{display:inline-flex;align-items:center;height:20px;padding:0 8px;font-size:10.5px;font-weight:700;color:#fff;border-radius:var(--r-badge);white-space:nowrap;flex-shrink:0;}
.ax .kc-who{display:flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap;flex-shrink:0;} .ax .kc-who b{font-weight:700;color:var(--ink);}
.ax .kc-lab{display:inline-flex;align-items:center;height:18px;padding:0 6px;font-size:9.5px;font-weight:700;border-radius:4px;flex-shrink:0;}
.ax .kc-lab.own{background:#191F28;color:#fff;} .ax .kc-lab.req{background:#EEF1F4;color:var(--sub);}

/* 기획관리 — 메인보드 지표 */
.ax .plm-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px;}
.ax .plm{background:#fff;border:1px solid var(--card-bd);border-radius:13px;padding:17px 18px;box-shadow:var(--shadow);}
.ax .plm-l{font-size:13px;font-weight:500;color:var(--sub);margin-bottom:10px;}
.ax .plm-l::before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--pc,var(--mut));margin-right:7px;}
.ax .plm-n{font-size:28px;font-weight:700;color:var(--ink);letter-spacing:-.02em;line-height:1;}
.ax .plm-u{font-size:13px;font-weight:700;color:var(--sub);margin-left:2px;}
.ax .plm-bar{height:5px;background:#EDF0F3;border-radius:3px;margin-top:10px;overflow:hidden;} .ax .plm-bar i{display:block;height:100%;background:var(--accent);border-radius:3px;}
/* ❌ DEPRECATED 2026-08-20 파스텔 배경 → DS .tile 단일 계보 (③B 확정 — 흰 카드 + 라벨 앞 상태 점 --pc) */
.ax .plm.m-go{--pc:var(--blue);}
.ax .plm.m-ok{--pc:var(--ok);}
.ax .plm.m-rate{--pc:#98A0AC;}
.ax .plm.m-warn{--pc:var(--warn);}
.ax .plm.m-crit{--pc:var(--crit);}
.ax .plm.m-rate .plm-bar{background:#EAEEF3;}
/* 기획관리 — 파이프라인 */
.ax .plpipe{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start;}
.ax .plst{background:#F6F8FA;border-radius:13px;padding:12px 11px;}
.ax .plst-hd{display:flex;align-items:center;gap:8px;padding:2px 3px 12px;}
.ax .plst-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.ax .plst-nm{font-size:13.5px;font-weight:700;color:var(--ink);}
.ax .plst-ct{margin-left:auto;font-size:12px;font-weight:700;color:var(--sub);background:#fff;border:1px solid var(--card-bd);border-radius:20px;min-width:22px;height:22px;display:flex;align-items:center;justify-content:center;padding:0 6px;}
.ax .plst-bd{display:flex;flex-direction:column;gap:9px;min-height:40px;}
.ax .plst-bd:empty:before{content:'없음';display:block;text-align:center;color:var(--faint);font-size:12px;padding:12px 0;}
.ax .plc{background:#fff;border:1px solid var(--card-bd);border-radius:8px;padding:11px 12px;cursor:pointer;transition:box-shadow .15s,border-color .15s;}
.ax .plc:hover{box-shadow:0 4px 12px rgba(16,24,40,.08);border-color:#D5DBE2;}
.ax .plc-t{display:flex;align-items:center;gap:6px;margin-bottom:8px;}
.ax .plc-mf{font-size:10.5px;font-weight:700;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ax .plc-qt{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--sub);background:#EEF1F4;border-radius:var(--r-badge);padding:1px 6px;flex-shrink:0;white-space:nowrap;}
.ax .plc-title{font-size:13px;font-weight:700;color:var(--ink);line-height:1.4;height:37px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;letter-spacing:-.01em;}
.ax .plc-f{display:flex;align-items:center;gap:8px 12px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line);font-size:11.5px;flex-wrap:wrap;}
.ax .plc-f .dl{font-weight:700;color:var(--accent);} .ax .plc-f .dl.over{color:#E5484D;} .ax .plc-f .dl.soon{color:#EA9A17;} .ax .plc-f .dl.none{color:var(--faint);}
.ax .plc.busy{opacity:.5;pointer-events:none;}
.ax .plc-act{display:flex;gap:6px;margin-top:10px;}
.ax .plc-act button{flex:1;border:1px solid var(--card-bd);background:#fff;font:inherit;font-size:11.5px;font-weight:700;color:var(--sub);height:29px;border-radius:8px;cursor:pointer;transition:.12s;}
.ax .plc-act button:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);}
.ax .plc-act button.ok{border-color:#B7E4C7;color:var(--ok-tx);background:var(--ok-bg);}
.ax .plc-act button.ok:hover{background:#0E9E5A;color:#fff;border-color:#0E9E5A;}
.ax .plc-act button.cf{color:#6741D9;}
.ax .plc-act button.cf:hover{background:#F3F0FF;border-color:#D0C4F7;color:#6741D9;}
.ax .plc-act button.chk.cur{border-color:var(--accent-bd);color:var(--accent);background:var(--accent-bg);}
.ax .plc-act button.cf.cur{border-color:#D0C4F7;color:#6741D9;background:#F3F0FF;}
.ax .plc-cf{margin-left:auto;display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;color:#6741D9;background:#F3F0FF;padding:2px 7px;border-radius:4px;white-space:nowrap;}
.ax .plc-slk{display:block;text-align:center;margin-top:7px;font-size:11px;font-weight:700;color:var(--sub);text-decoration:none;padding:5px;border-radius:7px;transition:.12s;}
.ax .plc-slk:hover{color:var(--accent);background:var(--accent-bg);}
/* 기획 카드 보조 줄 — 슬랙에서 보기 · 진행상황 확인요청 (상태 버튼과 같은 규격, 구분선 없음) */
.ax .plc-sub{display:flex;gap:6px;margin-top:6px;}
.ax .plc-sbtn{flex:1;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--card-bd);background:#fff;font:inherit;font-size:11.5px;font-weight:700;color:var(--sub);height:29px;border-radius:8px;cursor:pointer;text-decoration:none;transition:.12s;}
.ax .plc-sbtn:hover{border-color:var(--accent-bd);color:var(--accent);background:var(--accent-bg);}
.ax .plc-sbtn:disabled{opacity:.6;cursor:default;background:#fff;}
.ax .tt .pl-undo{margin-left:8px;border:1px solid var(--card-bd);background:#fff;font:inherit;font-size:10.5px;font-weight:700;color:var(--sub);padding:2px 8px;border-radius:6px;cursor:pointer;white-space:nowrap;}
.ax .tt .pl-undo:hover{border-color:var(--accent);color:var(--accent);}
.tmtoast.undo{display:flex;align-items:center;gap:12px;}
.tmtoast .undo-btn{background:#fff;color:#191F28;border:0;border-radius:7px;padding:5px 12px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;}
.tmtoast .undo-btn:hover{background:#EDF0F3;}
.ax .pl-mini{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-weight:600;}
/* 홈 — 개인별 홈 스위처(exec) */
.ax .hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}
.ax .hgro{min-width:0;}
.ax .home-as{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--sub);background:#fff;border:1px solid var(--card-bd);border-radius:8px;padding:8px 13px;box-shadow:var(--shadow);white-space:nowrap;flex-shrink:0;}
.ax .home-as select{border:0;background:none;font:inherit;font-weight:700;color:var(--ink);cursor:pointer;max-width:120px;}
.ax .home-as select:focus{outline:none;}
/* 제작 가이드 배너 */
.ax .pg-banner{display:flex;align-items:center;gap:13px;margin:0 0 16px;padding:13px 18px;border-radius:13px;background:linear-gradient(100deg,var(--blue-soft),#F3F0FE);border:1px solid #CBDFFB;text-decoration:none;transition:box-shadow .15s,transform .15s;}
.ax .pg-banner:hover{box-shadow:0 6px 16px rgba(49,130,246,.14);transform:translateY(-1px);}
.ax .pg-banner-ic{font-size:22px;flex-shrink:0;}
.ax .pg-banner-tx{display:flex;flex-direction:column;gap:2px;}
.ax .pg-banner-tx b{font-size:13.5px;font-weight:700;color:var(--ink);}
.ax .pg-banner-sub{font-size:12px;color:#4E6A9E;font-weight:600;}
.ax .pg-banner-go{margin-left:auto;flex-shrink:0;font-size:12.5px;font-weight:700;color:#fff;background:var(--blue);padding:8px 14px;border-radius:8px;white-space:nowrap;}
/* 기획관리 — 기간(날짜 범위) 필터 */
.ax .fdate{display:inline-flex;align-items:center;gap:6px;}
.ax .fdate .fdl{font-size:12px;font-weight:700;color:var(--sub);margin-right:1px;}
.ax .fdi{border:1px solid var(--card-bd);border-radius:8px;padding:7px 9px;font-size:12.5px;font-family:inherit;color:var(--ink);background:#fff;}
.ax .fdi:focus{outline:none;border-color:var(--accent);}
.ax .fdate .fdsep{color:var(--faint);font-weight:700;}
.ax .fdclr{border:1px solid var(--card-bd);background:#fff;color:var(--sub);width:28px;height:34px;border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;}
/* 필터 툴바 카드 (시안 C · 2026-07-31 컨펌) — 드롭다운 한 줄 + 기간·검색 확장 줄 */
.ax .ftool{background:#F7F8FA;border:1px solid var(--line-2);border-radius:14px;padding:13px 14px;margin-bottom:14px;}
.ax .ftool .fbar{margin-bottom:0;}
.ax .ftool .fdrop-btn,.ax .ftool .fsearch,.ax .ftool .freset,.ax .ftool .fdi2,.ax .ftool .fdclr{background:#fff;}
.ax .fexp{display:flex;align-items:center;gap:9px;margin-top:11px;padding-top:11px;border-top:1px solid var(--line-2);flex-wrap:wrap;}
.ax .fexp .fdl{font-size:12px;font-weight:700;color:var(--sub);white-space:nowrap;}
.ax .fdi2{height:34px;box-sizing:border-box;padding:0 10px;border:1px solid var(--card-bd);border-radius:8px;font-size:12.5px;font-family:inherit;color:var(--ink);}
.ax .fdi2:focus{outline:none;border-color:var(--accent);}
.ax .freset{border:1px solid var(--line-2);background:#fff;color:var(--sub);font:inherit;font-size:13px;font-weight:600;height:34px;box-sizing:border-box;padding:0 14px;border-radius:8px;cursor:pointer;transition:.12s;}
.ax .freset:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);}
.ax .fdclr:hover{border-color:#E5484D;color:#E5484D;}
/* 기획관리 게시판 — 셀 폰트·높이 통일(고정 레이아웃 + ellipsis) */
.ax .plgt{width:100%;border-collapse:collapse;table-layout:fixed;}
.ax .plgt th{font-size:12.5px;font-weight:600;color:var(--ink);text-align:left;padding:0 10px 11px;border-bottom:1.5px solid var(--card-bd);white-space:nowrap;}
.ax .plgt th.num{text-align:right;}
.ax .plgt td{padding:0 10px;height:52px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:13px;color:var(--ink);white-space:nowrap;}
.ax .plgt td.pl-ti,.ax .plgt td.pl-dim{overflow:hidden;text-overflow:ellipsis;}
.ax .plgt tr{cursor:pointer;} .ax .plgt tbody tr:hover td,.ax .plgt tr:hover td{background:#F8FAFB;}
.ax .plgt .pl-ti{font-weight:700;letter-spacing:-.01em;}
.ax .plgt .pl-dim{color:var(--sub);}
.ax .plgt tr.done .pl-ti{color:var(--mut);}
.ax .plgt .pl-mini{display:inline-flex;align-items:center;gap:6px;font-weight:600;max-width:100%;overflow:hidden;}
.ax .plgt .pl-mini b{overflow:hidden;text-overflow:ellipsis;}
.ax .plgt .badge{font-size:11px;}
.ax .plgt .pl-actbtn{border:1px solid var(--card-bd);background:#fff;font:inherit;font-size:11.5px;font-weight:700;color:var(--sub);padding:4px 11px;border-radius:7px;cursor:pointer;white-space:nowrap;}
.ax .plgt .pl-actbtn:hover{border-color:var(--accent);color:var(--accent);}
.ax .plgt .pl-actbtn.ok{border-color:#B7E4C7;color:var(--ok-tx);background:var(--ok-bg);}
.ax .plgt .pl-actbtn.ok:hover{background:#0E9E5A;color:#fff;border-color:#0E9E5A;}
.ax .tt .dl.over{color:#E5484D;} .ax .tt .dl.soon{color:#EA9A17;} .ax .tt .dl.none{color:var(--faint);} .ax .tt .dl{color:var(--accent);}

/* 홈-04 오늘 일정 / nx 박스 공용 */
.ax .nx{background:var(--accent-bg);border:1px solid var(--accent-bd);border-radius:8px;padding:14px 16px;margin:0 0 4px;}
.ax .nx-lab{font-size:12px;font-weight:700;color:var(--accent);letter-spacing:.02em;}
.ax .nx-main{margin-top:5px;font-size:16px;font-weight:700;color:var(--ink);letter-spacing:-.01em;} .ax .nx-time{font-size:20px;font-weight:700;color:var(--accent);margin-right:4px;}
.ax .nx-who{font-size:13px;color:var(--sub);margin-top:2px;}
.ax .secl{font-size:13px;font-weight:700;color:var(--sub);letter-spacing:.01em;margin:18px 0 9px;padding-left:14px;}
.ax .colh{display:flex;align-items:center;gap:14px;padding:2px 0 7px;font-size:11px;font-weight:700;color:var(--sub);letter-spacing:.02em;border-bottom:1px solid var(--line);margin-bottom:2px;}
.ax .colh .ch-time{flex:0 0 52px;} .ax .colh .ch-flex{flex:1;}
/* 차트 헤드라인 요약 (핵심 값 + 변화율) */
.ax .chsum{display:flex;align-items:baseline;gap:9px;margin-bottom:12px;}
.ax .chsum-v{font-size:23px;font-weight:700;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums;}
.ax .chsum-d{font-size:13px;font-weight:700;} .ax .chsum-d.up{color:var(--ok-tx);} .ax .chsum-d.dn{color:var(--crit-tx);}
.ax .chsum-sub{font-size:12px;color:var(--mut);font-weight:600;margin-left:auto;align-self:center;}
/* 반원 게이지 (팀 달성율) */
.ax .gauges{display:flex;justify-content:space-around;align-items:flex-end;padding:10px 0 2px;gap:12px;}
.ax .gauge{flex:1;max-width:180px;text-align:center;} .ax .gauge svg{width:100%;height:auto;display:block;}
.ax .teamgoal{text-align:center;padding-top:4px;} .ax .teamgoal .gauge{max-width:210px;margin:0 auto;}
.ax .gnum{margin-top:6px;font-size:14.5px;font-weight:600;color:var(--sub);font-variant-numeric:tabular-nums;} .ax .gnum b{color:var(--ink);font-weight:700;} .ax .gnum .hl{color:var(--accent);font-weight:700;}
.ax .cr{display:flex;align-items:center;gap:14px;padding:11px 0;} .ax .cr+.cr{border-top:1px solid var(--line);}
.ax .cr-t{flex:0 0 52px;font-size:16px;font-weight:700;color:var(--accent);} .ax .cr-ti{flex:1;font-size:15px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}

/* 홈-05 목표 */
.ax .goal{padding:0 0 13px;} .ax .goal+.goal{border-top:1px solid var(--line);padding-top:13px;}
.ax .g-m{font-size:14.5px;font-weight:700;color:var(--sub);letter-spacing:-.01em;}
.ax .g-line{margin-top:6px;display:flex;align-items:baseline;gap:9px;font-variant-numeric:tabular-nums;}
.ax .g-pct{font-size:22px;font-weight:700;color:var(--accent);letter-spacing:-.02em;}
.ax .g-t{font-size:14px;font-weight:600;color:var(--sub);}
.ax .g-left{margin-left:auto;font-size:14px;font-weight:700;color:var(--accent);} .ax .g-left em{font-style:normal;font-weight:600;color:var(--mut);font-size:13px;}
.ax .hbar{height:6px;background:var(--line);border-radius:999px;overflow:hidden;margin-top:10px;} .ax .hbar>span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--chart-bar-emp),#3B82F6);}
/* 목표 — 지표명 먼저 (읽기 순서 확정 2026-07-10) */
.ax .goal2{padding:2px 0 15px;} .ax .goal2+.goal2{border-top:1px solid var(--line);padding-top:15px;}
.ax .g-m2{font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;padding-bottom:9px;border-bottom:1px solid var(--line);margin-bottom:10px;}
.ax .g-r1{font-size:15px;font-weight:600;color:var(--sub);font-variant-numeric:tabular-nums;} .ax .g-r1 b{font-size:18px;font-weight:700;color:var(--ink);margin-right:2px;}
.ax .g-r2{font-size:13.5px;font-weight:600;color:var(--sub);margin-top:5px;font-variant-numeric:tabular-nums;} .ax .g-r2 .pctv{color:var(--accent);font-weight:700;} .ax .g-r2 .hl{color:var(--accent);font-weight:700;}
.ax .goal2 .hbar{margin-top:11px;}
/* 정렬 리스트 테이블 — 그리드 컬럼 정렬 + 헤더 + 일관 강세 (2026-07-10) */
.ax .lt-head{display:grid;align-items:center;gap:12px;padding:0 0 10px;font-size:11px;font-weight:700;color:var(--sub);letter-spacing:.03em;border-bottom:1px solid var(--line);}
.ax .lt-row{display:grid;align-items:center;gap:12px;padding:12px 0;} .ax .lt-row+.lt-row{border-top:1px solid var(--line);}
.ax .lt-main{font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;display:flex;align-items:center;gap:9px;min-width:0;}
.ax .lt-main .tx{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ax .lt-sub{font-size:13px;font-weight:500;color:var(--sub);}
.ax .lt-time{font-size:15px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums;}
.ax .lt-val{font-size:13.5px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums;}
.ax .lt-tag{font-size:11.5px;font-weight:700;color:var(--sub);background:#F1F3F6;border-radius:var(--r-badge);padding:2px 8px;justify-self:start;}
.ax .lt-row .chev{justify-self:end;}
.ax .ra{text-align:right;justify-self:end;}
.ax .t-sched{grid-template-columns:54px 1fr 16px;}
.ax .t-vac{grid-template-columns:auto auto 1fr;column-gap:20px;}
.ax .t-mtg{grid-template-columns:1fr auto auto;}
/* 진짜 표 (.ht) — 헤더 th + 내용 td 컬럼 공유 → 항상 정렬 */
.ax .ht{width:100%;border-collapse:collapse;table-layout:fixed;}
.ax .ht th{font-size:12.5px;font-weight:600;color:var(--ink);letter-spacing:.03em;text-align:left;padding:9px 0;background:#F2F4F7;white-space:nowrap;}
.ax .ht th.num{text-align:right;}.ax .ht th:first-child{border-radius:7px 0 0 7px;} .ax .ht th:last-child{border-radius:0 7px 7px 0;} 
.ax .ht td{padding:12px 0;border-top:1px solid var(--line);font-size:14px;color:var(--sub);font-variant-numeric:tabular-nums;vertical-align:middle;}.ax .ht th:first-child,.ax .ht td:first-child{padding-left:14px;} .ax .ht th:last-child,.ax .ht td:last-child{padding-right:14px;}
.ax .ht tbody tr:first-child td{border-top:0;}
.ax .ht td.mn{font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ax .ht td.tm{font-size:15px;font-weight:700;color:var(--accent);}
.ax .ht td.val{font-size:13.5px;font-weight:700;color:var(--accent);}
.ax .ht th.ra,.ax .ht td.ra{text-align:right;}
.ax .ht .lt-tag{display:inline-block;font-size:11.5px;font-weight:700;color:var(--sub);background:#F1F3F6;border-radius:var(--r-badge);padding:2px 8px;}

/* 홈-06 팀 휴가 */
.ax .hav{width:30px;height:30px;flex:0 0 auto;border-radius:50%;background:#EAEFF6;color:#5877A8;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;}
.ax .vt-p{display:flex;align-items:center;gap:8px;margin-top:8px;} .ax .vt-team{font-size:11.5px;font-weight:700;color:var(--sub);background:#F1F3F6;border-radius:var(--r-badge);padding:2px 7px;flex:0 0 auto;} .ax .vt-nm{font-size:15px;font-weight:700;color:var(--ink);} .ax .vt-tag{font-size:12.5px;font-weight:600;color:var(--accent);background:#fff;border:1px solid var(--accent-bd);border-radius:var(--r-badge);padding:2px 8px;}
.ax .vr{display:flex;align-items:center;gap:12px;padding:12px 0;} .ax .vr+.vr{border-top:1px solid var(--line);}
.ax .v-nm{font-size:15px;font-weight:700;color:var(--ink);} .ax .v-mt{flex:1;font-size:13.5px;color:var(--sub);font-weight:500;} .ax .v-d{font-size:13px;font-weight:700;color:var(--accent);}

/* 홈-07 공지 */
.ax .no{padding:12px 0;display:flex;align-items:center;gap:12px;} .ax .no+.no{border-top:1px solid var(--line);}
.ax .no-t{flex:1;font-size:14.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;display:flex;align-items:center;gap:6px;}
.ax .no-d{font-size:12.5px;color:var(--mut);font-weight:500;white-space:nowrap;display:flex;align-items:center;gap:8px;}
.ax .ntag{font-size:10.5px;font-weight:700;color:var(--accent);background:var(--accent-bg);border:1px solid var(--accent-bd);border-radius:var(--r-badge);padding:1px 6px;flex:0 0 auto;} .ax .no-pin .no-t{color:var(--accent);}

/* 홈-08/10 차트 공용 */
.ax .chart{width:100%;height:auto;display:block;} .ax .chart text{font-family:var(--font);}
.ax .clegend{display:flex;gap:16px;margin-top:11px;font-size:12px;color:var(--sub);font-weight:600;justify-content:center;}
.ax .clegend span{display:inline-flex;align-items:center;} .ax .clegend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;} .ax .clegend i.ln{width:15px;height:3px;border-radius:2px;}
/* 홈-10 팀 목표 */
.ax .goalhd{display:flex;align-items:baseline;gap:8px;margin-bottom:12px;} .ax .goalhd b{font-size:24px;font-weight:700;color:var(--accent);letter-spacing:-.02em;} .ax .goalhd span{font-size:13.5px;font-weight:600;color:var(--sub);}
/* 홈-11 이번달 현황 */
.ax .stat{display:flex;align-items:baseline;justify-content:space-between;padding:11px 0;} .ax .stat+.stat{border-top:1px solid var(--line);}
.ax .st-l{font-size:14px;font-weight:600;color:var(--sub);}
.ax .st-v{font-size:17px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em;} .ax .st-v em{font-size:12.5px;font-weight:700;font-style:normal;margin-left:6px;}
.ax .up{color:var(--ok-tx);} .ax .dn{color:var(--crit-tx);}
/* 홈-09 이번주 캘린더 */
/* 이번주 캘린더 — 노션st (2026-07-11): 전체 그리드선·상단 요일+날짜·오늘 원형·타입별 색블록 */
.ax .cal{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.ax .calc{background:#fff;padding:11px 11px 13px;min-height:158px;display:flex;flex-direction:column;}
.ax .calc.we{background:#FBFCFD;}
.ax .calc.today{background:#F7FAFF;}
.ax .cal-top{display:flex;align-items:center;gap:7px;margin-bottom:11px;}
.ax .cal-d{font-size:12.5px;font-weight:600;color:var(--mut);}
.ax .calc.we .cal-d{color:var(--faint);}
.ax .calc.today .cal-d{color:var(--accent);font-weight:700;}
.ax .cal-n{font-size:15.5px;font-weight:700;color:var(--sub);font-variant-numeric:tabular-nums;}
.ax .calc.today .cal-n{background:var(--accent);color:#fff;width:25px;height:25px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13.5px;}
.ax .cal-e{display:flex;flex-direction:column;gap:5px;}
.ax .ev{font-size:12.5px;font-weight:600;line-height:1.4;border-radius:6px;padding:5px 9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--blue-soft);color:var(--blue-strong);}
.ax .ev b{font-weight:700;margin-right:4px;font-variant-numeric:tabular-nums;}
.ax .ev.green,.ax .ev.vac{background:var(--ok-bg);color:var(--ok-tx);}
.ax .ev.orange{background:#FFF3E0;color:#B7791F;}
.ax .ev.purple{background:#EEECFB;color:var(--spc-tx);}
/* 홈-12 주간 회의록 */
.ax .mtg{display:flex;align-items:center;gap:11px;padding:11px 0;} .ax .mtg+.mtg{border-top:1px solid var(--line);}
.ax .mtg-t{flex:1;font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em;} .ax .mtg-tag{font-size:11px;font-weight:700;color:var(--sub);background:#F1F3F6;border-radius:var(--r-badge);padding:2px 7px;}
.ax .mtg-m{font-size:12px;color:var(--mut);font-weight:500;white-space:nowrap;}
/* 홈-08 브랜드/기간 셀렉터 */
.ax .ctrl{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:12px;}
.ax .bchip{font-size:12.5px;font-weight:700;padding:5px 11px 5px 9px;border:1px solid var(--card-bd);border-radius:var(--r-badge);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:6px;background:#fff;}
.ax .bchip i{width:9px;height:9px;border-radius:50%;flex:0 0 auto;}
.ax .bchip.off{opacity:.4;} .ax .bchip.off i{filter:grayscale(1);}
/* 탭 정본 = 밑줄 탭 (2026-08-20 통일 ②A — pill 세그먼트 폐기) */
.ax .pseg{margin-left:auto;display:inline-flex;gap:16px;border-bottom:1px solid var(--line);}
.ax .pseg span{font-size:12.5px;font-weight:700;color:var(--mut);padding:6px 2px;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;} .ax .pseg span.on{color:var(--ink);border-bottom-color:var(--accent);}
/* 차트 호버 툴팁 (데이터 라벨) */
.ax .chartwrap{position:relative;}
.ax .charttip{position:absolute;transform:translate(-50%,0);background:#fff;border:1px solid var(--card-bd);box-shadow:0 8px 22px rgba(20,48,110,.14);color:var(--ink);border-radius:8px;padding:11px 13px;pointer-events:none;opacity:0;transition:opacity .12s;z-index:5;min-width:190px;white-space:nowrap;}
.ax .charttip.show{opacity:1;}
.ax .tt-h{font-size:12.5px;font-weight:700;color:var(--ink);padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--line);letter-spacing:-.01em;}
.ax .tt-r{display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:22px;line-height:1.9;white-space:nowrap;}
.ax .tt-b{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--sub);white-space:nowrap;flex:0 0 auto;}
.ax .tt-b i{width:7px;height:7px;border-radius:50%;display:inline-block;flex:0 0 auto;}
.ax .tt-val{display:flex;align-items:baseline;gap:8px;white-space:nowrap;flex:0 0 auto;}
.ax .tt-v{font-size:12.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
.ax .tt-c{font-size:10.5px;font-weight:700;}
.ax .tt-c.up{color:var(--ok-tx);} .ax .tt-c.down{color:var(--crit-tx);}
.ax .chart .hit{cursor:pointer;}

/* 🔴 좁은 폭에서 span 값은 그 폭의 트랙 수를 넘으면 안 된다 — 2열 그리드에 span 3 이면 암시적 유령 트랙이 생겨
   첫 열 카드가 찌부러지고(1120px 홈 붕괴, 2026-08-19 실렌더 확정) 매출 카드가 세로로 무한히 늘어난다. */
@media(max-width:1200px){ .ax .g3{grid-template-columns:1fr 1fr;} .ax .span2{grid-column:span 2;} .ax .span3{grid-column:span 2;} }
@media(max-width:1000px){
 /* 사이드바 오프캔버스 + 그리드 1단. 햄버거·딤·드로어 상세는 아래 통합 모바일 블록(≤1000)이 담당(소스 순서상 전역 .axmnav{none} 이후여야 이김) */
 .ax .sidebar{position:fixed;transform:translateX(-100%);transition:transform .26s ease;z-index:60;} .ax .sidebar.open{transform:none;}
 .ax .grid2,.ax .g3{grid-template-columns:1fr;} .ax .span2{grid-column:auto;} .ax .span3{grid-column:auto;}
}

/* 목표 KPI 스타일 (레퍼런스: 절대값+상태뱃지+진행바+0/목표) 2026-07-11 */
.ax .goalk{padding:2px 0 16px;} .ax .goalk+.goalk{border-top:1px solid var(--line);padding-top:16px;}
.ax .gk-m{font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;margin-bottom:10px;}
.ax .gk-v{display:flex;align-items:baseline;gap:9px;margin-bottom:11px;font-variant-numeric:tabular-nums;}
.ax .gk-v b{font-size:23px;font-weight:700;color:var(--ink);letter-spacing:-.02em;}
.ax .gk-pct{font-size:14px;font-weight:700;color:var(--sub);}
.ax .gk-badge{margin-left:auto;align-self:center;font-size:12px;font-weight:700;padding:3px 10px;border-radius:var(--r-badge);}
.ax .gk-badge.ok{color:var(--ok-tx);background:var(--ok-bg);} .ax .gk-badge.mid{color:var(--accent);background:var(--accent-bg);} .ax .gk-badge.warn{color:var(--warn-tx);background:var(--warn-bg);}
.ax .gk-bar{position:relative;height:10px;background:var(--line);border-radius:999px;overflow:hidden;}
.ax .pace-mark{position:absolute;top:0;width:2px;height:100%;background:#556070;opacity:.55;border-radius:2px;}
.ax .gk-badge.gray{color:#8B95A1;background:#F1F3F5;} .ax .gk-bar.gray>span{background:#C4CDD6;}
.ax .gk-proj{font-size:11px;color:var(--mut);font-weight:600;line-height:1.45;margin-top:7px;}
.ax .gk-bar>span{display:block;height:100%;border-radius:999px;}
.ax .gk-bar.ok>span{background:var(--ok);} .ax .gk-bar.mid>span{background:linear-gradient(90deg,var(--chart-bar-emp),#3B82F6);} .ax .gk-bar.warn>span{background:var(--warn);}
.ax .gk-scale{display:flex;justify-content:space-between;margin-top:8px;font-size:11.5px;color:var(--mut);font-weight:600;font-variant-numeric:tabular-nums;}
/* 캘린더: 카드 높이 꽉 채워 오늘일정과 자동 정렬 + 내용 확대 (2026-07-11) */
.ax .calcard{display:flex;flex-direction:column;}
.ax .calcard .cb{flex:1;display:flex;}
.ax .calcard .cal{flex:1;}
/* 목표 실데이터 (팀·개인 KPI 종합) 2026-07-11 */
.ax .goal-month{font-size:11.5px;font-weight:600;color:var(--mut);margin-bottom:12px;}
.ax .gk-hl{font-size:11.5px;font-weight:600;line-height:1.55;margin-top:8px;}
.ax .gk-hl.up{color:var(--ok-tx);} .ax .gk-hl.down{color:#C0392B;}
.ax .goal-empty{font-size:13px;color:var(--mut);font-weight:600;padding:18px 2px;}
.ax .cal-empty{font-size:13px;color:var(--mut);font-weight:500;padding:22px 2px;text-align:center;}
.ax .ht td.mn a{color:inherit;text-decoration:none;} .ax .ht td.mn a:hover{text-decoration:underline;text-underline-offset:2px;}
/* 팀휴가 빈 상태 + 회의록 행 클릭 + 팀 뱃지색 2026-07-11 */
.ax .vac-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:36px 0 32px;color:var(--mut);font-size:13px;font-weight:500;}
.ax .vac-empty .ve-ic{font-size:26px;}
.ax .ht tr.clk{cursor:pointer;}
.ax .ht tr.clk:hover td{background:#F7FAFF;}
.ax .lt-tag.t1{color:var(--blue-strong);background:var(--blue-soft);}
.ax .lt-tag.t2{color:var(--spc-tx);background:#EEECFB;}
/* 탭 정본 = 밑줄 탭 (2026-08-20 통일 ②A) */
.ax .mtg-seg{display:inline-flex;gap:16px;border-bottom:1px solid var(--line);margin-bottom:14px;}
.ax .mtg-seg span{font-size:13.5px;font-weight:700;color:var(--mut);padding:8px 2px;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;}
.ax .mtg-seg span.on{color:var(--ink);border-bottom-color:var(--accent);}
/* 매출 스코어카드 2단 (이번달/지난달) 2026-07-12 */
.ax .chsum{display:flex;align-items:flex-end;gap:20px;}
.ax .cs-lab{font-size:12px;color:var(--mut);font-weight:600;margin-bottom:4px;}
.ax .cs-val{font-size:24px;font-weight:700;color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px;line-height:1;}
.ax .cs-prev .cs-val{color:var(--sub);}
.ax .cs-sep{width:1px;align-self:stretch;background:var(--line);margin:3px 0;}
/* 임박 휴가(D-5 이내) 강조 2026-07-12 */
.ax .vt-dday{margin-left:auto;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:var(--r-badge);font-variant-numeric:tabular-nums;}
.ax .vt-dday.d0{color:var(--crit-tx);background:var(--crit-bg);}
.ax .vt-dday.d1{color:var(--warn-tx);background:var(--warn-bg);}
.ax .vt-dday.d2{color:var(--blue-strong);background:var(--blue-soft);}
/* 바로가기 북마크바 (히어로 아래 1줄) 2026-07-12 */
.ax .bmbar{display:flex;align-items:center;flex-wrap:wrap;gap:5px 3px;padding:9px 16px;background:#fff;border:1px solid var(--card-bd);border-radius:12px;box-shadow:var(--shadow);}
.ax .bm-title{font-size:13px;font-weight:700;color:var(--ink);letter-spacing:-.01em;padding:5px 0;margin-left:2px;}
.ax .bm-lab{font-size:13px;font-weight:700;color:var(--mut);padding:5px 0;margin:0 6px 0 2px;}
.ax .bm{font-size:13px;font-weight:600;color:var(--sub);padding:5px 11px;border-radius:8px;text-decoration:none;transition:background .12s,color .12s;}
.ax .bm:hover{background:var(--accent-bg);color:var(--accent);}
.ax .bm-sep{width:1px;height:17px;background:var(--line);margin:0 11px;}
/* 휴가 행 + 큰 원형 D-day 뱃지 2026-07-12 */
.ax .vrow{display:flex;align-items:center;gap:11px;padding:12px 13px;border-radius:14px;background:#F7F9FB;box-shadow:inset 0 0 0 1px #EDF0F4;}
.ax .vrow+.vrow{margin-top:8px;}
.ax .vrow.today{background:linear-gradient(180deg,#FFF3F5,#FFF9FA);box-shadow:inset 0 0 0 1px #FBD8DD;}
.ax .vav{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;flex:0 0 auto;letter-spacing:-.01em;}
.ax .vav.t1{background:var(--blue-soft);color:var(--blue-strong);}
.ax .vav.t2{background:#EEECFB;color:var(--spc-tx);}
.ax .vinfo{flex:1;min-width:0;}
.ax .vname{font-size:15px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.ax .vwhen{font-size:12.5px;color:var(--sub);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;}
.ax .vdday{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13.5px;font-weight:700;flex:0 0 auto;font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.ax .vdday.d0{color:#fff;background:var(--crit);box-shadow:0 3px 10px rgba(242,62,92,.30);}
.ax .vdday.d1{color:#fff;background:var(--warn);}
.ax .vdday.d2{color:var(--blue-strong);background:var(--blue-soft);}
.ax .vdday.d3{color:var(--sub);background:#F1F3F6;}
.ax #teamVac .ht{margin-top:16px;}
/* ── 일정 픽커 (구글 캘린더식) ── */
.schwrap{display:flex;flex-direction:column}
.schall{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;background:#F7F8FA;border-radius:8px;margin-bottom:10px}
.schall .t{font-size:13.5px;font-weight:700;color:#191F28}
.schrow{display:flex;align-items:center;gap:9px;padding:8px 0;border-bottom:1px solid #F0F1F4}
.schrow:last-of-type{border-bottom:0}
.schlab{width:36px;flex:0 0 auto;font-size:12.5px;font-weight:700;color:#6B7683}
.schdate,.schtime{display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 12px;border:1px solid #E5E8EB;border-radius:8px;background:#F7F8FA;font-family:inherit;font-size:13.5px;font-weight:600;color:#191F28;cursor:pointer}
.schdate:hover,.schtime:hover{border-color:#C7CED8}
.schdate.open,.schtime.open{border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(49,130,246,.12)}
.schdate svg,.schtime svg{width:14px;height:14px;color:var(--mut);flex:0 0 auto}
.schdate{flex:0 1 auto;min-width:150px}.schtime{flex:0 0 118px}
.schwrap.allday .schtime{display:none}
.schint{margin-top:12px;font-size:12.5px;color:var(--mut)}.schint b{color:#191F28;font-weight:700}
.schpop{position:fixed;z-index:10001;background:#fff;border:1px solid #E5E8EB;border-radius:14px;box-shadow:0 16px 44px rgba(16,28,48,.22);padding:12px;opacity:0;transform:translateY(-5px);pointer-events:none;transition:.13s}
.schpop.show{opacity:1;transform:none;pointer-events:auto}
.dph{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;padding:0 2px}
.dph b{font-size:13.5px;font-weight:700;color:#191F28}
.dpnav{width:28px;height:28px;border-radius:8px;border:0;background:none;color:#6B7683;cursor:pointer;font-size:16px;line-height:1}
.dpnav:hover{background:#F1F3F5}
.dpg{display:grid;grid-template-columns:repeat(7,32px);gap:2px}
.dpwd{font-size:10.5px;font-weight:700;color:var(--mut);text-align:center;height:22px;line-height:22px}
.dpd{height:32px;border-radius:8px;border:0;background:none;font-family:inherit;font-size:12.5px;font-weight:600;color:#191F28;cursor:pointer}
.dpd:hover{background:#F1F3F5}.dpd.mut{color:#C9CFD8;cursor:default}.dpd.sun{color:#E5484D}.dpd.sat{color:var(--blue)}
.dpd.today{box-shadow:inset 0 0 0 1.5px #E5E8EB}.dpd.sel{background:var(--blue);color:#fff}
.schtl{max-height:224px;overflow-y:auto;min-width:120px;margin:-3px;white-space:nowrap}
.schtl button{display:block;width:100%;text-align:left;padding:8px 12px;border:0;background:none;font-family:inherit;font-size:13px;font-weight:600;color:#191F28;cursor:pointer;border-radius:7px}
.schtl button:hover{background:#F1F3F5}.schtl button.sel{color:var(--blue);font-weight:700;background:var(--blue-soft)}
.schtl .dur{color:var(--mut);font-weight:600;font-size:12px;margin-left:3px}.schtl button.sel .dur{color:var(--blue)}

/* ── 주간 마감 캘린더 (제작 현황판·협력사 공용) ── */
.pcal-t{font-size:13px;font-weight:700;color:var(--mut);letter-spacing:.02em;margin:2px 2px 12px;display:flex;align-items:center;gap:7px}
/* 이번주 마감 캘린더 색 범례 (2026-08-20 통일 ⑪) */
.ax .pcal-lg{margin-left:auto;display:inline-flex;gap:14px;font-size:11.5px;font-weight:600;color:var(--mut);}
.ax .pcal-lg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;}
.ax .pcal-lg span{display:inline-flex;align-items:center;}
.pcal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:9px;margin-bottom:26px}
.pcal .cd{border:1px solid var(--card-bd);border-radius:12px;min-height:104px;padding:9px 9px 10px;display:flex;flex-direction:column;gap:5px;background:#fff}
.pcal .cd.today{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-soft)}
.pcal .cd.we{background:#F6F8FA}
.pcal .cd .h{display:flex;align-items:baseline;gap:6px}
.pcal .cd .dw{font-size:11.5px;font-weight:700;color:var(--mut)} .pcal .cd .dn{font-size:15px;font-weight:700;color:var(--ink)}
.pcal .cd.today .dw{color:var(--blue)} .pcal .cd.today .dn{color:var(--blue-strong)}
.pcal .cd .none{font-size:11px;color:#C7CED8;font-weight:600;margin:auto 0 4px}
.pev{font-size:11px;font-weight:700;color:#fff;border-radius:6px;padding:4px 7px;line-height:1.3;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:900px){.pcal{grid-template-columns:repeat(4,1fr)}}
@media(max-width:560px){.pcal{grid-template-columns:repeat(2,1fr)}}

/* ============ 모바일 최적화 (사이드바 오프캔버스 + 햄버거) 2026-07-23 ============ */
.axmnav{display:none;}
.axsbdim{display:none;}
@media(max-width:1000px){    /* 통합 모바일: 사이드바 오프캔버스 breakpoint(1000)와 햄버거 노출을 일치 — 861~1000px 네비 사각지대 제거 */
  .ax{display:block;}
  .ax .sidebar{position:fixed;top:0;left:0;height:100vh;height:100dvh;width:82%;max-width:288px;z-index:60;transform:translateX(-100%);transition:transform .26s ease;box-shadow:0 0 44px rgba(0,0,0,.45);padding:22px 22px 20px;overflow-y:auto;}
  .ax .sidebar.open{transform:none;}
  .ax .main{width:100%;min-width:0;}
  .ax .wrap{padding:62px 15px 40px;gap:15px;}
  .axmnav{display:flex;position:fixed;top:10px;left:11px;z-index:41;width:44px;height:44px;align-items:center;justify-content:center;background:var(--side);border:0;border-radius:12px;box-shadow:0 4px 16px rgba(16,28,48,.28);cursor:pointer;padding:0;}
  .axmnav svg{width:22px;height:22px;color:#fff;}
  .axsbdim{display:none;position:fixed;inset:0;background:rgba(10,16,30,.5);z-index:55;}
  .axsbdim.on{display:block;}
  /* 컨텐츠 반응형 */
  .ax .hero{padding:22px 18px;border-radius:14px;}
  .ax .hgreet{font-size:21px;}
  .ax .hsub{font-size:13.5px;}
  .ax .grid2,.ax .g3{grid-template-columns:1fr;gap:14px;}
  .ax .page-t{font-size:21px;}
  .ax .page-hd-row{flex-wrap:wrap;gap:10px;}
  /* 표는 가로 스크롤 (컨테이너에 overflow-x 이미 있음) */
  .ax table{font-size:12.5px;}
}
@media(max-width:480px){
  .ax .wrap{padding:60px 12px 36px;}
  .ax .hgreet{font-size:19px;}
}

/* ============ 모바일 컴포넌트 1~2단 재배치 (공용) 2026-07-23 ============ */
/* overflow-x:hidden은 조상에 걸면 position:sticky(사이드바)를 깨므로 모바일에서만 */
@media(max-width:768px){ html,body{overflow-x:hidden;} }
@media(max-width:600px){
  .ax .wrap{max-width:100%;}
  /* 카드 그리드 → 1단 */
  .ax .qgrid{grid-template-columns:1fr !important;}
  /* 인플루언서 지표 6칸 → 2칸 */
  .ax .stats{grid-template-columns:repeat(2,1fr);}
  /* 헤더 컨트롤 세로 스택 + 버튼 꽉차게 */
  .ax .cf-hd{flex-direction:column;align-items:stretch;gap:10px;}
  .ax .cf-hd .r{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  .ax .cf-hd .r .btn-g{justify-content:center;width:100%;}
  .ax .cf-hd .r .btn-g:first-child{grid-column:1 / -1;}
  /* 세그먼트 가로 스크롤 (줄바꿈 대신) */
  .ax .seg,.ax .fseg{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;}
  .ax .seg span,.ax .fseg span{white-space:nowrap;}
  /* 액션 버튼 줄바꿈 허용 */
  .ax .ft{flex-wrap:wrap;}
  .ax .ft .decide{min-width:0;}
  /* 단가 입력 4칸(sponsor-price) → 1칸 */
  .ax .pgrid{grid-template-columns:1fr;}
  /* 리스트 헤더 줄바꿈 */
  .ax .lst-hd,.ax .cf-lsthd{flex-wrap:wrap;gap:8px;}
  /* 프로필카드(단가) 상단 줄바꿈 */
  .ax .rcard .top{flex-wrap:wrap;}
  /* ── 유료협찬 컨펌 새 컨트롤(cf-ctl) 모바일 실무 처리 최적화 2026-07-27 ── */
  .ax .cf-hd .r .btn-g{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;padding:0 8px;}
  .ax .cf-ctl{gap:8px;}
  .ax .cf-ctl .sp{display:none;}                              /* margin-left:auto 제거 → 좌측 스택 */
  .ax .cf-fseg{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;padding-bottom:3px;}
  .ax .cf-fseg .cfc{flex:0 0 auto;}
  .ax .cf-ctl .cf-more{order:2;}
  .ax .cf-ctl .vseg{order:2;margin-left:auto;}                /* 상세필터 옆 카드/표 토글 */
  .ax .cf-ctl .cf-search{order:3;flex:1 1 100%;width:auto;}   /* 검색 풀폭 아래줄 */
  .ax .cf-panel .fgrid{grid-template-columns:1fr;gap:8px;align-items:start;}
  .ax .cf-panel .qc-conds{grid-template-columns:1fr 1fr;}
}


/* ── 사이드바 흔들림 방지 (2026-07-30) ──
   원인: `.item`은 display:block인데 `.item.on`만 inline-block이라, 클릭으로 활성이 바뀔 때마다
   display가 바뀌며 메뉴 줄 위치가 밀렸다. 밑줄을 텍스트 폭에만 붙이려고 inline-block을 쓴 것.
   해결: 두 상태 모두 block + width:fit-content (한 줄 한 항목 유지 + 밑줄은 텍스트 폭).
   밑줄 자리는 항상 확보(투명)해 활성 전환 시 높이도 안 흔들린다. */
.ax .item, .ax .sub{display:block;width:fit-content;text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:1.7px;text-underline-offset:6px;text-decoration-skip-ink:none;}
.ax .item.on, .ax .sub.on{display:block;width:fit-content;text-decoration-color:var(--sky);}


/* ── 제작 리소스 현황판 (capacity.html · 2026-07-30) ──
   여력 = 진행 분량 ÷ 본인 주당 처리량. 영상(편)·이미지(컷) 단위가 달라 절대 편수 비교는 하지 않는다.
   신호색 = go 원활 / slow 서행 / jam 정체 / na 판정불가(처리 이력 없음). */
.ax .rs-hd{font-size:15px;font-weight:700;color:var(--ink);letter-spacing:-.01em;margin:26px 0 12px;display:flex;align-items:baseline;gap:9px;}
.ax .rs-hd-s{font-size:12.5px;font-weight:600;color:var(--mut);letter-spacing:0;}
.ax .rs-msub{font-size:11.5px;font-weight:700;color:var(--sub);margin-top:7px;}
.ax .rs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:13px;}

.ax .rs-c{background:#fff;border:1px solid var(--card-bd);border-radius:14px;padding:15px 16px 13px;position:relative;overflow:hidden;}
.ax .rs-c:before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--faint);}
.ax .rs-c.lv-go:before{background:var(--ok);} .ax .rs-c.lv-slow:before{background:var(--warn);}
.ax .rs-c.lv-jam:before{background:var(--crit);} .ax .rs-c.lv-na:before{background:var(--line-2);}
.ax .rs-c-hd{display:flex;align-items:center;gap:8px;margin-bottom:13px;}
.ax .rs-nm{font-size:15.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.ax .rs-u{font-size:11px;font-weight:700;color:var(--sub);background:#F1F3F6;border-radius:4px;padding:2px 6px;}
.ax .rs-lv{margin-left:auto;display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border-radius:20px;font-size:11.5px;font-weight:700;}
.ax .rs-lv .d{width:5px;height:5px;border-radius:50%;background:currentColor;}
.ax .rs-lv.go{color:var(--ok-tx);background:var(--ok-bg);} .ax .rs-lv.slow{color:var(--warn-tx);background:var(--warn-bg);}
.ax .rs-lv.jam{color:var(--crit-tx);background:var(--crit-bg);} .ax .rs-lv.na{color:var(--mut);background:#F1F3F6;}

.ax .rs-big{font-size:16px;font-weight:700;color:var(--sub);letter-spacing:-.01em;}
.ax .rs-big b{font-size:24px;font-weight:700;color:var(--ink);letter-spacing:-.03em;}
.ax .rs-big.na{font-size:15px;font-weight:700;color:var(--mut);}
.ax .rs-bigs{font-size:12px;font-weight:600;color:var(--mut);margin-top:5px;font-variant-numeric:tabular-nums;}

.ax .rs-mrow{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:13px 0 12px;}
.ax .rs-mi{background:#F7F8FA;border-radius:8px;padding:7px 4px;text-align:center;}
.ax .rs-mi .l{display:block;font-size:10.5px;font-weight:700;color:var(--mut);margin-bottom:3px;}
.ax .rs-mi b{font-size:15px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
.ax .rs-mi.z b{color:var(--faint);}
.ax .rs-mi.crit{background:var(--crit-bg);} .ax .rs-mi.crit b{color:var(--crit-tx);}
.ax .rs-mi.warn{background:var(--warn-bg);} .ax .rs-mi.warn b{color:var(--warn-tx);}

.ax .rs-spark{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding-top:2px;}
.ax .rs-spark .l{font-size:11px;font-weight:700;color:var(--mut);padding-bottom:2px;}
.ax .rs-bars{display:flex;align-items:flex-end;gap:3px;height:32px;}
.ax .rs-bars i{display:block;width:7px;border-radius:2px 2px 0 0;background:var(--chart-bar);}
.ax .rs-bars i.cur{background:var(--chart-bar-emp);}
.ax .rs-c-ft{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding-top:11px;border-top:1px solid var(--line);font-size:12px;font-weight:700;color:var(--sub);}
.ax .rs-c-ft a{color:var(--accent);text-decoration:none;} .ax .rs-c-ft a:hover{text-decoration:underline;}

/* 날짜별 몰림 격자 — 행=제작자, 열=이전지남 + 2주 */
.ax .rs-heat-wrap{overflow-x:auto;background:#fff;border:1px solid var(--card-bd);border-radius:14px;padding:12px 14px 14px;}
.ax .rs-heat{min-width:640px;}
.ax .rs-hrow{display:grid;grid-template-columns:64px 44px repeat(14,1fr);gap:4px;align-items:center;margin-bottom:4px;}
.ax .rs-hhead{margin-bottom:6px;}
.ax .rs-hnm{font-size:12.5px;font-weight:700;color:var(--ink);}
.ax .rs-hcell{font-size:10.5px;font-weight:700;color:var(--mut);text-align:center;line-height:1.35;}
.ax .rs-hcell b{font-size:12px;font-weight:700;color:var(--sub);}
.ax .rs-hcell.today b{color:var(--accent);} .ax .rs-hcell.we{color:var(--faint);}
.ax .rs-hcell.rs-hpast{color:var(--faint);}
.ax .rs-hc{height:26px;border-radius:6px;background:#F4F6F8;display:flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;}
.ax .rs-hc.we{background:#FAFBFC;}
.ax .rs-hc.go{background:#DDEBFE;color:var(--accent);}
.ax .rs-hc.slow{background:var(--warn-bg);color:var(--warn-tx);}
.ax .rs-hc.jam{background:var(--crit-bg);color:var(--crit-tx);}
.ax .rs-hc.flat{background:var(--card-bd);color:var(--sub);}
/* 오늘 열 표시 — 빈 칸에까지 테두리를 두르면 입력창처럼 보인다. 빈 칸은 옅은 띠, 값 있는 칸만 테두리. */
.ax .rs-hc.today{background:#E8EFFA;}
.ax .rs-hc.today.has{box-shadow:inset 0 0 0 1.5px var(--accent);}
.ax .rs-hcell.wk2, .ax .rs-hc.wk2{margin-left:7px;}
.ax .rs-note{margin-top:14px;font-size:12px;font-weight:600;color:var(--mut);line-height:1.7;}
@media (max-width:900px){ .ax .rs-grid{grid-template-columns:1fr;} }
.ax .rs-ex{font-size:11.5px;font-weight:700;color:var(--sub);background:#F7F8FA;border-radius:7px;padding:6px 8px;margin-bottom:11px;line-height:1.5;}
.ax .rs-lg{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:11.5px;font-weight:700;color:var(--mut);}
.ax .rs-lg-i{width:13px;height:13px;border-radius:4px;background:#F4F6F8;margin-left:9px;}
.ax .rs-lg-i:first-child{margin-left:0;}
.ax .rs-lg-i.go{background:#DDEBFE;} .ax .rs-lg-i.slow{background:var(--warn-bg);}
.ax .rs-lg-i.jam{background:var(--crit-bg);} .ax .rs-lg-i.flat{background:var(--card-bd);}
.ax .rs-ask{color:var(--crit-tx);font-weight:700;}


/* ── 제작 리소스 (resource.js · capacity/production/협력사 공용) ──
   정본 스펙 = backlog/제작리소스_현황_및_본인신고.md · 색 확정 2026-07-30
   ⚠️ 표 뼈대(.dt.rt 좌측정렬·13px·아바타·체크박스)는 2026-08-03 정본(ds/styles.css)으로 올라갔다.
   여기엔 **이 화면 고유의 상태색·열 묶음만** 둔다. 뼈대를 여기서 다시 정의하지 말 것.
   (옛 주석은 "정본 표 헤더가 11px/#4E5968 로 어긋나 있어 여기서 우회한다" 였다 — 그 정본을 고쳤으므로 우회 불필요) */
:is(.ax,.tmodal) .dt.rt .dt-cat{font-size:13px;font-weight:600;padding:2px 8px;margin-left:8px;}
:is(.ax,.tmodal) .dt.rt th[colspan]{text-align:center;}
:is(.ax,.tmodal) .dt.rt th.gh{padding:8px 14px;letter-spacing:.02em;}
:is(.ax,.tmodal) .dt.rt th.wk1{background:#DCE6F5;color:var(--navy);}   /* 헤더 강조는 이번주만 — 색 3종 금지 */
:is(.ax,.tmodal) .dt.rt th.wend{color:var(--mut);}
:is(.ax,.tmodal) .dt.rt th.tdy{color:var(--accent);}
:is(.ax,.tmodal) .dt.rt .gsep{border-left:2px solid #B9C5D6;}           /* 성질 다른 열 묶음 경계 */
:is(.ax,.tmodal) .dt.rt th.pl, :is(.ax,.tmodal) .dt.rt td.pl{border-right:0;width:1px;padding-left:0;padding-right:0;}
/* 상태색 — 여유 / 조율필요 / 리소스부족 */
:is(.ax,.tmodal) .dt.rt td.ease{background:#EAF7F1;color:var(--ok-tx);}
:is(.ax,.tmodal) .dt.rt td.tight{background:var(--warn-bg);color:#B8730A;}
:is(.ax,.tmodal) .dt.rt td.short{background:#FCEAED;color:#C7203C;}
:is(.ax,.tmodal) .dt.rt td.off{background:#F7F8FA;color:var(--faint);}
:is(.ax,.tmodal) .dt.rt td.na{color:var(--faint);}
:is(.ax,.tmodal) .dt.rt td.pick{box-shadow:inset 0 0 0 2px var(--accent);}
:is(.ax,.tmodal) .dt.rt th.sum, :is(.ax,.tmodal) .dt.rt td.sum{text-align:left;padding-left:16px;}
:is(.ax,.tmodal) .st.j-ease{color:var(--ok-tx);} :is(.ax,.tmodal) .st.j-tight{color:#B8730A;}
:is(.ax,.tmodal) .st.j-short{color:#C7203C;} :is(.ax,.tmodal) .st.j-na{color:var(--mut);}
:is(.ax,.tmodal) .st{font-size:13px;font-weight:600;}
/* 요청 폼 안 블록 */
:is(.ax,.tmodal) .rt-form{margin:16px 0 0;}
:is(.ax,.tmodal) .rt-hd{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:8px;}
:is(.ax,.tmodal) .rt-warn{border:1px solid var(--crit);background:var(--crit-bg);border-radius:8px;padding:12px 16px;margin-top:12px;}
:is(.ax,.tmodal) .rt-warn b{display:block;font-size:13px;font-weight:600;color:var(--crit-tx);margin-bottom:4px;}
:is(.ax,.tmodal) .rt-warn span{display:block;font-size:13px;font-weight:500;color:var(--sub);line-height:1.6;}
:is(.ax,.tmodal) .rt-sec{font-size:15px;font-weight:700;letter-spacing:-.02em;color:var(--ink);margin:24px 0 8px;}
:is(.ax,.tmodal) .rt-note{font-size:13px;font-weight:500;color:var(--sub);line-height:1.6;margin-top:12px;}
/* 유의사항 = 여러 줄 입력 (2026-07-31 — input이라 줄바꿈이 물리적으로 불가능했다) */
.tmta{min-height:76px;resize:vertical;line-height:1.6;}

/* 제작 요청 폼 — 기획안 링크를 눌러서 열 수 있게 (협력사 상세와 같은 동선) */
:is(.ax,.tmodal) .tmopen{display:inline-block;margin-top:8px;font-size:13px;font-weight:700;color:#1B64DA;text-decoration:none}
:is(.ax,.tmodal) .tmopen[hidden]{display:none}   /* hidden 속성이 display 에 지지 않게 */
:is(.ax,.tmodal) .tmopen:hover{text-decoration:underline}

/* 기획유형 배지 (신규기획·베리에이션) — 2026-08-09 신설. 색은 production.js ptypeStyle 인라인.
   .kc-mf/.plc-mf 를 같이 달아 폰트·말줄임을 물려받으므로, margin-left:auto 를 여기서 되돌린다. */
.ax .kc-pt{margin-left:6px;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:700;flex:none;}
.ax .plc-pt{margin-left:5px;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:800;flex:none;}

/* 기획 내용 보기 — 링크가 없어 카드 상세(모달)로 보내는 경우. 외부로 나가는 '바로가기'와
   구분되게 중립색. 카드 클릭 = 상세 열기라 stopPropagation 을 걸지 않는다. */
.ax .kc-btn.plan.ghost{background:#fff;border-color:var(--line-2);color:var(--sub);}
.ax .kc-btn.plan.ghost:hover{background:var(--sb);color:var(--ink);}
.ax .plc-sbtn.plan.ghost{background:#fff;border-color:var(--card-bd);color:var(--sub);}
.ax .plc-sbtn.plan.ghost:hover{border-color:var(--accent-bd);color:var(--accent);background:var(--accent-bg);}

/* ── 가이드북 (guidebook.html) — 2026-08-10 신설 ──────────────────────────────
   `gb-` 접두 고정. 복제 CSS에서 .btn·.card 같은 전역 클래스를 다시 쓰다 칩 크기가
   깨진 적이 있어(협력사 포털), 이 페이지 전용 이름만 쓴다. */
.ax .gb-draft{margin-left:8px;padding:3px 9px;border-radius:var(--r-badge);background:var(--warn-bg);color:var(--warn-tx);font-size:11px;font-weight:700;vertical-align:middle;}
.ax .gb{display:grid;grid-template-columns:236px minmax(0,1fr);gap:28px;align-items:start;}
.ax .gb-nav{position:sticky;top:20px;}
.ax .gb-search{width:100%;height:36px;padding:0 12px;border:1px solid var(--line-2);border-radius:8px;background:#fff;font-family:var(--font);font-size:13px;color:var(--ink);margin-bottom:16px;}
.ax .gb-search:focus{outline:none;border-color:var(--accent-bd);background:var(--accent-bg);}
.ax .gb-ng{margin-bottom:18px;}
.ax .gb-ngt{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--mut);margin-bottom:6px;padding-left:10px;}
.ax .gb-ni{display:block;padding:7px 10px;border-radius:7px;font-size:13px;font-weight:500;color:var(--sub);text-decoration:none;line-height:1.45;}
.ax .gb-ni:hover{background:var(--sb);color:var(--ink);}
.ax .gb-ni.on{background:var(--accent-bg);color:var(--accent);font-weight:700;}
.ax .gb-none{font-size:13.5px;color:var(--sub);padding:20px 0;}

/* 목록(인덱스) */
.ax .gb-lead h2{font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--ink);margin-bottom:6px;}
.ax .gb-lead p{font-size:13.5px;color:var(--sub);line-height:1.65;margin-bottom:26px;}
.ax .gb-sec{margin-bottom:28px;}
.ax .gb-sect{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:700;color:var(--ink);margin-bottom:10px;}
.ax .gb-sect span{font-size:11px;font-weight:700;color:var(--mut);background:var(--sb);border-radius:var(--r-full);padding:1px 7px;}
.ax .gb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:12px;}
.ax .gb-card{display:block;padding:16px 18px;border:1px solid var(--card-bd);border-radius:12px;background:#fff;text-decoration:none;transition:border-color .12s,background .12s;}
.ax .gb-card:hover{border-color:var(--accent-bd);background:var(--accent-bg);}
.ax .gb-card b{display:block;font-size:14px;font-weight:700;color:var(--ink);margin-bottom:5px;letter-spacing:-.01em;}
.ax .gb-card span{display:block;font-size:12.5px;color:var(--sub);line-height:1.6;}
.ax .gb-card small{display:block;font-size:11.5px;color:var(--mut);margin-top:8px;}

/* 본문 머리 */
.ax .gb-back{display:inline-block;font-size:13px;font-weight:700;color:var(--sub);text-decoration:none;margin-bottom:16px;}
.ax .gb-back:hover{color:var(--accent);}
.ax .gb-doc-hd{padding-bottom:20px;border-bottom:1px solid var(--line-2);margin-bottom:26px;}
.ax .gb-cat{display:inline-block;font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.04em;margin-bottom:7px;}
.ax .gb-doc-hd h2{font-size:24px;font-weight:700;letter-spacing:-.03em;color:var(--ink);margin-bottom:8px;}
.ax .gb-doc-hd p{font-size:14px;color:var(--sub);line-height:1.65;}
.ax .gb-meta{font-size:12px;color:var(--mut);margin-top:12px;}
.ax .gb-dot{margin:0 7px;color:var(--faint);}
.ax .gb-links{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px;}
.ax .gb-link{font-size:12.5px;font-weight:700;color:var(--accent);text-decoration:none;border:1px solid var(--accent-bd);background:var(--accent-bg);border-radius:7px;padding:4px 10px;}
.ax .gb-link:hover{background:var(--blue-soft);}

/* 본문 — 읽는 문서라 본문 폭을 제한한다(한 줄이 길면 눈이 줄을 잃는다) */
.ax .gb-doc{max-width:760px;font-size:14.5px;line-height:1.75;color:var(--ink);}
.ax .gb-h2{font-size:18px;font-weight:700;letter-spacing:-.02em;margin:34px 0 12px;padding-top:4px;}
.ax .gb-h3{font-size:15px;font-weight:700;margin:26px 0 10px;}
.ax .gb-h4{font-size:14px;font-weight:600;color:var(--sub);margin:20px 0 8px;}
.ax .gb-p{margin:0 0 14px;}
.ax .gb-doc strong{font-weight:700;}
.ax .gb-doc code{background:var(--sb);color:var(--spc-tx);font-size:.9em;font-weight:600;padding:1.5px 6px;border-radius:4px;font-family:ui-monospace,Menlo,monospace;word-break:break-all;}
.ax .gb-doc a{color:var(--accent);font-weight:600;}
.ax .gb-list{margin:0 0 14px;padding-left:20px;}
.ax .gb-list li{margin-bottom:6px;}
.ax .gb-hr{border:0;border-top:1px solid var(--line-2);margin:30px 0;}
.ax .gb-q{margin:0 0 14px;padding:2px 0 2px 14px;border-left:3px solid var(--line-2);color:var(--sub);}
.ax .gb-q .gb-p:last-child{margin-bottom:0;}
.ax .gb-pre{background:#161B26;border-radius:10px;padding:15px 17px;margin:0 0 16px;overflow-x:auto;}
.ax .gb-pre code{background:none;color:#D5DBE5;font-size:12.5px;font-weight:400;line-height:1.7;padding:0;white-space:pre;word-break:normal;}
/* 표는 넓으면 자기 안에서 가로 스크롤 — 페이지 본문이 밀리지 않게 */
.ax .gb-tw{overflow-x:auto;margin:0 0 16px;}
.ax .gb-tb{width:100%;border-collapse:collapse;font-size:13.5px;}
.ax .gb-tb th{text-align:left;font-weight:600;color:var(--ink);background:var(--sb);padding:9px 13px;border-bottom:1px solid var(--line-2);white-space:nowrap;}
.ax .gb-tb td{padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.6;}
.ax .gb-tb tr:last-child td{border-bottom:0;}

/* 콜아웃 */
.ax /* 가이드북 본문 이미지 — 장면 캡처 */
.gb-img{margin:14px 0 4px;}
.gb-img img{width:100%;max-width:640px;display:block;border:1px solid var(--line);border-radius:10px;}
.gb-img figcaption{font-size:11.5px;color:#6B7280;margin-top:6px;}
.gb-co{display:flex;gap:11px;padding:14px 16px;border-radius:10px;margin:0 0 16px;border:1px solid;}
.ax .gb-co-ic{flex:none;font-size:14px;line-height:1.6;}
.ax .gb-co-bd{min-width:0;}
.ax .gb-co-bd b{display:block;font-weight:700;margin-bottom:4px;}
.ax .gb-co-bd .gb-p{margin-bottom:0;font-size:13.5px;}
.ax .gb-co.tip{background:var(--accent-bg);border-color:var(--accent-bd);}
.ax .gb-co.warn{background:var(--warn-bg);border-color:#F5DFAE;}
.ax .gb-co.danger{background:var(--crit-bg);border-color:#F8CBD5;}
.ax .gb-co.note{background:var(--sb);border-color:var(--line-2);}

@media(max-width:900px){
  .ax .gb{grid-template-columns:1fr;gap:18px;}
  .ax .gb-nav{position:static;}
}

/* 가이드북 단락 구분 — h2 를 경계로 <section class="gb-s"> 카드로 끊는다 (2026-08-10 확정).
   번호 배지는 뺐다(대표님 지적). 번호는 제목 안의 글자 그대로 두고, 구분은 카드가 한다. */
.ax .gb-doc .gb-s{border:1px solid var(--card-bd);border-radius:14px;padding:24px 26px 10px;
  margin:0 0 14px;background:#fff;box-shadow:var(--shadow);}
.ax .gb-doc .gb-s.lead{border:0;padding:0;margin-bottom:24px;box-shadow:none;}
.ax .gb-doc .gb-s .gb-h2{margin:0 0 14px;padding-top:0;}
.ax .gb-doc .gb-n{font-weight:700;}
.ax .gb-doc .gb-n::after{content:'.';margin-right:.35em;}
/* 카드 안이라 코드블록을 밝게 — 어두운 블록이 카드마다 반복되면 화면이 무거워진다 */
.ax .gb-doc .gb-pre{background:#F5F7FA;border:1px solid var(--line);}
.ax .gb-doc .gb-pre code{color:#3D4551;}

/* 문서 안 목차 (좌측) — 지금 보고 있는 섹션만 진해진다 */
.ax #gbtoc:not(:empty){margin-bottom:20px;padding-bottom:4px;}
.ax .gb-ti{display:flex;align-items:baseline;gap:7px;padding:6px 8px;border-radius:7px;text-decoration:none;line-height:1.45;}
.ax .gb-tn{flex:none;font-size:11.5px;font-weight:700;color:var(--faint);font-variant-numeric:tabular-nums;}
.ax .gb-tt{font-size:12.5px;font-weight:500;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ax .gb-ti:hover{background:var(--sb);}
.ax .gb-ti:hover .gb-tt{color:var(--ink);}
.ax .gb-ti.on .gb-tn{color:var(--accent);}
.ax .gb-ti.on .gb-tt{color:var(--ink);font-weight:700;}
.ax .gb-tsep{height:1px;background:var(--line-2);margin:14px 8px 0;}

/* 바로가기 버튼 줄 (::: links) — 드라이브 폴더·시트·채널로 바로 간다.
   가이드를 읽다 말고 주소를 찾아 헤매지 않게, 그 단계 옆에 문을 둔다. */
.ax .gb-doc .gb-btns{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px;}
.ax .gb-btn{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:9px;
  border:1px solid var(--card-bd);background:#fff;color:var(--ink);font-size:13px;font-weight:600;
  text-decoration:none;transition:border-color .12s,background .12s,color .12s;}
.ax .gb-btn:hover{border-color:var(--accent-bd);background:var(--accent-bg);color:var(--accent);}
.ax .gb-btn span{color:var(--faint);font-weight:700;}
.ax .gb-btn:hover span{color:var(--accent);}

/* 제목 앞 [브랜드] 칩 : 담당 브랜드를 눈으로 먼저 고르게 한다 */
.ax .gb-tag{display:inline-block;margin-right:6px;padding:1px 7px;border-radius:6px;background:var(--sb);
  color:var(--sub);font-size:11.5px;font-weight:700;vertical-align:middle;}
.ax .gb-tag.sm{font-size:10.5px;padding:1px 6px;margin-right:5px;}
.ax .gb-tag.lg{font-size:13px;padding:3px 9px;margin-right:8px;background:var(--accent-bg);color:var(--accent);}
.ax .gb-card:hover .gb-tag{background:#fff;}
/* 카드 안 칩이 통으로 퍼지던 것 : .gb-card span{display:block} 을 되돌린다 */
.ax .gb-card b .gb-tag,.ax .gb-doc-hd h2 .gb-tag,.ax .gb-ni .gb-tag{display:inline-block;width:auto;}

/* 필터 : 역할·브랜드 두 줄. 업무는 아래 섹션 제목이 대신한다 */
.ax .gb-body{min-width:0;}
.ax .gb-filter:not(:empty){margin-bottom:24px;padding:14px 16px;background:var(--sb);
  border:1px solid var(--line);border-radius:12px;}
.ax .gb-fhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.ax .gb-fcount{font-size:12px;font-weight:700;color:var(--mut);}
.ax .gb-freset{appearance:none;border:0;background:none;font-family:inherit;font-size:12.5px;
  font-weight:700;color:var(--accent);cursor:pointer;padding:0;}
.ax .gb-freset:hover{text-decoration:underline;}
.ax .gb-frow{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px;}
.ax .gb-frow:last-child{margin-bottom:0;}
.ax .gb-flab{width:38px;flex:none;font-size:12px;font-weight:700;color:var(--sub);line-height:28px;}
.ax .gb-fchips{display:flex;flex-wrap:wrap;gap:6px;min-width:0;}
.ax .gb-chip{appearance:none;border:1px solid var(--line-2);background:#fff;border-radius:var(--r-full);
  height:28px;padding:0 12px;font-family:inherit;font-size:12.5px;font-weight:600;color:var(--sub);
  cursor:pointer;transition:border-color .12s,background .12s,color .12s;}
.ax .gb-chip:hover{border-color:var(--accent-bd);color:var(--accent);}
.ax .gb-chip.on{background:var(--navy);border-color:var(--navy);color:#fff;}
.ax .gb-chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px;}

/* 브랜드 뱃지 색 : 어드민 브랜드 색을 옅게 깐다 */
/* 정본 --brand-* 파생 (2026-08-20 통일 ④ — 배경 = 10% 틴트 · 글자 = 72% 다크. 브랜드별 별색 하드코딩 폐기) */
.ax .gb-tag.b-yao{background:color-mix(in srgb,var(--brand-yao) 10%,#fff);color:color-mix(in srgb,var(--brand-yao) 72%,#000);}
.ax .gb-tag.b-dona{background:color-mix(in srgb,var(--brand-dona) 10%,#fff);color:color-mix(in srgb,var(--brand-dona) 72%,#000);}
.ax .gb-tag.b-r2w{background:color-mix(in srgb,var(--brand-r2w) 10%,#fff);color:color-mix(in srgb,var(--brand-r2w) 72%,#000);}
.ax .gb-tag.b-calmal{background:color-mix(in srgb,var(--brand-calmal) 10%,#fff);color:color-mix(in srgb,var(--brand-calmal) 72%,#000);}
.ax .gb-tag.b-mother{background:color-mix(in srgb,var(--brand-mother) 10%,#fff);color:color-mix(in srgb,var(--brand-mother) 72%,#000);}
.ax .gb-card:hover .gb-tag.b-yao,.ax .gb-card:hover .gb-tag.b-dona,.ax .gb-card:hover .gb-tag.b-r2w,
.ax .gb-card:hover .gb-tag.b-calmal,.ax .gb-card:hover .gb-tag.b-mother{filter:brightness(.97);}
.ax .gb-tag.lg.b-yao,.ax .gb-tag.lg.b-dona,.ax .gb-tag.lg.b-r2w,
.ax .gb-tag.lg.b-calmal,.ax .gb-tag.lg.b-mother{font-size:13px;padding:3px 9px;}
.ax .gb-tag.b-common{background:#EEF0F4;color:#6B7583;}

/* 가이드 공유 : 링크 복사 · 슬랙 보내기 */
.ax .gb-share{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:16px;}
/* 안쪽 버튼(복사·발송)과 바깥 링크(노션 원본)를 한 줄에 같은 크기로 세운다 */
.ax .gb-sbtn{display:inline-flex;align-items:center;gap:6px;appearance:none;
  border:1px solid var(--line-2);background:#fff;border-radius:8px;
  height:34px;padding:0 14px;font-family:inherit;font-size:13px;font-weight:700;color:var(--sub);
  text-decoration:none;cursor:pointer;transition:border-color .12s,background .12s,color .12s;}
.ax .gb-ext{color:var(--faint);font-weight:700;}
.ax .gb-sbtn:hover .gb-ext{color:var(--accent);}
.ax .gb-sbtn:hover{border-color:var(--accent-bd);background:var(--accent-bg);color:var(--accent);}
.ax .gb-sbtn:focus-visible{outline:2px solid var(--blue);outline-offset:2px;}
.ax .gb-smsg{font-size:12.5px;font-weight:600;}
.ax .gb-smsg.ok{color:var(--ok-tx);}
.ax .gb-smsg.bad{color:var(--crit-tx);}
