/* ═══════════════════════════════════════════════════════════════════════
   linear_theme.css — 「Linear 문법」 시안 테마 (2026-10-02 · 미리보기 주소 전용)

   ★ 무엇: 실제 Linear 앱 실측값(_ClaudeWorkspace/talent/디자이너/inbox/ref_linear_261001/Linear_앱실측.md)
     과 사용자가 고른 섞은 판(sian_dash_mix_noci.html)의 문법을 **전 화면 공통 토큰 위에 덮는다.**
     강조색 = Linear 남보라 #5e6ad2 (사용자 10-02 "남보라로 가자, 사내 도구라 괜찮아").
   ★ 어떻게: deploy_portal.py --linear-theme 로 빌드하면 모든 HTML 의 </head> 앞에 이 파일이 실린다.
     토큰(색·서체·반경)만 바꾸고, 부품 모양은 아래 「부품」 절에서 최소한으로 손댄다.
   ⛔ 테스트·메인 서버에는 싣지 않는다(미리보기 `--preview linear` 전용). 사내 규칙(R3·R9·R11·R12·
     CI 색·굵기 2단)은 사용자 지시로 이 시안에서만 적용하지 않는다.
   ⚠ 선택자를 :root:root:root 로 두 번 겹친 것은 일부러다 — 앱별 덮기(:root[data-app="sop"][data-theme=…],
     (0,3,0))보다 우선해야 한다.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 서체: Inter(라틴·숫자) + Pretendard Variable(한글, 450·500 같은 중간 굵기까지) ── */
@font-face{font-family:"Inter Variable";font-style:normal;font-display:swap;font-weight:100 900;
  src:url("/portal/assets/lin/inter-latin-wght.woff2") format("woff2-variations");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Pretendard Variable";font-style:normal;font-display:swap;font-weight:45 920;
  src:url("/portal/assets/lin/PretendardVariable.woff2") format("woff2-variations")}
:root:root:root{
  --sans:"Inter Variable","Pretendard Variable","Pretendard",-apple-system,"Segoe UI",sans-serif;
  --ci-blue:#5e6ad2;
  --focus-color:#5e6ad2;
  --r1:6px; --r2:8px; --r3:10px; --r-1:6px; --r-2:8px;
}
html,body{font-family:var(--sans) !important;font-feature-settings:"cv01","ss03"}
body *:not(code):not(pre):not(kbd):not(.mono):not([class*="mono"]):not(.material-symbols-outlined):not([class*="icon"]){font-family:inherit}
.tnum,td,th,.kpi,.k-num,[class*="num"],[class*="val"],[class*="amt"]{font-feature-settings:"cv01","ss03","tnum"}

/* ── 다크 (Linear 실측) ─────────────────────────────────────────── */
:root:root:root[data-theme="dark"], :root:root:root:not([data-theme]){
  --shell:#09090a; --shell-2:#1c1c1d; --shell-line:#1a1b1d; --rail-tree:#232426;
  --shell-txt:#919294; --shell-txt-hi:#ffffff; --shell-txt-lo:#8a8f98;
  --shell-active:#232325; --shell-active-ink:#ffffff;
  --rail:#09090a; --rail-2:#1c1c1d; --rail-line:#1a1b1d; --rail-txt:#919294; --rail-txt-hi:#ffffff; --rail-dim:#8a8f98;
  --canvas:#121213; --plate:#121213; --panel:#1a1a1b; --v2-canvas:#121213; --card-bg:#1a1a1b; --tbl-bg:#1a1a1b;
  --line:#232426; --line-2:#1d1e20; --line-ctl:#3a3b3f; --grid-line:#232426; --grid-strong:#28282b; --tbl-div:#1d1e20;
  --grid-head-bg:#161617; --grid-head-ink:#e3e4e6; --dash-head-bg:#161617; --shade0:#161617; --shade1:#1c1c1d;
  --ink:#ffffff; --ink-2:#e3e4e6; --ink-3:#959597; --ink-4:#8a8f98; --muted:#959597;
  /* 10-06 QA Q24: 작은 회색 글씨(--ink-4 · 11~13px)가 판(#1a1a1b) 위 3.45:1 → 4.5:1 넘게 #6b6f76 → #8a8f98 */
  --dash-strong:#ffffff; --dash-label:#959597; --dash-mid:#e3e4e6; --dash-up:#41ba56; --dash-dn:#ff6364;
  --accent:#5e6ad2; --accent-hi:#6d78d5; --accent-soft:#1e2036; --accent-strong:#8b93e6; --accent-strong-hi:#a3aaee;
  --viol-blue:#5e6ad2; --viol-navy:#8b93e6; --v2-focus:#5e6ad2; --sat-blue:#8b93e6;
  --on-accent:#ffffff; --ink-on-accent:#ffffff; --ink-on-flag:#ffffff;
  --flag:#ff6364; --flag-soft:#2a1718; --warn:#ff6364;
  --hover:#1c1c1d; --hover-2:#202022; --row-hover:#18181a; --soft:#1f1f21;
  --chrome-dim:#919294; --chrome-dim-2:#565759;
  --done-bg:#15241a; --done-bg2:#1a2c20; --done-ink:#41ba56;
  --ro-bg:#262014; --ro-line:#3d331d; --ro-ink:#e5a50a;
  --shadow:0,0,0;
  --lin-card-sh:0 0 0 1px rgba(255,255,255,.05),0 .5px 1px 1px rgba(0,0,0,.30);
  --lin-panel-sh:0 .5px 1px 1px rgba(0,0,0,.30);
  color-scheme:dark;
}
/* ── 라이트 (Linear 실측) ───────────────────────────────────────── */
:root:root:root[data-theme="light"]{
  --shell:#efeff0; --shell-2:#e5e5e6; --shell-line:#e2e2e2; --rail-tree:#dedede;
  --shell-txt:#59595b; --shell-txt-hi:#1b1b1b; --shell-txt-lo:#8a8b8d;
  --shell-active:#e1e1e2; --shell-active-ink:#1a1a1a;
  --rail:#efeff0; --rail-2:#e5e5e6; --rail-line:#e2e2e2; --rail-txt:#59595b; --rail-txt-hi:#1b1b1b; --rail-dim:#8a8b8d;
  --canvas:#f9f9fa; --plate:#f9f9fa; --panel:#ffffff; --v2-canvas:#f9f9fa; --card-bg:#ffffff; --tbl-bg:#ffffff;
  --line:#e6e6e8; --line-2:#f1f1f1; --line-ctl:#d3d3d6; --grid-line:#ececee; --grid-strong:#dedede; --tbl-div:#f1f1f1;
  --grid-head-bg:#f6f6f7; --grid-head-ink:#2f2f31; --dash-head-bg:#f6f6f7; --shade0:#f6f6f7; --shade1:#efeff0;
  --ink:#1b1b1b; --ink-2:#2f2f31; --ink-3:#5c5c5e; --ink-4:#8a8b8d; --muted:#5c5c5e;
  --dash-strong:#1b1b1b; --dash-label:#5c5c5e; --dash-mid:#2f2f31; --dash-up:#26a644; --dash-dn:#da3540;
  --accent:#5e6ad2; --accent-hi:#4f5bc4; --accent-soft:#eef0fb; --accent-strong:#4c57bf; --accent-strong-hi:#3f4aa8;
  --viol-blue:#5e6ad2; --viol-navy:#4c57bf; --v2-focus:#5e6ad2; --sat-blue:#4c57bf;
  --on-accent:#ffffff; --ink-on-accent:#ffffff; --ink-on-flag:#ffffff;
  --flag:#da3540; --flag-soft:#fdeeee; --warn:#da3540;
  --hover:#f3f3f4; --hover-2:#efeff0; --row-hover:#f6f6f7; --soft:#efeff0;
  --chrome-dim:#6b6b6e; --chrome-dim-2:#59595b;
  --done-bg:#eaf6ec; --done-bg2:#dff0e3; --done-ink:#1f8a3a;
  --ro-bg:#fbf3e2; --ro-line:#ead9b2; --ro-ink:#8a6212;
  --shadow:0,0,0;
  --lin-card-sh:0 0 0 1px rgba(0,0,0,.05),0 3px 6px -2px rgba(0,0,0,.03),0 1px 1px rgba(0,0,0,.04);
  --lin-panel-sh:0 3px 6px -2px rgba(0,0,0,.02),0 1px 1px rgba(0,0,0,.04);
  color-scheme:light;
}
/* 앱별 셸 색(관리자 흰 셸 · MES 검정 셸)도 같은 Linear 셸로 묶는다 */
:root:root:root[data-app][data-theme="dark"]{--shell:#09090a;--shell-2:#1c1c1d;--shell-line:#1a1b1d;--rail:#09090a;--rail-tree:#232426;--shell-active:#232325;--shell-active-ink:#fff;--shell-txt:#919294;--shell-txt-hi:#fff;--rail-txt:#919294;--rail-txt-hi:#fff;--plate:#121213;--canvas:#121213}
:root:root:root[data-app][data-theme="light"]{--shell:#efeff0;--shell-2:#e5e5e6;--shell-line:#e2e2e2;--rail:#efeff0;--rail-tree:#dedede;--shell-active:#e1e1e2;--shell-active-ink:#1a1a1a;--shell-txt:#59595b;--shell-txt-hi:#1b1b1b;--rail-txt:#59595b;--rail-txt-hi:#1b1b1b;--plate:#f9f9fa;--canvas:#f9f9fa}

/* ── 부품: 굵기 · 카드 그림자 · 활성 칩 ───────────────────────────── */
/* Linear 은 700 을 쓰지 않는다(400·450·500·600). 700·800 을 600 으로 당긴다 */
b,strong,th,h1,h2,h3,h4,[style*="font-weight:700"],[style*="font-weight: 700"]{font-weight:600}
.k-num,.kpi .k-val,.kpi .v b,[class*="metric"]{font-weight:600 !important;letter-spacing:-.02em}
/* 판·카드 = Linear 설정 카드(모서리 10 · 고리 그림자) */
.panel,.card,.kpi,.sum-p,.krds-card,.p-card,.board-card{box-shadow:var(--lin-card-sh)}
/* 알약 탭 켜짐 = Linear 보기 탭(채움 · 남보라 대신 무채) — 강조는 남보라 밑줄 없이 면으로 */
.vtab.on,.qtab.on,.krds-seg>button.on,.krds-seg>button[aria-pressed="true"]{box-shadow:none}
/* 포커스 고리 = Linear 남보라 */
:focus-visible{outline-color:#5e6ad2 !important}

/* ══ 2단계: 짜임(시안 sian_dash_mix_noci 와 맞춤) ══════════════════════════════ */
:root:root:root[data-theme="dark"],:root:root:root:not([data-theme]){--lin-tab-on:#29292b;--lin-tab-off:#1c1c1d;--lin-band:#1b1c1d;--lin-track:#232426}
:root:root:root[data-theme="light"]{--lin-tab-on:#ececed;--lin-tab-off:#ffffff;--lin-band:#efeff0;--lin-track:#ececee}
/* 셸: 사이드바 바탕 위에 본문 판을 띄워 얹는다(8 띄움 · 모서리 12 · 옅은 테두리) */
.shell{background:var(--rail) !important}
.mstrip,.rail{background:var(--rail) !important;border:0 !important;box-shadow:none !important}
.shell > .main{margin:8px 8px 8px 0;height:calc(100% - 16px) !important;min-height:0;border:1px solid var(--line-2);border-radius:12px;
  background:var(--canvas) !important;box-shadow:var(--lin-panel-sh);overflow:hidden}
.topbar{border-bottom:1px solid var(--line-2) !important;background:transparent !important}
/* 높이 44 고정은 넓은 화면만 — 폰은 열린 탭 줄이 둘째 줄로 내려가는 짜임(app.css 폰 블록 height:auto)이라
   44 로 묶으면 탭 줄이 본문 첫 줄 위에 겹쳤다(10-04 폰 실측) */
@media (min-width:1025px){ .topbar{height:44px !important;min-height:44px} }
/* 위쪽 열린 화면 탭 = Linear 보기 탭(알약 28 · 켜짐은 무채 면) */
.vtabs .vtab{border-radius:9999px !important;border:0 !important;box-shadow:inset 0 0 0 1px var(--line-2) !important;
  background:var(--lin-tab-off) !important;color:var(--ink-3) !important;font-size:12px !important;font-weight:500 !important}
.vtabs .vtab.on{background:var(--lin-tab-on) !important;color:var(--ink) !important;box-shadow:none !important}
.vtabs .vtab-grp{background:transparent !important;box-shadow:none !important;color:var(--ink-2) !important;font-size:13px !important}
/* 메뉴: 행 30 · 모서리 8 · 13/500 · 묶음 이름 12/500 */
.rail .nav{border-radius:8px !important;font-size:13px !important;font-weight:500 !important}
.rail-pill{border-radius:8px !important;background:var(--shell-active) !important}
.rail-grp h3{font-size:12px !important;font-weight:500 !important;color:var(--rail-txt) !important;letter-spacing:0 !important}
.mstrip-b{border-radius:8px !important}
/* 요약 카드 4장 → 한 판(칸은 가는 선으로) */
.kpis{gap:0 !important;background:var(--panel);border-radius:10px;box-shadow:var(--lin-card-sh);overflow:hidden}
.kpis > .kpi{border:0 !important;border-radius:0 !important;box-shadow:none !important;background:transparent !important}
.kpis > .kpi + .kpi{border-left:1px solid var(--line) !important}
.kpi::before{display:none !important}
.k-label{font-size:13px !important;font-weight:500 !important;color:var(--ink-2) !important}
.k-num{font-size:24px !important;font-weight:600 !important;letter-spacing:-.16px}
.k-unit{font-size:12px !important;font-weight:450 !important;color:var(--ink-3) !important}
.k-sub .tag{font-size:12px !important;font-weight:450 !important}
.k-pt{font-size:12px !important;font-weight:450 !important}
.k-pt b{font-weight:500 !important;color:var(--ink-2) !important}
.k-bar{height:4px !important;border-radius:9999px !important;background:var(--lin-track) !important}
.k-bar > *{border-radius:9999px !important}
.lin-pie{display:inline-flex;align-items:center;gap:6px;margin-left:auto;font-size:12px;font-weight:450;white-space:nowrap}
.k-head{display:flex;align-items:center}
.k-head .k-dot.lin-hide{display:none !important}
/* 카드 = Linear 설정 카드(모서리 10 · 고리 그림자 · 테두리 없음) */
.card,.panel:not(.sum-p){border:0 !important;border-radius:10px !important;box-shadow:var(--lin-card-sh) !important}
/* 판(sum-p): 안에 카드·요약판을 품은 바깥 껍데기(Dashboard)만 투명, 나머지(국내영업 등)는 판 자체가 카드다 */
.panel.sum-p:has(.card),.panel.sum-p:has(.kpis){background:transparent !important;box-shadow:none !important;border:0 !important}
.panel.sum-p:not(:has(.card)):not(:has(.kpis)){background:var(--panel) !important;border:0 !important;border-radius:10px !important;box-shadow:var(--lin-card-sh) !important;margin-bottom:16px}
.p-head h2{font-size:13px !important;font-weight:500 !important;color:var(--ink) !important;letter-spacing:0 !important}
.p-head .p-sub,.p-head p,.p-head small{font-size:12px !important;font-weight:450 !important;color:var(--ink-3) !important}
/* 표: 머리 옅은 면 · 숫자 굵기 450 · 합계 줄만 500 */
table.gt,.gt{border-color:var(--line) !important;border-radius:10px !important}
.gt th{background:var(--lin-band) !important;color:var(--ink-3) !important;font-weight:500 !important;font-size:12px !important}
.gt td{font-weight:450 !important}
.gt tr[class*="tot"] td,.gt tr[class*="l1"] td{font-weight:500 !important}
.card > h3,.panel > .p-head h3,.panel h2{font-size:13px !important;font-weight:500 !important;color:var(--ink) !important}
.csub{font-size:12px !important;font-weight:450 !important;color:var(--ink-3) !important}

/* 크기 줄이기는 넓은 화면만 — 폰은 손가락 영역(표 밖 44px) 기준을 지킨다 */
@media (min-width:761px){
  .vtabs .vtab{height:28px !important}
  .rail .nav{height:30px !important;min-height:30px}
  .rail-pill{height:30px !important}
}

/* ══ 셸 3단계: 사이드바 하나(모니터 폭) ══════════════════════════════════ */
@media (min-width:1025px){
  html.lin-shell .shell{grid-template-columns:244px minmax(0,1fr) !important}
  html.lin-shell #mstrip{display:none !important}
  html.lin-shell #rail{grid-column:1;width:244px !important;padding:8px 10px !important}
  html.lin-shell #rail > .railbrand{display:none !important}
  html.lin-shell .shell > .main{grid-column:2}
}

/* 사이드바 부품(.lin-*) — 폭과 무관(10-04 폰 서랍에서도 같은 모양을 쓰려고 넓은 화면 블록 밖으로 뺐다).
   단 .rail-pill 숨김은 lin-shell 이 붙은 문서에서만 의미가 있다. */
.lin-side{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}
/* 10-06 가운데(.lin-mid)만 구른다 — 로고·바닥 메뉴는 고정. 스크롤 막대는 마우스를 올렸을 때만 가늘게 */
.lin-mid{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;margin:0 -4px;padding:0 4px}
.lin-mid > *{flex:none}
.lin-mid:hover{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--ink) 18%, transparent) transparent}
.lin-mid::-webkit-scrollbar{width:0}
.lin-mid:hover::-webkit-scrollbar{width:6px}
.lin-mid:hover::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--ink) 18%, transparent);border-radius:3px}
.lin-foot{flex:none}
.lin-ws{display:flex;align-items:center;gap:8px;height:36px;padding:0 6px;margin-bottom:6px}
.lin-sp{flex:1}
.lin-ib{width:28px;height:28px;border-radius:9999px;display:grid;place-items:center;color:var(--rail-txt);background:transparent;border:0;cursor:pointer}
.lin-ib:hover{background:var(--shell-2)}
.lin-ib svg{width:16px;height:16px}
.lin-app svg,.lin-ib svg{fill:none !important;stroke:currentColor !important;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.lin-ib svg rect{rx:3px}
.lin-slabel{height:28px;display:flex;align-items:center;padding:0 8px;margin-top:6px;font-size:12px;font-weight:500;color:var(--rail-txt)}
.lin-app{display:flex;align-items:center;gap:8px;height:30px;padding:0 8px;border-radius:8px;color:var(--rail-txt);font-size:13px;font-weight:500;text-decoration:none;white-space:nowrap}
.lin-app svg{width:16px;height:16px;flex:none}
.lin-app:hover{background:var(--shell-2)}
.lin-app.on{color:var(--rail-txt-hi)}
.lin-sub{flex:none;overflow:visible;margin:2px 0 6px}
.lin-sub .rail-scroll{position:static !important;height:auto !important;overflow:visible !important;padding:0 !important}
html.lin-shell .rail-pill{display:none !important}
.lin-foot{margin-top:auto;padding-top:8px;border-top:1px solid var(--rail-line)}
html.lin-hub .lin-app.on{background:var(--shell-2)}
@media (max-width:900px){ .lin-app{height:44px} .lin-ws{height:44px} .lin-sub .nav{min-height:44px} }

/* 메뉴 「접기」 상태(body.rail-collapsed) — 사이드바 대신 아이콘 줄만 보인다(접기 기능 유지 · 10-04 빈 사이드바 고침) */
@media (min-width:1025px){
  html.lin-shell body.rail-collapsed .shell{grid-template-columns:64px minmax(0,1fr) !important}
  html.lin-shell body.rail-collapsed #mstrip{display:flex !important}
  html.lin-shell body.rail-collapsed #rail{display:none !important}
  html.lin-shell .lin-app{min-height:30px}
}

/* 10-04 MES 주간 표(.wkd-wrap)는 원래 자기 안에서 가로로 구르는 감싸개인데, 머리 고정 규칙(app.css ⑤)이
   overflow:visible 로 풀어 둔다. 사이드바가 넓어진 이 판에서는 표가 판 폭을 넘어 작업면 전체가 가로로 밀렸다
   → 이 판에서만 감싸개 스크롤을 되살린다(머리 고정보다 화면이 밀리지 않는 쪽이 우선). */
html.lin-shell .shell .work.sum-scroll .wkd-p .wkd-wrap{overflow-x:auto !important}

/* ── 허브(포털 홈) = 앱과 같은 사이드바 (2026-10-04) ──
   펼침: 아이콘 띠 숨김 · 레일 244px 안에 .lin-side(linear_theme.js) · 원래 레일 내용은 숨김(DOM 유지).
   접힘: 앱과 같이 아이콘 띠(64px)만. 띠 위에 마우스를 올리면(.rail-peek) 사이드바가 띠를 덮고 펼쳐진다.
   ⚠ 허브 자체 규칙이 :root:root[data-shell="v2"] body.hubon …(특이도 0,4,1~) 이라 앞머리를 더 세게 둔다. */
@media (min-width:901px){
  :root:root:root.lin-hub[data-shell="v2"] body.hubon{--hs-shellw:244px}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon:not(.rail-collapsed) .hshell{width:244px}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon:not(.rail-collapsed) .hstrip{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon:not(.rail-collapsed) .hrail{width:244px !important;padding:8px 10px 10px !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail > .hbrand,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail > .hubcards,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail > .hrail-util{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed:not(.rail-peek) .hrail .lin-side{display:none}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed.rail-peek .hrail{left:0 !important;width:244px !important;padding:8px 10px 10px !important;
    border-right:0 !important;box-shadow:0 0 0 1px var(--line-2),0 8px 24px rgba(0,0,0,.18)}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail .lin-side{height:100%}
  /* 머리줄(.corner)은 body 바로 아래 z 7 이라 #hub(z 6) 안의 펼침 사이드바보다 위에 그려진다 →
     펼침 동안 사이드바가 덮는 왼쪽 폭(244 − 띠 64 = 180)만큼 머리줄을 잘라 겹침을 없앤다 */
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed.rail-peek .corner{clip-path:inset(0 0 0 180px)}
  /* 본문 판 = 앱 .main 과 같은 면(바탕 --canvas · 선 --line-2 · 모서리 12 — 허브 규칙 그대로) · 머리줄 아래 선 없음 */
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner{border-bottom:0 !important}
  /* 바로가기 = 앱 머리줄의 둥근 단추 모양 */
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .quick{display:flex;align-items:center;gap:6px}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .quick a{height:28px;display:inline-flex;align-items:center;padding:0 10px;border-radius:9999px;
    box-shadow:0 0 0 1px var(--line-2);color:var(--ink-2) !important;font-size:12px;font-weight:500}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .quick a.ico{width:28px;padding:0;justify-content:center}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .quick a.ico svg{width:15px;height:15px}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who{display:grid;grid-template-columns:auto auto auto;grid-template-rows:auto auto;
    column-gap:8px;align-items:center;margin-left:12px;padding:2px 8px 2px 12px;border-left:1px solid var(--line-2);border-radius:0;text-align:left}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .lin-av{grid-column:1;grid-row:1 / span 2;width:28px;height:28px;border-radius:9999px;
    display:grid;place-items:center;background:var(--lin-band);color:var(--ink);font-size:12px;font-weight:600}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-name{grid-column:2;grid-row:1;font-size:13px;font-weight:600;line-height:16px}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-team{grid-column:2;grid-row:2;font-size:11px;line-height:14px}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-team::before,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-team::after,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-name::before,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-name::after{content:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-caret{grid-column:3;grid-row:1 / span 2;width:14px;height:14px}
}

/* ── 앱 폰(≤760) 서랍 = 같은 사이드바 (2026-10-04) ──
   종전 서랍은 아이콘 띠(.mstrip) + 목록(.rail) 두 칸이었다 → 띠는 감추고 목록 칸 하나에 .lin-side 를 세운다.
   여닫기(☰ #railBtn · 바깥 그늘 · .rail.open)는 core.js 그대로다. */
@media (max-width:760px){
  :root:root[data-shell="v2"].lin-shell .mstrip{display:none !important}
  :root:root[data-shell="v2"].lin-shell .rail{left:0 !important;width:min(300px,calc(84vw * var(--zk, 1))) !important;padding:8px 10px !important;
    transform:translateX(-104%);background:var(--rail) !important}
  :root:root[data-shell="v2"].lin-shell .rail.open{transform:none}
  :root:root[data-shell="v2"].lin-shell #rail > .railbrand{display:none !important}
}

/* 허브 폰 위 줄·서랍 바깥 그늘은 넓은 화면에서 안 보인다 */
.lin-mtop,.lin-scrim{display:none}

/* ── 허브 폰(≤900) = 앱 폰 화면과 같은 짜임 (2026-10-04 사용자 "폰 첫 화면도 똑같이") ──
   위 줄(☰ · 홈 · 사용자 원) + 본문 전체 폭 + 메뉴는 왼쪽에서 밀려 나오는 서랍(.lin-side).
   ⚠ #hub 가 z 6 쌓임 맥락이라 서랍(안쪽)이 머리줄 .corner(body 바로 아래 z 7)를 넘지 못한다 →
     서랍이 열린 동안에는 .corner 를 감춘다. */
@media (max-width:900px){
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hub{display:block !important;padding:0 !important;background:var(--canvas) !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hshell{display:block !important;position:fixed !important;left:0;top:0;bottom:0;
    width:min(300px,calc(84vw * var(--zk, 1))) !important;transform:translateX(-104%);transition:transform .2s ease;z-index:60;
    background:var(--rail) !important;border:0 !important;box-shadow:0 0 0 1px var(--line-2),0 12px 32px rgba(0,0,0,.25)}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.lin-drawer .hshell{transform:none}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hstrip{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hrail{display:block !important;width:100% !important;height:100% !important;
    padding:calc(8px + env(safe-area-inset-top,0px)) 10px calc(10px + env(safe-area-inset-bottom,0px)) !important;background:transparent !important;overflow:hidden}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail > .hbrand,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail > .hubcards,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail > .hrail-util{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hrail .lin-side{height:100%}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.lin-drawer .lin-scrim{display:block;position:fixed;inset:0;z-index:55;background:rgba(0,0,0,.4)}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.lin-drawer .corner{visibility:hidden}
  /* 위 줄 */
  .lin-mtop{position:fixed;left:0;right:0;top:0;z-index:5;display:flex;align-items:center;gap:10px;
    height:calc(56px + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) 12px 0;background:var(--canvas);
    box-shadow:0 1px 0 var(--line-2)}
  .lin-mtop button{width:44px;height:44px;border-radius:10px;border:0;background:var(--panel);color:var(--ink-2);display:grid;place-items:center;
    box-shadow:0 0 0 1px var(--line-2);cursor:pointer}
  .lin-mtop button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
  .lin-mtop b{font-size:15px;font-weight:600;color:var(--ink)}
  /* 본문 = 전체 폭 · 위 줄 아래에서 시작 */
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hubwrap,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hubwrap,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.hubboard #hub .hubwrap{margin:0 !important;max-width:none !important;width:auto !important;
    height:calc(100dvh * var(--zk, 1)) !important;min-height:0 !important;box-sizing:border-box;overflow-y:auto;display:flex;flex-direction:column;
    padding:calc(68px + env(safe-area-inset-top,0px)) 12px calc(12px + env(safe-area-inset-bottom,0px)) !important;
    background:var(--canvas) !important;border:0 !important;border-radius:0 !important;box-shadow:none !important}
  /* 오른쪽 위 사용자 = 앱처럼 머리글자 원 하나(누르면 종전 내 정보 창) */
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who{position:fixed !important;right:12px !important;
    top:calc(6px + env(safe-area-inset-top,0px)) !important;height:44px !important;width:44px;padding:0 !important;margin:0 !important;
    display:grid !important;place-items:center;border:0;border-radius:9999px;background:transparent}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-team,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-name,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .who-caret{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .who .lin-av{width:32px;height:32px;border-radius:9999px;display:grid;place-items:center;
    background:var(--lin-band);color:var(--ink);font-size:13px;font-weight:600}
}

/* 넓은 표 감싸개(linear_theme.js xscroll 이 실제로 넘칠 때만 .lin-xscroll 을 단다) — 앱 공통.
   감싸개가 스크롤 상자가 되면 머리 고정 기준이 감싸개로 바뀌어 작업면 기준 top 값이 머리 칸을 아래로 밀어낸다 → 0 */
html.lin-shell .work .lin-xscroll{overflow-x:auto !important;max-width:100%}
html.lin-shell .work .lin-xscroll > table thead th{top:0 !important}
/* 긴 표 감싸개를 화면 높이로 — 앱 규칙(.work.sum-scroll .krds-table-wrap 등 max-height:none !important)이 덮어 안 먹었다(10-06 실측) → 앞머리를 올리고 !important */
html.lin-shell.lin-shell.lin-shell .work .lin-ov-open{overflow:visible !important}
html.lin-shell.lin-shell.lin-shell .work .lin-xscroll-tall{max-height:calc(calc(100dvh * var(--zk, 1)) - 150px) !important;overflow:auto !important}
/* 행 수만큼 다 펼쳐진 격자 표 → 몸통을 화면 높이로 묶어 머리가 남게(격자 자체 머리는 늘 몸통 위에 있다) */
html.lin-shell.lin-shell.lin-shell .work .tabulator.lin-grid-tall > .tabulator-tableholder{max-height:calc(calc(100dvh * var(--zk, 1)) - 230px) !important;overflow:auto !important}
html.lin-shell .work :is(.sum-host,.sum-row){min-width:0;max-width:100%}
/* 10-06 모바일 QA M11·M28: 폰(≤760)에서는 위 두 「화면 높이로 묶기」가 이중 스크롤이 됐다 — 판 안에서 한 번, 페이지에서 한 번
   (국내 유저리스트 300줄 · MES 주문/PI 미리보기 · 입금 매칭 확인 표 · 국내 데모 내역). 묶은 높이가 아래 탭 막대를 빼지 않아 마지막 줄·쪽 넘김이 탭 막대 밑에 깔렸다.
   → 폰에서는 세로로 묶지 않는다(표는 자기 길이만큼 서고 페이지 하나로 굴린다). 가로로 미는 것은 그대로 */
@media (max-width:760px){
  html.lin-shell.lin-shell.lin-shell .work .lin-xscroll-tall{max-height:none !important;overflow-y:hidden !important}
  html.lin-shell.lin-shell.lin-shell .work .tabulator.lin-grid-tall > .tabulator-tableholder{max-height:none !important}
}
/* 10-06 모바일 QA M17: 폰에서 넓은 표가 오른쪽 칸이 잘린 채 서 있어 옆으로 밀 수 있다는 단서가 없었다(아이폰은 스크롤 막대도 숨긴다)
   → 옆으로 구르는 표 감싸개의 오른쪽 끝 32px 을 흐리게 해 「더 있다」를 보인다. 끝까지 밀면 흐림이 사라지고,
     넘치지 않는 표는 스크롤 시간축이 비활성이라 처음부터 흐림이 없다(scroll-driven animation · 지원 안 되는 브라우저는 종전 그대로).
     해외영업 · 국내영업 · MES 표 감싸개만(Dashboard 는 다른 담당) */
@keyframes linXHint{0%,96%{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent)}
  100%{-webkit-mask-image:none;mask-image:none}}
@media (max-width:760px){
  html.lin-shell:is([data-app="sales"],[data-app="krsales"],[data-app="sop"]) .work :is(.mxs, .lin-xscroll, .lin-xscroll-tall, .krar-tblwrap){animation:linXHint linear both;animation-timeline:scroll(self inline)}
}

/* ══ 10-05 사이드바 다듬기(사용자 지적 6건) ══════════════════════════════════
   ① 머리 = 회사 CI. 날개·워드마크 모두 CI #5E6AD2 고정(양 테마 · 2026-08-11 확정 규칙 그대로).
      ⚠ 빌드의 색 치환이 CI 파랑을 남보라로 바꾸므로 값 바로 뒤의 ci-keep 표식 주석으로 그 값만 건너뛴다(deploy_portal.py). */
.mstrip-logo,.hstrip-logo,.lin-brand .lin-wing{color:#00A4EB/*ci-keep*/ !important}
.lin-brand{display:flex;align-items:center;gap:8px;height:36px;padding:0 6px;text-decoration:none;border-radius:8px;min-width:0}
.lin-brand:hover{background:var(--shell-2)}
.lin-brand .lin-wing{display:grid;place-items:center;flex:none}
.lin-brand .lin-wing svg{width:22.75px;height:20px;fill:currentColor;stroke:none}
/* 워드마크 = assets/logo_wordmark.svg 와 같은 그림을 이 파일 안에 담았다. 원본 파일은 보는 창(viewBox)이 94 에서 시작해
   V 왼쪽 획(87.7~)이 잘려 있었다(10-05 사용자 지적) → 86.5 부터 보이게 고쳐 담았다 */
.lin-brand .lin-wm{display:block;width:84px;height:16px;flex:none;background-color:#00A4EB/*ci-keep*/;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='86.5 0 354.5 67' fill='none' role='img' aria-label='VIOL Medical'%3E%3Cpath d='M108.47 50.64L93.79 19.26H87.67L105.39 56.19H111.56L129.21 19.26H123.16L108.47 50.64Z' fill='white'/%3E%3Cpath d='M138.15 19.26H132.77V56.19H138.15V19.26Z' fill='white'/%3E%3Cpath d='M181.68 23.82C180.95 22.37 179.94 21.23 178.67 20.46C177.43 19.7 175.87 19.18 174.03 18.92C172.25 18.66 170.08 18.53 167.59 18.53H159.3C156.8 18.53 154.64 18.66 152.86 18.92C151.02 19.19 149.45 19.71 148.22 20.46C146.95 21.24 145.94 22.37 145.21 23.82C144.5 25.23 144 27.06 143.72 29.26C143.44 31.42 143.3 34.11 143.3 37.27V38.19C143.3 42.02 143.53 45.18 143.98 47.59C144.45 50.08 145.3 52.03 146.5 53.39C147.71 54.76 149.4 55.71 151.53 56.21C153.57 56.69 156.18 56.94 159.31 56.94H167.6C170.72 56.94 173.34 56.7 175.38 56.21C177.51 55.71 179.2 54.76 180.41 53.39C181.61 52.03 182.45 50.08 182.92 47.59C183.37 45.18 183.6 42.02 183.6 38.19V37.27C183.6 34.11 183.46 31.41 183.18 29.26C182.9 27.06 182.4 25.23 181.69 23.82M167.59 51.66H159.3C157.37 51.66 155.73 51.58 154.42 51.43C153.19 51.29 152.18 50.99 151.43 50.53C150.71 50.1 150.17 49.45 149.78 48.55C149.37 47.59 149.08 46.27 148.92 44.63C148.76 42.93 148.68 40.76 148.68 38.18V37.26C148.68 34.59 148.76 32.36 148.92 30.62C149.08 28.95 149.36 27.63 149.78 26.68C150.16 25.81 150.7 25.18 151.41 24.79C152.16 24.37 153.17 24.09 154.41 23.97C155.73 23.84 157.37 23.78 159.3 23.78H167.59C169.51 23.78 171.16 23.84 172.48 23.97C173.72 24.09 174.73 24.37 175.48 24.79C176.19 25.18 176.72 25.8 177.11 26.68C177.52 27.63 177.81 28.95 177.97 30.62C178.13 32.35 178.21 34.59 178.21 37.26V38.18C178.21 40.76 178.13 42.93 177.97 44.63C177.81 46.27 177.52 47.59 177.11 48.55C176.72 49.45 176.18 50.1 175.47 50.53C174.72 50.98 173.71 51.28 172.48 51.43C171.17 51.58 169.53 51.66 167.6 51.66' fill='white'/%3E%3Cpath d='M194.12 51.06V19.26H188.74V56.19H219.13V51.06H194.12Z' fill='white'/%3E%3Cpath d='M237.35 56.4V19.57H243.45L263.28 49.62L282.8 19.57H288.91V56.4H284.81V23.75L265.24 53.98H261.53L241.45 23.75V56.4H237.35Z' fill='white'/%3E%3Cpath d='M322.31 48.2C322.31 50.26 322.04 51.89 321.49 53.07C320.94 54.25 320.1 55.12 318.98 55.66C317.86 56.2 316.42 56.55 314.68 56.7C312.94 56.85 310.86 56.93 308.46 56.93C305.71 56.93 303.38 56.78 301.47 56.46C299.56 56.15 298.01 55.51 296.84 54.54C295.67 53.57 294.81 52.12 294.28 50.19C293.75 48.26 293.48 45.67 293.48 42.45C293.48 39.23 293.74 36.81 294.26 34.92C294.78 33.03 295.62 31.61 296.79 30.65C297.96 29.69 299.49 29.05 301.39 28.73C303.29 28.41 305.61 28.25 308.36 28.25C311.51 28.25 314.11 28.5 316.17 28.99C318.23 29.49 319.77 30.43 320.79 31.82C321.81 33.21 322.32 35.25 322.32 37.94V43.86H297.61C297.62 45.91 297.75 47.55 297.99 48.77C298.23 50 298.72 50.93 299.44 51.55C300.16 52.17 301.25 52.59 302.69 52.79C304.13 52.99 306.06 53.09 308.46 53.09C310.62 53.09 312.37 53.04 313.7 52.95C315.03 52.86 316.04 52.64 316.73 52.32C317.42 51.99 317.88 51.5 318.13 50.84C318.37 50.19 318.49 49.31 318.49 48.2H322.31ZM308.35 32.09C306.03 32.09 304.16 32.19 302.75 32.38C301.33 32.57 300.26 32.94 299.52 33.5C298.78 34.05 298.28 34.87 298.01 35.96C297.75 37.05 297.61 38.48 297.59 40.25H318.38V37.95C318.38 36.8 318.26 35.84 318.03 35.09C317.8 34.33 317.34 33.73 316.65 33.29C315.97 32.85 314.96 32.54 313.63 32.37C312.3 32.19 310.54 32.11 308.35 32.11' fill='white'/%3E%3Cpath d='M340.21 56.93C337.47 56.93 335.13 56.77 333.21 56.46C331.29 56.15 329.74 55.51 328.56 54.54C327.38 53.57 326.52 52.12 325.98 50.19C325.44 48.25 325.17 45.67 325.17 42.44C325.17 39.21 325.44 36.8 325.98 34.91C326.52 33.02 327.38 31.6 328.56 30.64C329.74 29.68 331.29 29.04 333.21 28.72C335.13 28.4 337.46 28.24 340.21 28.24C342.96 28.24 345.07 28.46 346.88 28.91C348.69 29.36 350.12 30.36 351.16 31.91V19.56H355.26V56.39H351.16V53.23C350.12 54.8 348.7 55.8 346.88 56.25C345.06 56.7 342.84 56.92 340.21 56.92M351.16 42.45C351.16 40.16 351.02 38.33 350.73 36.96C350.44 35.59 349.92 34.55 349.15 33.86C348.38 33.16 347.28 32.7 345.84 32.46C344.4 32.22 342.53 32.1 340.21 32.1C337.68 32.1 335.67 32.22 334.19 32.46C332.71 32.7 331.62 33.17 330.92 33.86C330.22 34.56 329.77 35.59 329.56 36.96C329.35 38.34 329.25 40.17 329.25 42.45C329.25 44.73 329.35 46.71 329.56 48.13C329.77 49.55 330.22 50.62 330.92 51.33C331.62 52.04 332.7 52.51 334.19 52.74C335.67 52.97 337.68 53.09 340.21 53.09C342.53 53.09 344.41 52.98 345.84 52.74C347.28 52.51 348.38 52.04 349.15 51.33C349.92 50.62 350.44 49.55 350.73 48.13C351.01 46.71 351.16 44.81 351.16 42.45Z' fill='white'/%3E%3Cpath d='M360.81 19.57H364.91V24.17H360.81V19.57ZM360.81 30.32H364.91V56.41H360.81V30.32Z' fill='white'/%3E%3Cpath d='M383.86 56.93C381.12 56.93 378.78 56.77 376.86 56.46C374.94 56.15 373.39 55.51 372.21 54.54C371.03 53.57 370.17 52.12 369.63 50.19C369.09 48.26 368.82 45.67 368.82 42.44C368.82 39.21 369.09 36.8 369.63 34.91C370.17 33.02 371.03 31.6 372.21 30.64C373.39 29.68 374.94 29.04 376.86 28.72C378.78 28.4 381.12 28.24 383.86 28.24C387.15 28.24 389.85 28.45 391.98 28.87C394.11 29.29 395.68 30.16 396.71 31.47C397.74 32.78 398.25 34.78 398.25 37.47H394.32C394.32 35.92 394.04 34.76 393.47 33.99C392.9 33.22 391.86 32.71 390.35 32.46C388.84 32.2 386.68 32.08 383.86 32.08C381.33 32.08 379.32 32.2 377.84 32.44C376.36 32.68 375.27 33.15 374.57 33.84C373.87 34.54 373.42 35.57 373.21 36.95C373 38.32 372.9 40.15 372.9 42.44C372.9 44.73 373 46.7 373.21 48.12C373.41 49.54 373.87 50.61 374.57 51.32C375.27 52.03 376.35 52.5 377.84 52.73C379.32 52.96 381.32 53.08 383.86 53.08C386.01 53.08 387.77 53.01 389.13 52.88C390.5 52.74 391.55 52.47 392.31 52.06C393.06 51.65 393.59 51.06 393.88 50.29C394.17 49.51 394.32 48.48 394.32 47.18H398.25C398.25 49.32 397.97 51.04 397.4 52.34C396.83 53.63 395.96 54.61 394.8 55.27C393.63 55.92 392.14 56.37 390.33 56.59C388.51 56.81 386.36 56.93 383.87 56.93' fill='white'/%3E%3Cpath d='M415.12 56.93C412.18 56.93 409.74 56.76 407.83 56.41C405.92 56.07 404.49 55.31 403.56 54.14C402.63 52.97 402.16 51.16 402.16 48.7C402.16 46.24 402.6 44.35 403.47 43.17C404.35 41.99 405.73 41.23 407.63 40.88C409.53 40.53 412.02 40.35 415.11 40.35C417.61 40.35 419.71 40.41 421.41 40.54C423.1 40.67 424.62 40.89 425.96 41.21C425.93 39.08 425.8 37.41 425.58 36.19C425.35 34.97 424.93 34.06 424.3 33.47C423.68 32.88 422.76 32.5 421.56 32.33C420.36 32.16 418.76 32.08 416.77 32.08C414.49 32.08 412.71 32.14 411.42 32.25C410.13 32.36 409.2 32.56 408.61 32.85C408.03 33.14 407.66 33.55 407.51 34.1C407.36 34.64 407.29 35.35 407.29 36.21H403.19C403.19 34.48 403.4 33.09 403.82 32.04C404.24 30.98 404.95 30.18 405.97 29.64C406.98 29.1 408.36 28.73 410.12 28.54C411.88 28.35 414.09 28.25 416.77 28.25C419.64 28.25 421.96 28.46 423.72 28.87C425.48 29.29 426.82 30.03 427.73 31.11C428.65 32.19 429.26 33.7 429.59 35.63C429.91 37.56 430.07 40.06 430.07 43.11V56.4H425.97V54.51C425.49 55.09 424.82 55.55 423.96 55.9C423.11 56.25 421.97 56.51 420.56 56.68C419.14 56.85 417.33 56.93 415.13 56.93M415.12 53.19C417.55 53.19 419.5 53.16 420.95 53.09C422.4 53.03 423.49 52.85 424.21 52.56C424.93 52.27 425.4 51.81 425.63 51.17C425.86 50.53 425.97 49.64 425.97 48.48V44.24L415.13 44.1C413.21 44.07 411.66 44.1 410.49 44.18C409.32 44.27 408.42 44.46 407.81 44.76C407.2 45.06 406.79 45.52 406.58 46.15C406.38 46.78 406.27 47.63 406.27 48.7C406.27 49.77 406.38 50.56 406.58 51.17C406.79 51.78 407.2 52.23 407.81 52.51C408.42 52.8 409.32 52.98 410.49 53.06C411.66 53.14 413.21 53.18 415.13 53.18' fill='white'/%3E%3Cpath d='M440.03 19.57H435.93V56.4H440.03V19.57Z' fill='white'/%3E%3C/svg%3E") no-repeat left center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='86.5 0 354.5 67' fill='none' role='img' aria-label='VIOL Medical'%3E%3Cpath d='M108.47 50.64L93.79 19.26H87.67L105.39 56.19H111.56L129.21 19.26H123.16L108.47 50.64Z' fill='white'/%3E%3Cpath d='M138.15 19.26H132.77V56.19H138.15V19.26Z' fill='white'/%3E%3Cpath d='M181.68 23.82C180.95 22.37 179.94 21.23 178.67 20.46C177.43 19.7 175.87 19.18 174.03 18.92C172.25 18.66 170.08 18.53 167.59 18.53H159.3C156.8 18.53 154.64 18.66 152.86 18.92C151.02 19.19 149.45 19.71 148.22 20.46C146.95 21.24 145.94 22.37 145.21 23.82C144.5 25.23 144 27.06 143.72 29.26C143.44 31.42 143.3 34.11 143.3 37.27V38.19C143.3 42.02 143.53 45.18 143.98 47.59C144.45 50.08 145.3 52.03 146.5 53.39C147.71 54.76 149.4 55.71 151.53 56.21C153.57 56.69 156.18 56.94 159.31 56.94H167.6C170.72 56.94 173.34 56.7 175.38 56.21C177.51 55.71 179.2 54.76 180.41 53.39C181.61 52.03 182.45 50.08 182.92 47.59C183.37 45.18 183.6 42.02 183.6 38.19V37.27C183.6 34.11 183.46 31.41 183.18 29.26C182.9 27.06 182.4 25.23 181.69 23.82M167.59 51.66H159.3C157.37 51.66 155.73 51.58 154.42 51.43C153.19 51.29 152.18 50.99 151.43 50.53C150.71 50.1 150.17 49.45 149.78 48.55C149.37 47.59 149.08 46.27 148.92 44.63C148.76 42.93 148.68 40.76 148.68 38.18V37.26C148.68 34.59 148.76 32.36 148.92 30.62C149.08 28.95 149.36 27.63 149.78 26.68C150.16 25.81 150.7 25.18 151.41 24.79C152.16 24.37 153.17 24.09 154.41 23.97C155.73 23.84 157.37 23.78 159.3 23.78H167.59C169.51 23.78 171.16 23.84 172.48 23.97C173.72 24.09 174.73 24.37 175.48 24.79C176.19 25.18 176.72 25.8 177.11 26.68C177.52 27.63 177.81 28.95 177.97 30.62C178.13 32.35 178.21 34.59 178.21 37.26V38.18C178.21 40.76 178.13 42.93 177.97 44.63C177.81 46.27 177.52 47.59 177.11 48.55C176.72 49.45 176.18 50.1 175.47 50.53C174.72 50.98 173.71 51.28 172.48 51.43C171.17 51.58 169.53 51.66 167.6 51.66' fill='white'/%3E%3Cpath d='M194.12 51.06V19.26H188.74V56.19H219.13V51.06H194.12Z' fill='white'/%3E%3Cpath d='M237.35 56.4V19.57H243.45L263.28 49.62L282.8 19.57H288.91V56.4H284.81V23.75L265.24 53.98H261.53L241.45 23.75V56.4H237.35Z' fill='white'/%3E%3Cpath d='M322.31 48.2C322.31 50.26 322.04 51.89 321.49 53.07C320.94 54.25 320.1 55.12 318.98 55.66C317.86 56.2 316.42 56.55 314.68 56.7C312.94 56.85 310.86 56.93 308.46 56.93C305.71 56.93 303.38 56.78 301.47 56.46C299.56 56.15 298.01 55.51 296.84 54.54C295.67 53.57 294.81 52.12 294.28 50.19C293.75 48.26 293.48 45.67 293.48 42.45C293.48 39.23 293.74 36.81 294.26 34.92C294.78 33.03 295.62 31.61 296.79 30.65C297.96 29.69 299.49 29.05 301.39 28.73C303.29 28.41 305.61 28.25 308.36 28.25C311.51 28.25 314.11 28.5 316.17 28.99C318.23 29.49 319.77 30.43 320.79 31.82C321.81 33.21 322.32 35.25 322.32 37.94V43.86H297.61C297.62 45.91 297.75 47.55 297.99 48.77C298.23 50 298.72 50.93 299.44 51.55C300.16 52.17 301.25 52.59 302.69 52.79C304.13 52.99 306.06 53.09 308.46 53.09C310.62 53.09 312.37 53.04 313.7 52.95C315.03 52.86 316.04 52.64 316.73 52.32C317.42 51.99 317.88 51.5 318.13 50.84C318.37 50.19 318.49 49.31 318.49 48.2H322.31ZM308.35 32.09C306.03 32.09 304.16 32.19 302.75 32.38C301.33 32.57 300.26 32.94 299.52 33.5C298.78 34.05 298.28 34.87 298.01 35.96C297.75 37.05 297.61 38.48 297.59 40.25H318.38V37.95C318.38 36.8 318.26 35.84 318.03 35.09C317.8 34.33 317.34 33.73 316.65 33.29C315.97 32.85 314.96 32.54 313.63 32.37C312.3 32.19 310.54 32.11 308.35 32.11' fill='white'/%3E%3Cpath d='M340.21 56.93C337.47 56.93 335.13 56.77 333.21 56.46C331.29 56.15 329.74 55.51 328.56 54.54C327.38 53.57 326.52 52.12 325.98 50.19C325.44 48.25 325.17 45.67 325.17 42.44C325.17 39.21 325.44 36.8 325.98 34.91C326.52 33.02 327.38 31.6 328.56 30.64C329.74 29.68 331.29 29.04 333.21 28.72C335.13 28.4 337.46 28.24 340.21 28.24C342.96 28.24 345.07 28.46 346.88 28.91C348.69 29.36 350.12 30.36 351.16 31.91V19.56H355.26V56.39H351.16V53.23C350.12 54.8 348.7 55.8 346.88 56.25C345.06 56.7 342.84 56.92 340.21 56.92M351.16 42.45C351.16 40.16 351.02 38.33 350.73 36.96C350.44 35.59 349.92 34.55 349.15 33.86C348.38 33.16 347.28 32.7 345.84 32.46C344.4 32.22 342.53 32.1 340.21 32.1C337.68 32.1 335.67 32.22 334.19 32.46C332.71 32.7 331.62 33.17 330.92 33.86C330.22 34.56 329.77 35.59 329.56 36.96C329.35 38.34 329.25 40.17 329.25 42.45C329.25 44.73 329.35 46.71 329.56 48.13C329.77 49.55 330.22 50.62 330.92 51.33C331.62 52.04 332.7 52.51 334.19 52.74C335.67 52.97 337.68 53.09 340.21 53.09C342.53 53.09 344.41 52.98 345.84 52.74C347.28 52.51 348.38 52.04 349.15 51.33C349.92 50.62 350.44 49.55 350.73 48.13C351.01 46.71 351.16 44.81 351.16 42.45Z' fill='white'/%3E%3Cpath d='M360.81 19.57H364.91V24.17H360.81V19.57ZM360.81 30.32H364.91V56.41H360.81V30.32Z' fill='white'/%3E%3Cpath d='M383.86 56.93C381.12 56.93 378.78 56.77 376.86 56.46C374.94 56.15 373.39 55.51 372.21 54.54C371.03 53.57 370.17 52.12 369.63 50.19C369.09 48.26 368.82 45.67 368.82 42.44C368.82 39.21 369.09 36.8 369.63 34.91C370.17 33.02 371.03 31.6 372.21 30.64C373.39 29.68 374.94 29.04 376.86 28.72C378.78 28.4 381.12 28.24 383.86 28.24C387.15 28.24 389.85 28.45 391.98 28.87C394.11 29.29 395.68 30.16 396.71 31.47C397.74 32.78 398.25 34.78 398.25 37.47H394.32C394.32 35.92 394.04 34.76 393.47 33.99C392.9 33.22 391.86 32.71 390.35 32.46C388.84 32.2 386.68 32.08 383.86 32.08C381.33 32.08 379.32 32.2 377.84 32.44C376.36 32.68 375.27 33.15 374.57 33.84C373.87 34.54 373.42 35.57 373.21 36.95C373 38.32 372.9 40.15 372.9 42.44C372.9 44.73 373 46.7 373.21 48.12C373.41 49.54 373.87 50.61 374.57 51.32C375.27 52.03 376.35 52.5 377.84 52.73C379.32 52.96 381.32 53.08 383.86 53.08C386.01 53.08 387.77 53.01 389.13 52.88C390.5 52.74 391.55 52.47 392.31 52.06C393.06 51.65 393.59 51.06 393.88 50.29C394.17 49.51 394.32 48.48 394.32 47.18H398.25C398.25 49.32 397.97 51.04 397.4 52.34C396.83 53.63 395.96 54.61 394.8 55.27C393.63 55.92 392.14 56.37 390.33 56.59C388.51 56.81 386.36 56.93 383.87 56.93' fill='white'/%3E%3Cpath d='M415.12 56.93C412.18 56.93 409.74 56.76 407.83 56.41C405.92 56.07 404.49 55.31 403.56 54.14C402.63 52.97 402.16 51.16 402.16 48.7C402.16 46.24 402.6 44.35 403.47 43.17C404.35 41.99 405.73 41.23 407.63 40.88C409.53 40.53 412.02 40.35 415.11 40.35C417.61 40.35 419.71 40.41 421.41 40.54C423.1 40.67 424.62 40.89 425.96 41.21C425.93 39.08 425.8 37.41 425.58 36.19C425.35 34.97 424.93 34.06 424.3 33.47C423.68 32.88 422.76 32.5 421.56 32.33C420.36 32.16 418.76 32.08 416.77 32.08C414.49 32.08 412.71 32.14 411.42 32.25C410.13 32.36 409.2 32.56 408.61 32.85C408.03 33.14 407.66 33.55 407.51 34.1C407.36 34.64 407.29 35.35 407.29 36.21H403.19C403.19 34.48 403.4 33.09 403.82 32.04C404.24 30.98 404.95 30.18 405.97 29.64C406.98 29.1 408.36 28.73 410.12 28.54C411.88 28.35 414.09 28.25 416.77 28.25C419.64 28.25 421.96 28.46 423.72 28.87C425.48 29.29 426.82 30.03 427.73 31.11C428.65 32.19 429.26 33.7 429.59 35.63C429.91 37.56 430.07 40.06 430.07 43.11V56.4H425.97V54.51C425.49 55.09 424.82 55.55 423.96 55.9C423.11 56.25 421.97 56.51 420.56 56.68C419.14 56.85 417.33 56.93 415.13 56.93M415.12 53.19C417.55 53.19 419.5 53.16 420.95 53.09C422.4 53.03 423.49 52.85 424.21 52.56C424.93 52.27 425.4 51.81 425.63 51.17C425.86 50.53 425.97 49.64 425.97 48.48V44.24L415.13 44.1C413.21 44.07 411.66 44.1 410.49 44.18C409.32 44.27 408.42 44.46 407.81 44.76C407.2 45.06 406.79 45.52 406.58 46.15C406.38 46.78 406.27 47.63 406.27 48.7C406.27 49.77 406.38 50.56 406.58 51.17C406.79 51.78 407.2 52.23 407.81 52.51C408.42 52.8 409.32 52.98 410.49 53.06C411.66 53.14 413.21 53.18 415.13 53.18' fill='white'/%3E%3Cpath d='M440.03 19.57H435.93V56.4H440.03V19.57Z' fill='white'/%3E%3C/svg%3E") no-repeat left center/contain}
/* ③ 하위 메뉴 계층 = 관리자 화면 방식: 묶음 이름은 작은 회색 글자, 항목은 앱 이름과 같은 세로줄(32px)에서 시작 */
html.lin-shell .lin-sub{margin:2px 0 8px !important}
html.lin-shell .lin-sub .rail-grp{padding:0 !important;margin:0 !important;border:0 !important}
html.lin-shell .lin-sub .rail-grp > h3.lin-dup{display:none !important}
html.lin-shell .lin-sub :is(.rail-grp > h3, .nav-t2){display:flex !important;align-items:center;justify-content:space-between;gap:6px;
  height:28px !important;min-height:28px;margin:6px 0 0 !important;padding:0 8px 0 32px !important;border:0 !important;background:none !important;
  font-size:12px !important;font-weight:500 !important;letter-spacing:0 !important;color:var(--rail-txt) !important;text-transform:none !important}
html.lin-shell .lin-sub .nav-t2{cursor:pointer;border-radius:6px}
html.lin-shell .lin-sub .nav-t2:hover{color:var(--rail-txt-hi) !important}
html.lin-shell .lin-sub .nav-t2 .fold-x{opacity:.55;transform:scale(.8)}
html.lin-shell .lin-sub .nav{display:flex !important;align-items:center;gap:8px;width:100%;height:30px !important;min-height:30px;
  margin:0 !important;padding:0 8px 0 32px !important;border:0 !important;border-radius:8px !important;background:none !important;
  font-size:13px !important;font-weight:450 !important;color:var(--rail-txt-hi) !important;text-align:left;box-shadow:none !important}
html.lin-shell .lin-sub .nav:hover{background:var(--shell-2) !important}
html.lin-shell .lin-sub .nav:is([aria-current="page"],[aria-selected="true"],.on){background:var(--shell-active, var(--shell-2)) !important;font-weight:500 !important}
/* 10-06 Dashboard 는 첫 항목(손익 현황)에 .on 을 늘 남기고 지금 화면은 aria-current 로 표시한다 → 둘 다 칠해져 선택이 두 개로 보였다.
   aria-current 가 있는 묶음에서는 그것 하나만 칠한다 */
html.lin-shell .lin-sub:has(.nav[aria-current="page"]) .nav.on:not([aria-current="page"]){background:none !important;font-weight:450 !important}
html.lin-shell .lin-sub .nav svg{width:16px;height:16px;flex:none;margin-left:-24px}
/* 하위 메뉴가 열린 앱 이름 줄 = 진하게(현재 위치) */
html.lin-shell .lin-app.on{color:var(--rail-txt-hi) !important;font-weight:600}
/* ② 바닥 묶음(오류·개선 요청 · 관리자) 안에서도 하위 메뉴가 그 항목 아래에 펼쳐진다 */
html.lin-shell .lin-foot .lin-sub{margin-bottom:4px !important}
/* ⑤ 접기 단추 자리 하나로: 펼침 = 머리 오른쪽 · 접힘 = 아이콘 줄 맨 위(날개 바로 아래). 종전엔 접으면 맨 아래로 내려가 찾기 어려웠다 */
@media (min-width:1025px){
  html.lin-shell body.rail-collapsed #mstrip .mstrip-logo{order:-2}
  html.lin-shell body.rail-collapsed #mstrip .mstrip-tg{order:-1;margin:0 0 8px !important}
  html.lin-hub body.hubon.rail-collapsed .hstrip .hstrip-logo{order:-2}
  html.lin-hub body.hubon.rail-collapsed .hstrip .hstrip-tg{order:-1;margin:0 0 8px !important}
}
/* ⑥ 허브: 접은 뒤 마우스가 띠 위에 있으면 바로 다시 펼쳐져(잠깐 펼침) "안 접힌다"로 보였다 → 이 판에서는 잠깐 펼침을 끈다.
      앱 쪽도 접으면 아이콘 줄만 남는다(같은 동작) */
@media (min-width:901px){
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed.rail-peek .hrail{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed.rail-peek .corner{clip-path:none !important}
}
/* ⑦ 허브 첫 화면 안내 줄(불편하거나 … 유준현 대리에게)이 위젯 판에 가려 오른쪽 반만 보이던 것 —
      판 감싸개(.wbwrap)가 세로로 줄어들어(758 < 위젯 883px, 10-05 실측) 위젯이 그 밖으로 넘치고 안내 줄이 그 위에 앉았다.
      넓은 화면에서는 감싸개를 줄이지 않는다 → 안내 줄은 위젯 아래로 가고, 본문 판이 스크롤한다. 폰은 판 자체가 구르는 종전 방식 그대로. */
@media (min-width:901px){
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hubwrap > .wbwrap{flex:none !important}
}
/* 폰 서랍의 하위 메뉴는 손가락 기준 44px(위 ③ 의 30px 는 넓은 화면용) */
@media (max-width:900px){
  html.lin-shell .lin-sub .nav{height:44px !important;min-height:44px}
  .lin-mid{overflow:visible;flex:none;min-height:auto}
  html.lin-shell .lin-side .lin-app{height:44px !important;min-height:44px;flex:none}
  html.lin-shell .lin-sub :is(.rail-grp > h3, .nav-t2){height:36px !important;min-height:36px}
}

/* ══ iOS 질감 층 (10-05 사용자 O2 · html.lin-ios = linear_theme.js 가 단다 · 첫 적용 Dashboard) ══════════
   ① 큰 제목: 화면마다 이미 있는 숨은 제목(h1[data-screen-title], 화면 읽기 프로그램용)을 iOS 큰 제목으로 드러낸다.
      내용을 새로 지어내지 않는다 — 그 화면 메뉴 이름 그대로다. 내리면 살짝 접힌다. */
html.lin-ios .work h1[data-screen-title]{position:static !important;width:auto !important;height:auto !important;clip:auto !important;
  clip-path:none !important;overflow:visible !important;white-space:normal !important;margin:6px 0 10px !important;padding:0 16px !important;border:0 !important;
  font-size:30px !important;font-weight:700 !important;letter-spacing:-.6px !important;line-height:1.15 !important;color:var(--ink) !important;
  transform-origin:left bottom;transition:opacity .22s ease, transform .22s ease}
html.lin-ios .work.lin-scrolled h1[data-screen-title]{opacity:.35;transform:translateY(-4px) scale(.97)}
/* 요약 화면은 셸이 화면 머리(.page-hero)를 쓰고 숨은 제목에 hidden 을 단다 — 그런데 이 판은 그 머리를 감췄다 → 제목을 되살린다 */
html.lin-ios .work h1[data-screen-title][hidden]{display:block !important}
html.lin-ios .work h1[data-screen-title].lin-title-dup{display:none !important}
/* ② 반투명 머리줄(넓은 화면): 작업면이 머리줄 밑까지 올라가 내용이 비쳐 흐른다 — iOS 내비게이션 막대.
      굴절(리퀴드 글래스)은 폭이 고정된 떠 있는 요소에만 맞다(폭이 바뀌면 굴절 지도가 어긋남) → 여기는 흐림 유리.
      ⚠ 표 머리 고정 위치(--stick-top)를 머리줄 높이만큼 내린다(안 내리면 고정된 머리가 머리줄 밑에 숨는다).
      ⚠ 작업면이 스스로 구르는 화면만(.main.lin-glass, linear_theme.js 가 단다). 큰 표 화면(Data 품목코드 등)은 표가 자기 안에서
        구르고 작업면은 고정이라, 머리줄을 띄우면 제목이 그 밑에 깔렸다(10-05 실측) → 그런 화면은 머리줄을 제자리에 둔다. */
@media (min-width:1025px){
  html.lin-ios .shell > .main.lin-glass{position:relative}
  /* 10-06 작업면이 고정인 화면(표가 자기 안에서 구르는 22화면)도 머리줄 높이를 같은 44px 로 — 화면을 바꿀 때 2~3px 튀던 것(QA B14) */
  html.lin-ios .shell > .main > header:is(.topbar, .gbar){height:44px !important;min-height:44px !important;box-sizing:border-box;border-radius:12px 12px 0 0}
  /* 머리줄은 앱마다 header.topbar 또는 header.gbar(국내영업 등 · 48px) — 둘 다 같은 44px 유리로 */
  html.lin-ios .shell > .main.lin-glass > header:is(.topbar, .gbar){height:44px !important;min-height:44px !important;position:absolute !important;top:0;left:0;right:0;z-index:30;border-radius:12px 12px 0 0;
    background:color-mix(in srgb, var(--canvas) 58%, transparent) !important;
    -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
    border-bottom:1px solid transparent !important;transition:border-color .2s ease, background .2s ease}
  html.lin-ios .shell > .main.lin-glass.lin-scrolled > header:is(.topbar, .gbar){border-bottom-color:var(--line-2) !important}
  /* ⚠ 10-06 실측: 크롬은 고정 머리 위치를 구르는 상자의 '안쪽 여백을 뺀' 자리에서 잰다 → 여백 51 + top 44 = 95px 아래에 떠
     숫자와 겹쳤다. 머리줄(44) 바로 밑에 붙이려면 44 - 51 = -7px */
  html.lin-ios .shell > .main.lin-glass > .work{padding-top:51px !important;--stick-top:-7px !important}
  /* 자기 안에서 구르는 표 감싸개는 머리 고정 기준이 그 감싸개다 → 머리줄 높이를 더하면 머리가 아래로 밀린다 */
  html.lin-ios .shell > .main.lin-glass > .work :is(.ovn-tw, .lin-xscroll, .wkd-wrap){--stick-top:0px !important}
}
/* ③ iOS 칸 단추 — 전 메뉴 칸 단추 10종을 한 모양으로(10-05 전수 조사: Dashboard .sectab·.cmbtns·.scmeas ·
      해외영업·MES·국내영업 .krds-seg · 국내영업 .scmeas.kr-seg·.krar-seg·.qtab · CRM .qa-seg · 라이브러리 .lb-seg·.cf-seg).
      옅은 홈 안에서 고른 칸만 흰 알약이 떠 있다. 동작 단추(.cf-act)·쪽 넘김·필터 칩은 칸 단추가 아니라 그대로 둔다.
      ⚠ 앱마다 자기 칸 단추 규칙이 세다(특이도 0,6,x) → 앞머리를 :root 네 번으로 올려 한 벌로 이긴다. */
:root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .qtab:not(.krpol-toc):has(> :nth-child(2)):not(:has(> :not(button, [role="tab"])))){display:inline-flex !important;align-items:center;gap:2px !important;padding:2px !important;
  border:0 !important;border-radius:9px !important;background:color-mix(in srgb, var(--ink) 7%, transparent) !important;box-shadow:none !important;width:auto}
:root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .qtab:not(.krpol-toc):has(> :nth-child(2)):not(:has(> :not(button, [role="tab"])))) > :is(button, [role="tab"]){height:28px !important;min-height:28px;padding:0 12px !important;border:0 !important;margin:0 !important;
  border-radius:7px !important;background:transparent !important;color:var(--ink-2) !important;font-size:13px !important;font-weight:500 !important;
  box-shadow:none !important;outline-offset:1px;transition:background .18s ease, box-shadow .18s ease, color .18s ease}
:root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .qtab:not(.krpol-toc):has(> :nth-child(2)):not(:has(> :not(button, [role="tab"])))) > :is(button, [role="tab"]):hover{color:var(--ink) !important}
:root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .qtab:not(.krpol-toc):has(> :nth-child(2)):not(:has(> :not(button, [role="tab"])))) > :is(button, [role="tab"]):is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"]){background:var(--panel) !important;color:var(--ink) !important;
  box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05) !important}
:root:root:root:root.lin-ios[data-theme="dark"] .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .qtab:not(.krpol-toc):has(> :nth-child(2)):not(:has(> :not(button, [role="tab"])))) > :is(button, [role="tab"]):is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"]){background:color-mix(in srgb, var(--ink) 20%, transparent) !important;box-shadow:0 2px 6px rgba(0,0,0,.35) !important}
/* 10-06 사용자 지적(토글 전수 조사): 해외영업·MES·EBD 의 칸 단추 15묶음은 앱 규칙이 홈 높이를 28px 로 못박아
   위아래 여백 2px 가 사라지고 고른 알약이 홈 위아래 끝에 붙었다(Dashboard 장비·소모품만 32px 홈 + 2px 여백으로 맞았다).
   홈 높이는 내용이 정한다(단추 28 + 위아래 2) */
:root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg){height:auto !important;min-height:0 !important;box-sizing:border-box !important}
/* 폰: 칸이 많으면(CRM 담당자 6칸 등) 두 줄로 접혀 회색 덩어리가 됐다 → 한 줄로 두고 옆으로 민다 */
@media (max-width:760px){ :root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg){flex-wrap:nowrap !important;max-width:100%;overflow-x:auto;scrollbar-width:none} }
@media (max-width:760px){ :root:root:root:root.lin-ios .shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krds-seg.krpol-price, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .qtab:not(.krpol-toc):has(> :nth-child(2)):not(:has(> :not(button, [role="tab"])))) > :is(button, [role="tab"]){height:40px !important;min-height:40px} }
/* ④ 등장 움직임: 화면을 바꾸면 판들이 6px 아래에서 차례로 떠오른다(0.3초). 같은 화면 안 숫자 갱신에는 다시 돌지 않는다 */
@keyframes linIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* 10-06 깜빡임 고침: 종전엔 작업면 자식 전부에 등장 움직임을 걸어, 첫 진입 뒤 자료가 와서 셸이 판을 다시 끼울 때 한 번 더 돌았다
   (사용자 「들어가면 두 번 깜빡인다」). 이제 앱 안에서 메뉴를 바꿀 때만 linear_theme.js 가 .lin-in 을 달아 돈다 */
html.lin-ios .work > .lin-in{animation:linIn .32s cubic-bezier(.2,.8,.2,1) both}
html.lin-ios .work > .lin-in:nth-child(2){animation-delay:.03s}
html.lin-ios .work > .lin-in:nth-child(3){animation-delay:.06s}
html.lin-ios .work > .lin-in:nth-child(4){animation-delay:.09s}
html.lin-ios .work > .lin-in:nth-child(n+5){animation-delay:.12s}
@media (prefers-reduced-motion:reduce){ html.lin-ios .work > .lin-in{animation:none} }
/* 카드 제목줄 안의 칸 단추는 설명 글과 붙어 보였다(간격 0) → 12px 띄운다 */
html.lin-ios .work .card > :is(.cmbtns, .scmeas){margin-left:12px !important}

/* ── 10-05 사용자 지적: 메뉴를 누르면 옛 사이드바(아이콘 줄 + 오른쪽 목록)가 잠깐 떴다 사라진 뒤 새 사이드바가 떴다 ──
   새 사이드바는 셸 스크립트가 화면을 그린 뒤에 만들어진다(linear_theme.js build). 그 사이 옛 모양이 한 번 그려졌다.
   → 바뀌기 전에는 사이드바 자리를 처음부터 새 폭(244)으로 잡고 옛 내용은 감춘다(본문이 옆으로 튀지도 않는다).
   대비책: 2.5초 안에 바뀌지 않으면(스크립트 실패) 옛 목록이 저절로 다시 보인다 — 메뉴가 통째로 사라지지 않게. */
@keyframes linReveal{to{visibility:visible}}
@media (min-width:1025px){
  html:not(.lin-shell) body:not(.rail-collapsed) .shell{grid-template-columns:244px minmax(0,1fr) !important}
  html:not(.lin-shell) body:not(.rail-collapsed) .shell > #mstrip{display:none !important}
  html:not(.lin-shell) body:not(.rail-collapsed) .shell > #rail{grid-column:1;width:244px !important;visibility:hidden;animation:linReveal 0s 12s forwards}
  html:not(.lin-shell) body:not(.rail-collapsed) .shell > .main{grid-column:2}
}
/* 허브도 같은 까닭 — 로그인 직후 옛 띠·레일이 잠깐 보였다 */
html:not(.lin-hub) body.hubon .hshell{visibility:hidden;animation:linReveal 0s 12s forwards}
/* 국내영업 판매정책의 공급가액/판매가액 칸 단추는 #pWork(아이디) 앞머리로 알약 모양을 고정해 둬 위 규칙이 졌다 → 같은 아이디 앞머리로 맞춘다 */
:root:root:root:root.lin-ios #pWork .krds-seg.krpol-price{border-radius:9px !important;padding:2px !important;height:auto !important;box-shadow:none !important;
  background:color-mix(in srgb, var(--ink) 7%, transparent) !important;overflow:visible}
:root:root:root:root.lin-ios #pWork .krds-seg.krpol-price > button{border-radius:7px !important;color:var(--ink-2) !important;font-size:13px !important}
:root:root:root:root.lin-ios #pWork .krds-seg.krpol-price > button[aria-pressed="true"]{background:var(--panel) !important;color:var(--ink) !important;
  box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05) !important}
:root:root:root:root.lin-ios[data-theme="dark"] #pWork .krds-seg.krpol-price > button[aria-pressed="true"]{background:color-mix(in srgb, var(--ink) 20%, transparent) !important}

/* 10-06 QA B19: 조회 조건 판(.cfilt)은 3칸 격자(제목 · 입력칸 · 단추)인데, 아래 안내 줄(.qcond)이 첫 칸에 들어가
   그 긴 문장 폭만큼 제목 칸이 넓어지고 입력칸 칸이 67px 로 찌그러졌다(1440 화면·125% 배율 = 폭 1152 에서 재현).
   안내 줄은 격자 전체 폭을 쓰게 한다 */
html.lin-shell .work .cfilt > .qcond{grid-column:1 / -1}
/* 10-06 QA B18: MES 입금 매칭 「입금 자료가 PI 에 붙었나」 막대 줄의 설명 글(.b-s)이 한 줄 고정이라 좁은 화면에서
   판 밖으로 나가 말줄임 없이 잘렸다 → 칸 안에서 줄을 바꾼다 */
html.lin-shell .work .bars .b-s{white-space:normal !important;min-width:0;overflow-wrap:anywhere;line-height:1.35}
/* 10-06 QA B28: 폰 관리자 「계정」 86명 목록이 두 줄 높이 속 스크롤 상자에 갇혔다 → 폰에서는 목록을 다 펼치고 화면이 구른다 */
@media (max-width:760px){ html.lin-shell #usersScroll{max-height:none !important;overflow-y:visible !important;overflow-x:auto} }
/* 10-06 사용자 지적(검색칸 선이 두 번): 감싸개(.field)의 테두리 안에 입력칸 자기 테두리가 또 그려졌다(해외영업·CRM 등 셸 공통 검색칸 #q).
   선은 감싸개 하나만. MES 는 반대로 감싸개를 지우고 입력칸 선 하나만 남겼다(sop/app.css) — 어느 쪽이든 한 줄 */
:root:root:root:root.lin-shell .work .field > input#q{border-width:0 !important;border-color:transparent !important}
/* 10-06 토글 전수 조사: 관리자 「편집 권한(부서/사람)」·「로그인 기록(이 달/전체 기간)」 칸 단추(.seg)만 옛 모양(홈 28 · 단추 24 · 회색 선택)이었다
   → 다른 메뉴와 같은 iOS 칸 단추로. .seg 는 다른 앱에서 다른 뜻으로도 쓰는 이름이라 관리자에만 건다 */
:root:root:root:root.lin-ios[data-app="admin"] .shell .work .seg{display:inline-flex !important;align-items:center;gap:2px !important;padding:2px !important;height:auto !important;
  border:0 !important;border-radius:9px !important;background:color-mix(in srgb, var(--ink) 7%, transparent) !important;box-shadow:none !important}
:root:root:root:root.lin-ios[data-app="admin"] .shell .work .seg > button{height:28px !important;min-height:28px;padding:0 12px !important;border:0 !important;margin:0 !important;
  border-radius:7px !important;background:transparent !important;color:var(--ink-2) !important;font-size:13px !important;font-weight:500 !important;box-shadow:none !important}
:root:root:root:root.lin-ios[data-app="admin"] .shell .work .seg > button:is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"]){
  background:var(--panel) !important;color:var(--ink) !important;box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05) !important}
:root:root:root:root.lin-ios[data-app="admin"][data-theme="dark"] .shell .work .seg > button:is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"]){
  background:color-mix(in srgb, var(--ink) 20%, transparent) !important;box-shadow:0 2px 6px rgba(0,0,0,.35) !important}
/* 10-06 사용자 지적(「그리다 만 검색창」): 셸 공통 검색칸(.field > #q)은 겉 상자와 안쪽 입력칸이 각자 바탕·모서리·선을 그려
   앱마다(해외영업·CRM = 겉 선 + 안쪽 흰 판 / MES = 안쪽 선만) 모양이 달랐고 겹친 가장자리가 덜 그린 것처럼 보였다.
   → 모든 앱에서 겉 상자 하나만 그린다(선 · 둥근 8 · 바탕). 안쪽 입력칸은 투명·선 없음 */
:root:root:root:root:root.lin-shell .work .field:has(> input#q){display:flex !important;align-items:center;height:28px !important;padding:0 10px !important;
  border:1px solid var(--line-2) !important;border-radius:8px !important;background:var(--panel) !important;box-shadow:none !important;box-sizing:border-box}
:root:root:root:root:root.lin-shell .work .field:has(> input#q):focus-within{border-color:var(--accent) !important;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent) !important}
:root:root:root:root:root.lin-shell .work .field > input#q{flex:1;min-width:0;width:100% !important;height:100% !important;padding:0 !important;margin:0 !important;
  border:0 !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important;outline:0 !important}
/* 10-06 사용자 지적(100% 배율에서 오른쪽이 비어 있다): 위젯 판 폭이 1,320px 로 묶여 넓은 화면 오른쪽 1/5 이 비었다
   → 판 폭을 본문 폭 전체로. 칸은 그대로 196px 이상 정사각이라 넓으면 열이 늘어난다(위젯 크기는 그대로) */
@media (min-width:901px){ :root:root:root.lin-hub[data-shell="v2"] body.hubon .hub{--wg-max:100%}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon .hubwrap > .wbwrap{align-self:stretch !important;width:100% !important;max-width:none !important} }
/* 검색칸 겉 선이 너무 옅어(--line-2 · 거의 흰색) 덜 그린 것처럼 보였다 → 입력칸 선 색(--line)으로 */
:root:root:root:root:root.lin-shell .work .field:has(> input#q){border-color:var(--line) !important}

/* ══ 10-06 사용자 신고(창을 좁히면 깨짐): 셸은 1024px 이하에서 사이드바를 서랍(☰)으로 바꾸는데, 이 판은 761px 부터 고정 사이드바(244 칸)를
   가정해 761~1024 구간에서 왼쪽 244px 이 비거나 서랍과 겹쳤다 → 고정 사이드바 기준을 셸과 같은 1025px 로 올리고(위 블록들),
   761~1024 는 셸 서랍을 쓰되 서랍 안은 새 사이드바 한 장(아이콘 띠 감춤 · 폭 260 · 왼쪽 끝부터) */
@media (min-width:761px) and (max-width:1024px){
  html.lin-shell #mstrip, :root[data-shell="v2"].lin-shell .mstrip{display:none !important}
  :root:root[data-shell="v2"].lin-shell .rail{left:0 !important;width:260px !important;padding:8px 10px !important;background:var(--canvas) !important;
    box-shadow:0 0 0 1px var(--line-2), 0 18px 48px rgba(16,18,41,.22) !important}
  :root:root[data-shell="v2"].lin-shell .rail .lin-side{height:100% !important}
  html.lin-shell .lin-brand{outline:0}
}
/* 폰(≤760)에서 만든 「열린 화면」 줄이 창을 넓히면 서식 없이 사이드바 위에 남았다 → 폰 밖에서는 숨김 */
@media (min-width:761px){ .lin-opentabs{display:none !important} }
/* 10-06 사용자 신고: 탭 「…」 더 보기 목록이 요약 카드 밑에 깔렸다 — 반투명 머리줄이 아닌 화면에서 머리줄에 쌓임 순서가 없었다 */
html.lin-shell .shell > .main > header:is(.topbar, .gbar){z-index:40 !important}
html.lin-shell .shell > .main:not(.lin-glass) > header:is(.topbar, .gbar){position:relative}
html.lin-shell .vtab-ovlist{z-index:200 !important}
/* 10-06 사용자 지적(조회 조건 판 · 표 판이 어중간하게 붙어 보임): MES 는 조회 판 아래 모서리만 각지게 하고 표 판을 8px 끌어올려 붙였는데
   표 판 위 모서리는 둥근 채라 이음매가 어긋났다. 붙일 거면 각지게, 둥글게 둘 거면 띄워야 한다(사용자 판단 그대로) → 띄운다.
   모든 앱: 조회 조건 판은 네 모서리 둥글게 · 바로 아래 판은 12px 떨어짐 */
:root:root:root:root:root.lin-shell .shell .work .cfilt{border-radius:10px !important}
:root:root:root:root:root.lin-shell .shell .work .cfilt + :is(.panel, section, .sum-p, .tbl-wrap, .grid-host){margin-top:4px !important;border-top-left-radius:10px !important;border-top-right-radius:10px !important}
/* 10-06 사용자 신고(좁은 창에서 사이드바 여전히 이상): 761~1024 서랍이 ① 바탕이 투명(유리 판 시절 규칙 `html.lin-shell #rail{transparent}` 이 아이디 특이도로 이김)
   ② 옛 셸 로고 줄(.railbrand)이 새 사이드바 위에 한 번 더 ③ 머리줄(z 40) 밑에 깔림 → 셋 다 바로잡음 */
@media (min-width:761px) and (max-width:1024px){
  html.lin-shell.lin-shell #rail{background:var(--canvas) !important;z-index:60 !important}
  html.lin-shell #rail > :is(.railbrand, .rail-top){display:none !important}
  html.lin-shell #scrim{z-index:55 !important}
}

/* ═══ L1 판 짜기 규칙 — 전 메뉴 하나(10-06 사용자: 「간격을 띄울 거면 전 메뉴 공통 수치로 · 무언가를 만들 때는 같은 규칙을」) ═══
   실측(10-06): MES·CRM = 요약 줄과 조회 판을 붙임(아래 모서리만 깎고 -8px) · Data = 조회·표에 판 없음 · 해외영업 표 = 바탕 없이 20px.
   규칙: ① 작업면의 큰 덩어리(요약 줄 .stages·.pi-row·.kpis · 조회 조건 .cfilt · 표 판 .panel)는 각자 선 판 — 바탕 --panel · 둥근 10 · 그림자 --lin-card-sh
         ② 덩어리 사이 간격은 12px 하나(작업면 gap) — 붙이기·음수 여백·모서리 일부만 깎기 없음
         ③ 요약 영역(.sum-host) 안의 줄 사이도 12px
   ⚠ 표 판에 overflow:hidden 을 주지 않는다(표 머리 고정이 풀린다) → 안쪽 첫·끝 칸이 모서리를 물려받게 한다 */
:root:root:root:root:root.lin-shell .shell .work{gap:12px !important;row-gap:12px !important}
:root:root:root:root:root.lin-shell .shell .work > :is(.stages, .pi-row, .kpis, .cfilt, .panel){
  margin-top:0 !important;margin-bottom:0 !important;border-radius:10px !important;background:var(--panel) !important;box-shadow:var(--lin-card-sh) !important;border:0 !important}
:root:root:root:root:root.lin-shell .shell .work > .cfilt + :is(.panel, section, .sum-p, .tbl-wrap, .grid-host){margin-top:0 !important}
:root:root:root:root:root.lin-shell .shell .work > .panel > :first-child{border-top-left-radius:10px;border-top-right-radius:10px}
:root:root:root:root:root.lin-shell .shell .work > .panel > :last-child{border-bottom-left-radius:10px;border-bottom-right-radius:10px}
:root:root:root:root:root.lin-shell .shell .work > .sum-host{gap:12px !important;margin:0 !important}
:root:root:root:root:root.lin-shell .shell .work > .sum-host + *{margin-top:0 !important}
:root:root:root:root:root.lin-shell .shell .work .sum-host > .sum-row{gap:12px !important}
/* L1 — Data 는 표 판을 아이디 앞머리(#pWork > section.panel:has(.grid-host) · 투명 · 각짐)로 따로 그려 위 규칙이 졌다 → 같은 아이디 앞머리로 L1 적용 */
:root:root:root.lin-shell #pWork > :is(.stages, .pi-row, .kpis, .cfilt, .panel, section.panel:has(.grid-host)){
  margin-top:0 !important;margin-bottom:0 !important;border-radius:10px !important;background:var(--panel) !important;box-shadow:var(--lin-card-sh) !important;border:0 !important}
/* L1 — 10-06 QA Q10 확장(사용자 규칙 「모든 메뉴를 그릴 때 똑같은 규칙」): 구역 띠(lx-band·kl-band·lin-band·p-head 띠·lb-band·uph-band·lin-sh)도
   큰 덩어리로 보고 위아래 12 · 카드 격자 간격도 12. 종전 실측(1440 라이트): Dashboard 띠 위 20 · 카드 16 / 해외영업 24·36·28·16 /
   국내영업 16·20 / MES 28·36 / CRM 8·32 · 보드 열 8 / Data 업로드 띠 20 / EBD 라이브러리 띠 20 · 2단 16 · 읽는 법 20 / 관리자 띠 28 · 권한 16 / Schedule 16.
   원리: 간격은 담는 상자의 gap(12) 하나가 맡고, 자식의 위아래 여백은 0(흐름 배치 상자는 여백 12). 앱 규칙을 지우지 않고 여기서 덮는다 */
:root:root:root:root:root.lin-shell .shell .work .sum-host > :is(.lin-band, .kpis, .sum-p, .fx-grid3, .fx-tabs){margin-top:0 !important;margin-bottom:0 !important}
:root:root:root:root:root.lin-shell .shell .work .sum-row > :is(.sum-p, .lin-band){margin-top:0 !important;margin-bottom:0 !important}
:root:root:root:root:root.lin-shell .shell .work .sum-row > .sum-p.wide > .p-head{margin-top:0 !important}
:root:root:root:root:root.lin-shell .shell .work :is(.ovn, .rpn) > .lin-band:first-child{margin-top:0 !important}
:root:root:root:root:root.lin-shell .shell .work :is(.ovn, .rpn) > .kpis:last-child{margin-bottom:0 !important}
:root:root:root:root:root.lin-shell .shell .work :is(.fx-grid3, .lx-sec .grid, .lx-stack, .lb-2col, .cf-charts){gap:12px !important}
/* L1 앱별 — Dashboard(흐름 배치 · 띠 여백 20 → 12) */
:root:root:root:root:root.lin-shell .shell .work .lx-band{margin:12px 0 !important}
:root:root:root:root:root.lin-shell .shell .work .lx-band:first-child{margin-top:0 !important}
/* L1 앱별 — 국내영업(아이디 앞머리로 줄 간격 16 · 띠 판 여백 4/-4 를 걸어 둠) */
:root:root:root:root:root.lin-shell[data-app="krsales"] #pWork .sum-row{gap:12px !important;row-gap:12px !important;column-gap:12px !important}
:root:root:root:root:root.lin-shell[data-app="krsales"] #pWork .sum-row > .sum-p:has(> .p-body > .kl-band:only-child){margin-top:0 !important;margin-bottom:0 !important}
/* L1 앱별 — CRM 영업기회 보드 열 간격 8 → 12 */
:root:root:root:root:root.lin-shell[data-app="crm"] .shell .work .kb{gap:12px !important}
/* L1 앱별 — Data 업로드 · EBD 라이브러리 · Schedule(흐름 배치 띠 위 20/16 → 12) */
:root:root:root:root:root.lin-shell .shell .work .uph-band{margin-top:12px !important;margin-bottom:12px !important}
:root:root:root:root:root.lin-shell .shell .work .lb-host > .lb-band{margin-top:12px !important;margin-bottom:12px !important}
:root:root:root:root:root.lin-shell .shell .work .lb-host > .lb-band:first-child{margin-top:0 !important}
:root:root:root:root:root.lin-shell .shell .work .lb-host > .lb-note.cf-read{margin-top:12px !important}
:root:root:root:root:root.lin-shell .shell .work .ra-listtop{margin-top:12px !important}
/* L1 앱별 — Data RA 인증 마스터: 조회 판과 표 판 사이 안내 줄(.ranotice)이 표 화면 규칙(data.css 1015)에 투명·각짐으로 남아
   판 둘 사이가 60px 빈 칸처럼 보였다 → 안내 줄도 같은 카드(본래 data.css 1001 의 카드 문법) */
:root:root:root.lin-shell #pWork > .ranotice{border-radius:10px !important;background:var(--panel) !important;box-shadow:var(--lin-card-sh) !important;border:0 !important}
/* L1 앱별 — 관리자(띠 위 28 → 12 · 편집 권한 3단 16 → 12) */
:root:root:root:root:root.lin-shell[data-app="admin"] .work .lin-pg > .lin-sh{margin-top:12px !important;margin-bottom:12px !important}
:root:root:root:root:root.lin-shell[data-app="admin"] .work .permgrid{gap:12px !important}
/* 10-06 사용자 신고(메뉴를 열 때 예전 메뉴가 떴다가 바뀐다): 셸이 메뉴를 늦게 그리는 느린 진입에서, 새 사이드바가 서기 전 2.5초 만에
   대비책(스크립트 실패 시 옛 목록 다시 보이기)이 먼저 터졌다 → 대비책 대기를 12초로 늘림(위 linReveal). 그 사이 사이드바 자리는 빈 판 */
/* 10-06 모바일 M17 — 넓은 표 가로 스크롤 단서(앱 공통 · 폰 폭 ≤760 전용 · PC 무변경).
   오른쪽에 아직 열이 남아 있으면 표 감싸개에 .lin-xmore 를 단다(지금은 Dashboard dash_screens.js 의 xCue 가 단다).
   단서 = 오른쪽 가장자리 32px 흐림 하나로 통일 — 끝까지 굴리면 사라진다. 다른 앱도 같은 클래스를 달면 같은 그림이 된다 */
@media (max-width:760px){
  html.lin-shell .work .lin-xmore{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 32px),rgba(0,0,0,.12));mask-image:linear-gradient(to right,#000 calc(100% - 32px),rgba(0,0,0,.12))}
}
