/* ═══════════════════════════════════════════════════════════════════════
   lin_glass.css — 리퀴드 글래스 + iOS 문법 층 (2026-10-06 · Linear 미리보기 전용)
   근거: _ClaudeWorkspace/talent/디자이너/inbox/ref_linear_261001/디자인_레퍼런스_심층분석_261005.md (A1~A10)
   ★ 사용자 지시(10-05): "내가 세운 모든 규칙 다 무시하고 리퀴드 글래스·iOS 문법을 최대한 섞어 전 메뉴에".
     그래서 이 파일은 사내 화면 규칙(굵기·CI 색 등)을 따르지 않는다. 데이터·기능은 건드리지 않는다(그리는 층만).
   ★ linear_theme.css 뒤에 실린다(빌드가 머리에 넣는다). 색 치환 대상에서 뺐다 — 여기 색은 그대로 나간다.
   ★ 움직임 줄이기·투명도 줄이기 설정이면 효과를 끈다(맨 아래).
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 움직임 토큰: Apple 스프링 프리셋을 CSS linear() 로 구운 것(WWDC23 「Animate with springs」) ──
   smooth = 0.5s·튐 0(기본) · snappy = 0.4s·튐 0.1(누름·작은 전환) · bouncy = 0.5s·튐 0.35(팝업이 열릴 때) */
:root{
  --sp-smooth:linear(0, 0.011, 0.04, 0.082, 0.131, 0.186, 0.243, 0.301, 0.358, 0.413, 0.466, 0.515, 0.562, 0.605, 0.645, 0.682, 0.715, 0.746, 0.774, 0.799, 0.821, 0.841, 0.859, 0.876, 0.89, 0.903, 0.914, 0.925, 0.934, 0.942, 0.949, 0.955, 0.96, 0.965, 0.97, 0.973, 0.977, 0.98, 0.982, 0.984, 0.986, 0.988, 0.99, 0.991, 0.992, 0.993, 0.994, 0.995, 1);
  --sp-smooth-d:.6s;
  --sp-snappy:linear(0, 0.019, 0.068, 0.136, 0.214, 0.296, 0.377, 0.456, 0.53, 0.598, 0.659, 0.713, 0.761, 0.803, 0.838, 0.868, 0.894, 0.915, 0.933, 0.948, 0.96, 0.969, 0.977, 0.983, 0.988, 0.992, 0.995, 0.997, 0.998, 1, 1, 1.001, 1.001, 1.001, 1.002, 1.002, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1, 1, 1, 1);
  --sp-snappy-d:.5s;
  --sp-bouncy:linear(0, 0.032, 0.112, 0.222, 0.346, 0.473, 0.595, 0.705, 0.8, 0.879, 0.943, 0.991, 1.026, 1.049, 1.062, 1.067, 1.067, 1.063, 1.057, 1.049, 1.04, 1.031, 1.024, 1.017, 1.011, 1.006, 1.002, 0.999, 0.997, 0.996, 0.996, 0.995, 0.996, 0.996, 0.996, 0.997, 0.998, 0.998, 0.999, 0.999, 1);
  --sp-bouncy-d:.85s;
}

/* ── A1 바탕: 아주 옅은 색 안개 — 유리가 비칠 거리를 만든다(단색 바탕 위 유리는 유리로 안 읽힌다) ── */
:root{ --g0:#eceef4; --g1:rgba(94,106,210,.18); --g2:rgba(56,189,248,.16); --g3:rgba(167,139,250,.16); --g4:rgba(255,255,255,.7); }
:root[data-theme="dark"]{ --g0:#06070a; --g1:rgba(94,106,210,.26); --g2:rgba(14,165,233,.16); --g3:rgba(139,92,246,.18); --g4:rgba(255,255,255,0); }
html:is(.lin-shell,.lin-ios) body, html:is(.lin-shell,.lin-ios) .shell, html:root body.hubon .hub, html:root body.hubon .hub.show{
  background:
    radial-gradient(900px 700px at -5% -10%, var(--g1), transparent 62%),
    radial-gradient(800px 600px at 105% -5%, var(--g2), transparent 60%),
    radial-gradient(1100px 800px at 60% 115%, var(--g3), transparent 62%),
    radial-gradient(600px 400px at 40% 40%, var(--g4), transparent 70%),
    var(--g0) !important;
  background-attachment:fixed !important}

/* ── A2 재질: 사이드바 = 바탕이 비치는 유리 · 본문 판 = 표준 재질(살짝 비침) · 카드 = 위젯 유리(가장자리 빛) ── */
html:is(.lin-shell,.lin-ios) #rail, html:is(.lin-shell,.lin-ios) .rail, html:root body.hubon .hrail, html:root body.hubon .hshell{background:transparent !important}
html:is(.lin-shell,.lin-ios) .shell > .main, :root:root:root:root[data-shell="v2"] body.hubon .hubwrap{
  background:color-mix(in srgb, var(--canvas) 80%, transparent) !important;border:0 !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75), 0 0 0 .5px rgba(15,23,42,.08), 0 24px 70px -36px rgba(15,23,42,.38) !important}
:root[data-theme="dark"] html:is(.lin-shell,.lin-ios) .shell > .main, html[data-theme="dark"]:is(.lin-shell,.lin-ios) .shell > .main,
:root:root:root:root[data-shell="v2"][data-theme="dark"] body.hubon .hubwrap{
  background:color-mix(in srgb, var(--canvas) 78%, transparent) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 0 0 .5px rgba(255,255,255,.07), 0 30px 80px -30px rgba(0,0,0,.7) !important}
/* 위젯 유리(배경이 단조로워도 유리로 읽히는 5층 — 위가 밝은 테두리 빛 · 안쪽 위 1px · 옅은 광택 · 넓고 옅은 그림자 · 약한 비침).
   카드 모양은 Linear 층이 이 토큰 하나로 그린다 → 토큰만 바꾸면 전 메뉴 카드가 함께 바뀐다 */
:root:root:root:root[data-theme="light"], :root:root:root:root:not([data-theme]){
  --lin-card-sh:inset 0 1px 0 rgba(255,255,255,.95), inset 0 0 0 .5px rgba(255,255,255,.6), 0 0 0 .5px rgba(15,23,42,.07), 0 1px 2px rgba(15,23,42,.04), 0 14px 34px -18px rgba(15,23,42,.24);
  --lin-band:rgba(15,23,42,.045)}
:root:root:root:root[data-theme="dark"]{
  --lin-card-sh:inset 0 1px 0 rgba(255,255,255,.08), inset 0 0 0 .5px rgba(255,255,255,.05), 0 0 0 .5px rgba(0,0,0,.4), 0 18px 44px -20px rgba(0,0,0,.75);
  --lin-band:rgba(255,255,255,.05)}
/* 카드 면 = 위에서 아래로 아주 옅게 어두워지는 광택(위젯의 빛 받는 면) */
html:is(.lin-shell,.lin-ios) .work :is(.kpis, .card, .fcard){background-image:linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,0) 46%) !important}
html[data-theme="dark"]:is(.lin-shell,.lin-ios) .work :is(.kpis, .card, .fcard){background-image:linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,0) 46%) !important}

/* ── A4 리퀴드 글래스 공통 모양(굴절 필터는 lin_glass.js 가 크기에 맞춰 만들어 --lg-f 로 준다) ──
   Regular 변종: 흐림 + 채도 + 밝기 · 가장자리 반사광 · 밑에 내용이 지나가면 그림자가 진해진다(Apple 원칙) */
/* ⚠ position 은 건드리지 않는다 — 유리를 입는 것들은 원래 fixed·absolute·sticky 다. relative 를 주면 폰 메뉴 시트가
   본문 흐름으로 끌려 들어가 본문을 밀어냈다(10-06 실측) */
.lg{isolation:isolate;
  background:rgba(255,255,255,.42) !important;
  -webkit-backdrop-filter:blur(10px) saturate(190%) brightness(1.04);backdrop-filter:var(--lg-f, ) blur(10px) saturate(190%) brightness(1.04);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), inset 0 -1px 0 rgba(255,255,255,.25), inset 0 0 0 .5px rgba(255,255,255,.55),
             0 0 0 .5px rgba(15,23,42,.10), 0 10px 30px -12px rgba(15,23,42,.30) !important}
html[data-theme="dark"] .lg{background:rgba(28,30,36,.42) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16), inset 0 -1px 0 rgba(255,255,255,.04), inset 0 0 0 .5px rgba(255,255,255,.10),
             0 0 0 .5px rgba(0,0,0,.5), 0 14px 40px -14px rgba(0,0,0,.7) !important}
/* 누르면 안에서 빛난다(손끝에서 퍼짐) — 위치는 lin_glass.js 가 --px/--py 로 준다 */
.lg::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;z-index:-1;
  background:radial-gradient(160px circle at var(--px,50%) var(--py,50%), rgba(255,255,255,.55), transparent 60%);
  transition:opacity .45s var(--sp-smooth)}
.lg.lg-on::after{opacity:1;transition-duration:.12s}

/* ── A5 움직임 문법 ── */
/* 누름: 살짝 눌리고 놓으면 스프링으로 돌아온다(자주 쓰는 동작이라 0.96 정도로 짧게) */
html:is(.lin-shell,.lin-ios) :is(button, .btn, a.lin-app, .lin-brand, .nav, .vtab, .mstrip-b, .krds-seg > button, .fcard h4 a){
  transition:transform var(--sp-snappy-d) var(--sp-snappy), background-color .2s ease, color .2s ease, box-shadow .25s ease, opacity .2s ease}
html:is(.lin-shell,.lin-ios) :is(button, .btn, a.lin-app, .nav, .vtab, .mstrip-b):active:not(:disabled){transform:scale(.96);transition-duration:.08s}
/* 팝업·창은 누른 자리에서 '굴절이 생기며' 열린다(흐림 → 또렷 · 0.9 → 1 · 튐) */
@keyframes lgIn{from{opacity:0;transform:scale(.9);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes lgUp{from{transform:translateY(105%)}to{transform:none}}
html:is(.lin-shell,.lin-ios) .pop:not([hidden]){animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:top right}
html:is(.lin-shell,.lin-ios) dialog.palette[open] .pal-box{animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:top center}
html:is(.lin-shell,.lin-ios) .modal-box, html:is(.lin-shell,.lin-ios) .sheet-card{animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both}
html:is(.lin-shell,.lin-ios) .work > .lin-in{animation-timing-function:var(--sp-smooth) !important;animation-duration:var(--sp-smooth-d) !important}
/* 팝업·창·명령 팔레트 = 리퀴드 글래스(두꺼운 재질: 그림자 깊게) */
html:is(.lin-shell,.lin-ios) .pop, html:is(.lin-shell,.lin-ios) .pal-box, html:is(.lin-shell,.lin-ios) .modal-box{border:0 !important;border-radius:18px !important}
html:is(.lin-shell,.lin-ios) dialog.palette::backdrop{background:rgba(10,12,20,.28);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}

/* ── A8 알림 = 위에서 내려오는 섬(Dynamic Island) ── */
html:is(.lin-shell,.lin-ios) .toast{top:calc(10px + env(safe-area-inset-top,0px)) !important;bottom:auto !important;left:50% !important;
  transform:translateX(-50%) translateY(-30px) scale(.6) !important;border-radius:999px !important;padding:11px 20px !important;
  background:rgba(10,10,12,.88) !important;color:#fff !important;font-weight:500;
  -webkit-backdrop-filter:blur(24px) saturate(160%);backdrop-filter:blur(24px) saturate(160%);
  box-shadow:0 14px 44px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.14) !important;
  transition:transform var(--sp-bouncy-d) var(--sp-bouncy), opacity .25s ease !important}
html:is(.lin-shell,.lin-ios) .toast.show{transform:translateX(-50%) translateY(0) scale(1) !important}

/* ── A3 메뉴 접기 O2 — Linear 처럼 사이드바를 통째로 숨기고, 화면 왼쪽 끝에 마우스를 대면 유리 패널로 잠깐 펼친다 ── */
.lin-edge{display:none}
.lin-open{display:none}
@media (min-width:1025px){
  html:is(.lin-shell,.lin-ios) body.rail-collapsed .shell{grid-template-columns:0 minmax(0,1fr) !important}
  html:is(.lin-shell,.lin-ios) body.rail-collapsed #mstrip{display:none !important}
  html:is(.lin-shell,.lin-ios) body.rail-collapsed .shell > .main{grid-column:2;margin-left:8px !important}
  html:is(.lin-shell,.lin-ios):is(.lin-shell,.lin-ios) body.rail-collapsed #rail{display:block !important;position:fixed !important;left:8px;top:8px;bottom:8px;
    width:var(--lin-floatw) !important;z-index:90;border-radius:18px;padding:8px 10px !important;overflow:hidden;
    transform:translateX(calc(-100% - 24px));visibility:hidden !important;transition:transform var(--sp-smooth-d) var(--sp-smooth), visibility 0s linear var(--sp-smooth-d)}
  /* 셸의 접힘 규칙이 visibility:hidden 을 건다 → 펼쳐 볼 때만 되살린다(숨어 있을 때는 Tab 키가 안 들어가게 그대로 숨김) */
  html:is(.lin-shell,.lin-ios).lin-peek.lin-peek body.rail-collapsed #rail{transform:none;visibility:visible !important;transition:transform var(--sp-smooth-d) var(--sp-smooth), visibility 0s}
  html:is(.lin-shell,.lin-ios) body.rail-collapsed .lin-edge{display:block;position:fixed;left:0;top:0;bottom:0;width:14px;z-index:89}
  html:is(.lin-shell,.lin-ios) body.rail-collapsed .lin-open{display:inline-grid}
  /* 허브도 같다 */
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .hshell{width:0 !important;overflow:visible !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .hstrip{display:none !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .hrail{display:block !important;position:fixed !important;left:8px !important;top:8px;bottom:8px;
    width:var(--lin-floatw) !important;height:auto !important;z-index:90;border-radius:18px;padding:8px 10px !important;
    transform:translateX(calc(-100% - 24px));transition:transform var(--sp-smooth-d) var(--sp-smooth)}
  :root:root:root:root.lin-peek[data-shell="v2"] body.hubon.rail-collapsed .hrail{transform:none;visibility:visible !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .hrail .lin-side{display:flex !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .hubwrap,
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed.hubboard #hub .hubwrap{margin-left:8px !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .corner{left:9px !important;clip-path:none !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .lin-edge{display:block;position:fixed;left:0;top:0;bottom:0;width:14px;z-index:89}
  /* ★ 10-14 사용자 「메뉴 접은 상태에서 마우스를 대면 메뉴 판이 투명하게 뜬다 · 전 메뉴 조사해서 처리」.
     ⛔ 원인: 위 A2 `html:is(.lin-shell,.lin-ios) #rail{background:transparent !important}`(유리 시절 · 아이디 특이도)가
        떠오른 판의 단색 판 규칙(`.rail.lg{background:var(--panel)}`)을 이겨, 판 밑 표 글자가 메뉴와 겹쳐 보였다.
        10-06 에 좁은 창·폰 서랍만 고쳤고 넓은 창(≥1025) 접힘 판이 빠졌다. 10-14 나현 사원이 MES·해외영업만
        sales_linear.css 에서 막았다(그 앱 파일이라 다른 앱은 못 고침) → **셸 한 곳에서 전 앱(+허브)을 막는다.**
     · 접힌 채 떠오르는 판만 단색 판으로. 펼쳐 고정한 사이드바는 그대로(바탕 안개가 비치는 유리).
     · sales_linear.css 의 같은 블록은 같은 값이라 겹쳐도 무해 — 메뉴 담당이 지워도 된다. */
  html:is(.lin-shell,.lin-ios):is(.lin-shell,.lin-ios) body.rail-collapsed #rail,
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .hrail{
    background:var(--panel, var(--canvas, #fff)) !important;background-image:none !important;
    box-shadow:0 0 0 .5px rgba(15,23,42,.10), 0 24px 60px -24px rgba(15,23,42,.35) !important}
  html[data-theme="dark"]:is(.lin-shell,.lin-ios):is(.lin-shell,.lin-ios) body.rail-collapsed #rail,
  :root:root:root:root[data-shell="v2"][data-theme="dark"] body.hubon.rail-collapsed .hrail{
    box-shadow:0 0 0 .5px rgba(255,255,255,.08), 0 30px 70px -24px rgba(0,0,0,.75) !important}
}
/* ★ 10-13 사용자 「홈 메뉴 누르면 사이드바 너비가 넓었다가 좁아져」 — 이 판의 셸 규칙은 종전에 html.lin-shell(홈은 .lin-hub)에 걸려 있었다.
   그 표시는 linear_theme.js 가 새 사이드바를 **세운 뒤에야** 붙는데(defer · 문서 읽기가 끝난 뒤, MES 실측 첫 그리기 +1.3초),
   그 사이에는 옛 셸 치수(홈 304 · 접힘 띠 64 · 폰 머리 80)로 그려졌다가 바뀌어 본문이 56~60px 옆으로 튀었다.
   → 셸 치수 규칙은 **첫 그리기부터 참인 조건**에 건다: 앱 = .lin-ios(문서 머리 스크립트가 동기로 붙임) · 홈 = body.hubon.
     「아직 안 세워졌다」를 뜻하는 :not(.lin-shell)·:not(.lin-hub)(옛 내용 감추기·12초 대비책)만 종전 표시 그대로다.
   ⚠ 새 셸 규칙을 더할 때 html.lin-shell 하나만 쓰지 말 것 — html:is(.lin-shell,.lin-ios) 로 쓴다(rail_width_probe.py 가 잡는다).
   대비책: 접힘 상태에서 새 사이드바가 끝내 안 서면 펼칠 단추가 없다 → 옛 아이콘 띠를 12초 뒤 겹쳐 띄운다(자리 차지 없음 · 본문 안 밀림) */
/* ★ 10-13 머리 줄 안 단추가 늦게 끼어들어 옆 단추가 밀리던 것(rail_width_probe·머리 줄 실측, 1440):
   ① 앱 · 「화면 크기」 단추(.lin-zbtn)와 이름 칸 ▾ 를 이 판 스크립트가 나중에 넣어 오른쪽 단추 묶음이 왼쪽으로 밀렸다
      → 넣기 전에는 같은 크기 빈 칸을 먼저 둔다(단추 28px · ▾ 14px, 묶음 간격 그대로).
   ② 앱 접힘 · 「사이드바 열기」 단추(.lin-open)가 나중에 맨 앞에 들어와 열린 화면 탭이 54px 오른쪽으로 밀렸다 → 같은 자리 빈 칸(32 + 6).
   ③ 홈 · 오른쪽 위 묶음(바로가기 → 단추 다섯 · 이름 → 머리글자 원)이 1.3초 동안 다섯 번 바뀌며 오갔다 → 다 갖춰질 때까지(단추 · 머리글자 원 · 이름) 감춘다
      (12초 안에 안 갖춰지면 그대로 보인다). 머리 줄 안쪽 여백이 홈에 들어올 때 0.45초 동안 40 → 16px 로 미끄러지던 것(로그인 화면용 움직임)도 끈다. */
@media (min-width:761px){
  /* 단추가 들어갈 그릇 = 검색 단추의 부모(zoomBtn 과 같은 규칙) — 앱 대부분은 .gright, Data 는 .tb-r */
  html:is(.lin-shell,.lin-ios) .shell > .main > header :has(> #searchBtn):not(:has(> .lin-zbtn))::before{content:"";flex:none;width:28px;height:28px}
  /* 이름 칸 ▾(.lin-gcaret, gmeMenu)도 나중에 붙어 묶음이 26px 밀렸다 → 붙기 전에는 같은 폭 빈 칸(14 + 왼쪽 4) */
  html:is(.lin-shell,.lin-ios) .shell > .main > header .gme:not(:has(> .lin-gcaret))::after{content:"";flex:none;width:14px;height:14px;margin-left:4px}
  /* 이름 칸 높이 = 픽셀 캐릭터 얼굴(32px)이 늦게 들어와도 같게(종전 26 → 32 로 커지며 위로 4px 움직였다) */
  html:is(.lin-shell,.lin-ios) .shell > .main > header .gme{min-height:32px;box-sizing:border-box}
}
@media (min-width:1025px){
  html:is(.lin-shell,.lin-ios) body.rail-collapsed .shell > .main > header:not(:has(> .lin-open))::before{content:"";flex:none;width:32px;height:32px;margin-right:6px}
}
/* ④ 스크롤 막대 자리 미리 잡기 — 자료가 들어와 본문이 길어지는 순간 세로 막대(홈 15px · 앱 10px)가 생기며 본문 폭이 줄어
      카드·표 열이 다시 배치됐다(실브라우저 문서 이동 실측: 홈 「위젯 편집」 15px · 해외영업 표 머리 칸 5~10px 이동). 화면 폭에서만(폰은 겹쳐 뜨는 막대라 해당 없음) */
@media (min-width:761px){
  html:is(.lin-shell,.lin-ios) .shell > .main > .work,
  :root:root:root:root[data-shell="v2"] body.hubon #hub .hubwrap{scrollbar-gutter:stable}
}
@media (min-width:901px){
  :root:root:root:root[data-shell="v2"] body.hubon .corner{transition-property:background !important}
  :root:root:root:root[data-shell="v2"] body.hubon .corner:not(:has(> .quick > .lin-htool[data-k="bell"])) > :is(.quick, .who),
  :root:root:root:root[data-shell="v2"] body.hubon .corner > .who:not(:has(> .lin-av)),
  :root:root:root:root[data-shell="v2"] body.hubon .corner:has(> .who #whoName:empty) > :is(.quick, .who){visibility:hidden;animation:linReveal 0s 12s forwards}
}
@media (min-width:1025px){
  html:not(.lin-shell) body.rail-collapsed .shell > #mstrip{display:flex !important;position:fixed !important;left:0;top:0;bottom:0;z-index:91;
    visibility:hidden;animation:linReveal 0s 12s forwards}
}
/* 머리줄 왼쪽 「사이드바 열기」 단추(접혔을 때만) */
.lin-open{width:32px;height:32px;place-items:center;border:0;border-radius:9px;background:transparent;color:var(--ink-2);cursor:pointer;margin-right:6px;flex:none}
.lin-open:hover{background:var(--lin-band)}
.lin-open svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* ── A5 스크롤 가장자리 효과: 내용이 반투명 머리줄 밑으로 들어가면 녹아 사라진다 ──
   머리 고정 표가 있으면 Apple 은 경계를 딱 끊는 방식 — 고정 머리 위치를 머리줄 바로 아래(44)로 둬 그 위만 녹인다 */
@media (min-width:1025px){
  /* (고정 머리 위치는 linear_theme.css 한 곳에서 — 여기서 44 로 덮어 머리가 95px 아래에 떴다 · 10-06) */
  html.lin-ios .shell > .main.lin-glass > .work[data-lin-scrolled]{-webkit-mask-image:linear-gradient(to bottom, transparent 0, rgba(0,0,0,.35) 18px, #000 46px);mask-image:linear-gradient(to bottom, transparent 0, rgba(0,0,0,.35) 18px, #000 46px)}
  html.lin-ios .shell > .main > header:is(.topbar, .gbar).lg{background:color-mix(in srgb, var(--canvas) 34%, transparent) !important}
}

/* ── A10 칸 단추: 선택 알약이 미끄러지듯 이동(lin_glass.js 가 .lin-thumb 을 움직인다) ── */
.lin-seg-host{position:relative !important}
.lin-thumb{position:absolute;top:2px;left:0;height:calc(100% - 4px);border-radius:7px;pointer-events:none;z-index:0;
  background:var(--panel);box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05);
  transition:transform var(--sp-snappy-d) var(--sp-snappy), width var(--sp-snappy-d) var(--sp-snappy)}
html[data-theme="dark"] .lin-thumb{background:color-mix(in srgb, var(--ink) 20%, transparent);box-shadow:0 2px 6px rgba(0,0,0,.35)}
.lin-seg-host > :is(button, [role="tab"]){position:relative;z-index:1}
:root:root:root:root:root.lin-ios .shell .lin-seg-host > :is(button, [role="tab"]){background:transparent !important;box-shadow:none !important}

/* ═══ A6·A7 모바일 — 유명 SaaS 앱(Linear·Notion·Slack) 모바일 문법 ═══════════════════════════════════
   위: iOS 내비 막대(앱 이름 · 검색 · 알림 · 나) · 큰 제목 · 아래: 떠 있는 유리 탭 막대(홈 · 메뉴 · 검색 · 알림 · 나)
   메뉴: 왼쪽 서랍 대신 아래에서 올라오는 시트(잡는 손잡이) · 열린 탭 줄은 메뉴 시트 안으로 */
.lin-tabbar{display:none}
@media (max-width:760px){
  /* 10-13 높이 고정(--lin-mhead · linear_theme.css) — 종전 min-height 52 · height auto 는 제목(.lin-mtitle, 줄 높이 40)이 늦게 들어오면 52 → 53 으로 1px 출렁였다 */
  html:is(.lin-shell,.lin-ios) .shell > .main > header:is(.gbar, .topbar){box-sizing:border-box !important;height:var(--lin-mhead,53px) !important;min-height:var(--lin-mhead,53px) !important;padding:6px 10px 6px 16px !important;
    background:color-mix(in srgb, var(--canvas) 70%, transparent) !important;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);
    border-bottom:.5px solid var(--line-2) !important;position:sticky;top:0;z-index:20}
  html:is(.lin-shell,.lin-ios) .shell > .main > header #railBtn, html:is(.lin-shell,.lin-ios) .shell > .main > header .vtabs,
  html:is(.lin-shell,.lin-ios) .shell > .main > header #favBtn, html:is(.lin-shell,.lin-ios) .shell > .main > header #themeBtn{display:none !important}
  /* 아래 탭 막대가 검색·알림·나를 맡으므로 위 줄은 앱 이름 하나만(iOS 내비 막대) — 단추는 숨겨도 탭 막대가 그대로 누른다 */
  /* 단추를 지우면(display:none) 위치가 0 이 되어 알림 팝업이 엉뚱한 데 뜬다 → 자리는 두고 보이지만 않게 */
  html:is(.lin-shell,.lin-ios) .shell > .main > header .gright{position:absolute !important;right:8px;top:6px;opacity:0 !important;pointer-events:none !important}
  html:is(.lin-shell,.lin-ios) .shell > .main > header .mb-name{display:none !important}
  .lin-mtitle{display:block;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:40px;font-size:17px;font-weight:600;color:var(--ink);letter-spacing:-.3px}
  /* 11-04 사용자 「새로고침·메뉴 클릭 때 헤더 글자가 움직이며 다시 정렬」 · 폰 실측(390): 제목(.lin-mtitle)을 이 판 스크립트(defer)가 첫 그리기 뒤
     0.4초에 맨 앞에 끼워 넣어, 머리줄에 먼저 서 있던 것(팀 공간 경로 줄)이 182px 오른쪽으로 밀렸다 → 넣기 전에는 같은 자리 빈 칸(flex 1 · 줄 높이 40) */
  html:is(.lin-shell,.lin-ios) .shell > .main > header:is(.gbar, .topbar):not(:has(> .lin-mtitle))::before{content:"";display:block;flex:1;min-width:0;height:40px}
  /* 알림 팝업 = 탭 막대 위로 올라오는 시트 */
  html:is(.lin-shell,.lin-ios) .pop{left:8px !important;right:8px !important;top:auto !important;bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;width:auto !important;
    max-height:calc(62dvh * var(--zk, 1));overflow:auto;border-radius:22px !important;transform-origin:bottom center !important}
  /* (옛 .mb-name 제목 규칙은 .lin-mtitle 로 대체) */
  html:is(.lin-shell,.lin-ios) .shell > .main > .work{padding-bottom:calc(104px + env(safe-area-inset-bottom,0px)) !important}
  html.lin-ios .work h1[data-screen-title]{font-size:34px !important;letter-spacing:-.8px !important;margin:2px 0 12px !important;padding:0 4px !important}
  /* 떠 있는 유리 탭 막대 */
  .lin-tabbar{display:flex;position:fixed;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));height:64px;z-index:85;
    border-radius:32px;padding:6px;gap:2px;align-items:stretch;justify-content:space-between}
  .lin-tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;
    color:var(--ink-2);font-size:10.5px;font-weight:600;border-radius:26px;min-width:0;cursor:pointer;-webkit-tap-highlight-color:transparent;position:relative}
  .lin-tabbar button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  .lin-tabbar button.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 13%, transparent)}
  .lin-tabbar button .lin-badge{position:absolute;top:6px;left:calc(50% + 6px);min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#ff3b30;color:#fff;font-size:10px;line-height:16px;font-weight:700}
  /* 메뉴 = 아래서 올라오는 시트 */
  /* 10-06 QA B12b: 시트 아래쪽 항목이 떠 있는 탭 막대(64+10) 밑으로 들어가 가렸다 → 시트를 탭 막대 위에서 멈춘다 */
  :root:root[data-shell="v2"]:is(.lin-shell,.lin-ios) .rail{left:8px !important;right:8px !important;top:auto !important;bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;width:auto !important;height:auto !important;
    max-height:calc(calc(100dvh * var(--zk, 1)) - 140px - env(safe-area-inset-bottom,0px));border-radius:26px !important;padding:14px 10px calc(10px + env(safe-area-inset-bottom,0px)) !important;overflow:auto;
    transform:translateY(calc(100% + 24px)) !important;transition:transform var(--sp-smooth-d) var(--sp-smooth) !important;z-index:95 !important}
  :root:root[data-shell="v2"]:is(.lin-shell,.lin-ios) .rail.open{transform:none !important}
  :root:root[data-shell="v2"]:is(.lin-shell,.lin-ios) .rail::before{content:"";display:block;width:38px;height:5px;border-radius:3px;background:var(--ink-4);opacity:.5;margin:0 auto 8px}
  :root:root[data-shell="v2"]:is(.lin-shell,.lin-ios) .rail .lin-side{height:auto !important;overflow:visible !important}
  /* 입력칸: iOS 채움 칸 · 16px(아이폰 확대 방지) · 44px */
  html:is(.lin-shell,.lin-ios) .work :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea){font-size:16px !important;min-height:44px;border-radius:12px !important}
  /* 10-08 사용자 「글자 크게 보이는 곳 모바일 고려해서 전체 조사 후 조정」(관리자 사용자 목록 · 이름 칸·직책 고르는 칸이 표 머리보다 훨씬 컸다)
     위 16px·44px 은 혼자 서 있는 입력칸(검색·조회 조건·폼) 몫인데 표·격자 칸 안의 칸(줄 내용)까지 키워 한 화면에 7줄만 보였다.
     실측 390 전 메뉴: 관리자 사용자·부서 표 · Data 편집 격자(4천여 칸) · 국내영업 사용자 명단 → 줄 안 칸은 본문 14px · 높이 36 으로.
     ⚠ 폼 카드로 바뀐 MES 표(.form-panel 안 · 주문/PI 품목 등)는 빼고 그대로 16·44 · 여러 줄 메모(textarea)도 그대로.
     ⚠ 아이폰은 16px 미만 칸을 누르면 화면을 확대한다 → 문서 머리 viewport 처리(셸 공통)와 같이 나가야 한다. */
  html:is(.lin-shell,.lin-ios) .work :is(td, .tabulator-cell) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select):not(.form-panel *){font-size:14px !important;min-height:36px}
  /* 격자(tabulator) 줄은 높이가 고정(35)이라 36·44 칸은 줄 밖으로 잘린다 → 칸 높이는 앱 값(26~28)으로 두고 누르는 면은 칸 전체 */
  html:is(.lin-shell,.lin-ios) .work .tabulator-cell :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select):not(.form-panel *){min-height:0}
  /* 열린 탭(메뉴 시트 안 「열린 화면」) */
  .lin-opentabs{display:flex;gap:6px;overflow-x:auto;padding:4px 6px 10px;margin:0 0 6px;scrollbar-width:none}
  .lin-opentabs button{flex:none;height:34px;padding:0 12px;border-radius:17px;border:0;background:var(--lin-band);color:var(--ink-2);font-size:13px;font-weight:500}
  .lin-opentabs button.on{background:var(--accent);color:#fff}
}
/* 허브 폰도 같은 탭 막대 · 서랍 대신 시트 */
@media (max-width:900px){
  html.lin-hub .lin-mtop button{display:none}
  html.lin-hub .lin-mtop{padding-left:18px}
  html.lin-hub .lin-mtop b{font-size:17px}
  :root:root:root:root[data-shell="v2"] body.hubon .hshell{left:8px !important;right:8px !important;top:auto !important;bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;width:auto !important;
    max-height:calc(calc(100dvh * var(--zk, 1)) - 140px - env(safe-area-inset-bottom,0px));border-radius:26px !important;transform:translateY(calc(100% + 24px)) !important;transition:transform var(--sp-smooth-d) var(--sp-smooth) !important}
  :root:root:root:root[data-shell="v2"] body.hubon.lin-drawer .hshell{transform:none !important}
  :root:root:root:root[data-shell="v2"] body.hubon .hrail{height:auto !important;max-height:calc(calc(100dvh * var(--zk, 1)) - 140px - env(safe-area-inset-bottom,0px));overflow:auto !important}
  :root:root:root:root[data-shell="v2"] body.hubon .hubwrap{padding-bottom:calc(100px + env(safe-area-inset-bottom,0px)) !important}
  html.lin-hub .lin-tabbar{display:flex;position:fixed;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));height:64px;z-index:85;
    border-radius:32px;padding:6px;gap:2px;align-items:stretch}
  html.lin-hub .lin-tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;
    color:var(--ink-2);font-size:10.5px;font-weight:600;border-radius:26px;cursor:pointer}
  html.lin-hub .lin-tabbar button svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
  html.lin-hub .lin-tabbar button.on{color:var(--accent);background:color-mix(in srgb, var(--accent) 13%, transparent)}
}

/* ── 접근성: 투명도 줄이기 → 불투명 · 움직임 줄이기 → 움직임 끔 ── */
@media (prefers-reduced-transparency:reduce){
  .lg{background:var(--panel) !important;-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-reduced-motion:reduce){
  html:is(.lin-shell,.lin-ios) *, html.lin-hub *{animation-duration:.01ms !important;transition-duration:.01ms !important}
}
/* 큰 유리(메뉴 시트·접힌 사이드바·팝업·창)는 더 두꺼운 재질 — 글자가 많아 덜 비치게(Apple: 클수록 두꺼워진다) */
/* 10-06 QA B12: 0.74 로는 밑의 카드 글자·막대 색이 비쳐 겹쳐 읽혔다 → 0.88 + 흐림 28px(Apple Regular 의 '두꺼운' 쪽) */
:is(.rail, .hrail, .hshell, .pop, .pal-box, .modal-box, .sheet-card, .lin-me).lg{background:var(--lg-thick) !important;
  -webkit-backdrop-filter:blur(34px) saturate(210%) brightness(1.06);backdrop-filter:var(--lg-f, ) blur(34px) saturate(210%) brightness(1.06)}
html[data-theme="dark"] :is(.rail, .hrail, .hshell, .pop, .pal-box, .modal-box, .sheet-card, .lin-me).lg{background:var(--lg-thick) !important}

/* ── 메뉴 안의 떠 있는 부품 14종(10-06 전수 조사: 셸 core 의 창 .mdl · 서랍 .drawer · 날짜 .dp · 목록 상자 .cbo-pop ·
      행 미리보기 .rowpeek · 언급 .mentions · 탭 넘침 .vtab-ovlist · 말풍선 .shelltip/.htip/.krtip/.ra-tip ·
      CRM 빠른 입력 .qa/.qa-fab · 허브 내 정보 .sheet-card · Dashboard .modal) — 유리 + 스프링 ── */
:is(.mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions).lg{background:var(--lg-thick) !important;
  -webkit-backdrop-filter:blur(34px) saturate(210%) brightness(1.06);backdrop-filter:var(--lg-f, ) blur(34px) saturate(210%) brightness(1.06)}
html[data-theme="dark"] :is(.mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions).lg{background:var(--lg-thick) !important}
html:is(.lin-shell,.lin-ios) .modal{background:rgba(10,12,20,.22) !important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
html:is(.lin-shell,.lin-ios) .mdl{border:0 !important;border-radius:22px !important;animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both}
html:is(.lin-shell,.lin-ios) :is(.dp, .cbo-pop, .vtab-ovlist, .rowpeek){border:0 !important;border-radius:16px !important;animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:top left}
/* 서랍 = 오른쪽에 떠 있는 판(iPad 식) · 스프링으로 들어온다 */
@media (min-width:761px){
  html:is(.lin-shell,.lin-ios) .drawer{top:8px !important;right:8px !important;bottom:8px !important;border:0 !important;border-radius:22px !important;
    transform:translateX(calc(100% + 24px)) !important;transition:transform var(--sp-smooth-d) var(--sp-smooth) !important}
  html:is(.lin-shell,.lin-ios) .drawer.open{transform:none !important}
}
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .drawer{left:0 !important;right:0 !important;top:auto !important;bottom:0 !important;width:auto !important;max-width:none !important;max-height:calc(88dvh * var(--zk, 1));
    border:0 !important;border-radius:26px 26px 0 0 !important;transform:translateY(105%) !important;transition:transform var(--sp-smooth-d) var(--sp-smooth) !important}
  html:is(.lin-shell,.lin-ios) .drawer.open{transform:none !important}
  html:is(.lin-shell,.lin-ios) .mdl{border-radius:26px 26px 0 0 !important;align-self:flex-end;animation:lgUp var(--sp-smooth-d) var(--sp-smooth) both}
  html:is(.lin-shell,.lin-ios) .modal{align-items:flex-end !important;padding:0 !important}
}
/* 말풍선 = 작은 어두운 유리 알약 */
html:is(.lin-shell,.lin-ios) :is(.shelltip, .htip, .krtip, .ra-tip){background:rgba(18,18,22,.86) !important;color:#fff !important;border:0 !important;border-radius:9px !important;
  -webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);
  box-shadow:0 8px 24px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.12) !important;font-weight:500}
/* CRM 폰 빠른 입력 단추 = 남보라로 물든 유리 원 */
html:is(.lin-shell,.lin-ios) .qa-fab{border-radius:999px !important;background:color-mix(in srgb, var(--accent) 82%, transparent) !important;
  -webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);
  box-shadow:0 12px 30px -8px color-mix(in srgb, var(--accent) 60%, transparent), inset 0 1px 0 rgba(255,255,255,.35) !important}
@media (max-width:760px){ html:is(.lin-shell,.lin-ios) .qa-fab{bottom:calc(86px + env(safe-area-inset-bottom,0px)) !important} }

/* ── 10-06 Dashboard 창 머리(QA B13): 흰 사각 띠(sticky·#fff·좌우 여백 0)가 유리 창과 따로 놀았다 → 창 가장자리까지 닿는 유리 띠 ── */
html:is(.lin-shell,.lin-ios) #dashModal .modal-h{margin:-20px -22px 8px !important;padding:18px 22px 10px !important;border-radius:18px 18px 0 0;
  /* 10-07 G12: 유리 폐기 — 반투명 72%·흐림이 남아 지나가는 줄이 비쳤다 → 판 색 불투명 */
  background:var(--panel) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;
  border-bottom:.5px solid var(--line-2) !important}
@media (max-width:600px){ html:is(.lin-shell,.lin-ios) #dashModal .modal-h{margin:-16px -14px 8px !important;padding:14px 14px 10px !important} }

/* ── 10-06 폰 「나」 시트(QA B8 — 종전엔 숨은 이름표를 대신 눌러 아무 일도 없었다) ── */
.lin-me{display:none}
.lin-me.on{display:block;position:fixed;left:8px;right:8px;bottom:calc(84px + env(safe-area-inset-bottom,0px));z-index:96;border-radius:24px;padding:16px;
  animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:bottom center}
.lin-me .lm-who{display:flex;align-items:center;gap:12px;padding:4px 4px 14px;border-bottom:.5px solid var(--line-2)}
.lin-me .lm-av{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--lin-band);font-size:17px;font-weight:600;color:var(--ink);flex:none}
.lin-me .lm-n{font-size:16px;font-weight:600;color:var(--ink)}
.lin-me .lm-t{font-size:13px;color:var(--ink-3);margin-top:2px}
.lin-me button{display:flex;align-items:center;justify-content:space-between;width:100%;height:48px;padding:0 6px;border:0;background:transparent;
  font-size:15px;color:var(--ink);border-bottom:.5px solid var(--line-2);cursor:pointer}
.lin-me button:last-child{border-bottom:0}
.lin-me button span{color:var(--ink-3);font-size:13px}
@media (min-width:761px){ .lin-me.on{display:none} }

/* ── 10-06 QA B36: 폰 위 줄이 앱마다 달랐다(Dashboard·Data·EBD 라이브러리는 검색·알림 아이콘이 .gright 밖에 있어 보였다).
      아래 탭 막대가 검색·알림·나를 맡으므로 위 줄은 어느 앱이든 화면 이름 하나 — 단추는 자리만 두고(팝업 기준점) 안 보이게 ── */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .shell > .main > header :is(#searchBtn, #bellBtn, .gme){position:absolute !important;right:8px;top:6px;opacity:0 !important;pointer-events:none !important}
  /* 메뉴 시트 오른쪽 위 단추 = 닫기(✕). 종전엔 데스크톱의 '사이드바 접기' 그림이 그대로 나왔다 */
  html:is(.lin-shell,.lin-ios) .rail .lin-ws .lin-ib svg{display:none}
  html:is(.lin-shell,.lin-ios) .rail .lin-ws .lin-ib{width:32px;height:32px;background:var(--lin-band)}
  html:is(.lin-shell,.lin-ios) .rail .lin-ws .lin-ib::before{content:"";width:12px;height:12px;background:currentColor;
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
    mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
  /* QA B29(10-06): Data 는 작업면 좌우 여백이 0 이라 큰 제목에만 16px 을 따로 줬었다.
     10-09 Data 작업면 여백을 다른 앱과 같게 되돌렸으므로(data.css · 아래 F17) 이 따로 규칙은 걷는다 —
     남겨 두면 Data 제목만 12 + 16 = 28px(다른 앱 12 + 4 = 16px)에서 시작한다 */
}

/* ── 10-06 사용자 지적(토글이 서로 다름): 모양 = 장비·소모품(iOS 칸 단추) · 움직임 = Schedule 처럼 고른 알약이 미끄러져 이어짐 ──
   ① Schedule(.ra-toggle)은 자기 알약(.ra-pill)이 이미 미끄러진다 → 모양만 iOS 칸 단추로(흰 테두리 막대 · 칸 사이 세로선 → 회색 홈 · 흰 알약)
   ② 나머지 칸 단추는 lin_glass.js 가 고른 칸의 자리를 홈의 변수(--lin-tx·--lin-tw…)로만 알려 주고, 알약은 홈의 ::before 가 그린다.
      ⛔ 자식 요소를 끼워 넣지 않는다(10-06 앞서 끼워 넣은 알약을 앱이 단추로 바꿔 빈 흰 알약이 남았다 · QA B11) */
html:is(.lin-shell,.lin-ios) .ra-toggle{height:auto !important;padding:2px !important;gap:2px;border-radius:9px !important;
  background:color-mix(in srgb, var(--ink) 7%, transparent) !important;box-shadow:none !important}
html:is(.lin-shell,.lin-ios) .ra-seg{height:28px;padding:0 12px !important;border-radius:7px;font-size:13px !important;font-weight:500 !important;color:var(--ink-2) !important}
html:is(.lin-shell,.lin-ios) .ra-seg[aria-selected="true"]{color:var(--ink) !important}
html:is(.lin-shell,.lin-ios) .ra-seg + .ra-seg::before{display:none !important}
html:is(.lin-shell,.lin-ios) .ra-pill{top:2px !important;bottom:2px !important;border-radius:7px !important;background:var(--panel) !important;
  box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05);
  transition:transform var(--sp-snappy-d) var(--sp-snappy), width var(--sp-snappy-d) var(--sp-snappy) !important}
html:is(.lin-shell,.lin-ios) .ra-pill.no-anim{transition:none !important}
html[data-theme="dark"]:is(.lin-shell,.lin-ios) .ra-pill{background:color-mix(in srgb, var(--ink) 20%, transparent) !important;box-shadow:0 2px 6px rgba(0,0,0,.35)}
@media (max-width:760px){ html:is(.lin-shell,.lin-ios) .ra-seg{height:40px} }

.lin-seg-anim{position:relative !important;isolation:isolate}
.lin-seg-anim::before{content:"";position:absolute;left:0;top:0;width:var(--lin-tw,0);height:var(--lin-th,0);transform:translate(var(--lin-tx,0),var(--lin-ty,0));
  border-radius:7px;background:var(--panel);box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05);pointer-events:none;z-index:0;
  transition:transform var(--sp-snappy-d) var(--sp-snappy), width var(--sp-snappy-d) var(--sp-snappy), height var(--sp-snappy-d) var(--sp-snappy)}
.lin-seg-anim.lin-seg-now::before{transition:none}
html[data-theme="dark"] .lin-seg-anim::before{background:color-mix(in srgb, var(--ink) 20%, transparent);box-shadow:0 2px 6px rgba(0,0,0,.35)}
.lin-seg-anim > :is(button, [role="tab"]){position:relative;z-index:1}
/* 고른 칸의 흰 바탕은 알약이 대신 그린다(칸 단추 규칙의 특이도가 높아 앞머리를 겹쳐 올린다) */
:root:root:root:root:root:root:root:root:root:root:root:root .lin-seg-anim > :is(button, [role="tab"]){background:transparent !important;box-shadow:none !important}
@media (prefers-reduced-motion:reduce){ .lin-seg-anim::before{transition:none} }

/* ── 10-06 떠 있는 층 전부 같은 유리(사용자 지적: 팝업마다 유리이기도 아니기도) ── */
:is(dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container).lg{background:var(--lg-thick) !important;
  -webkit-backdrop-filter:blur(34px) saturate(210%) brightness(1.06);backdrop-filter:var(--lg-f, ) blur(34px) saturate(210%) brightness(1.06);border:0 !important}
html[data-theme="dark"] :is(dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container).lg{background:var(--lg-thick) !important}
html:is(.lin-shell,.lin-ios) dialog:not(.palette)[open]{border-radius:22px !important;animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both}
html:is(.lin-shell,.lin-ios) dialog:not(.palette)::backdrop{background:rgba(10,12,20,.22) !important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
html:is(.lin-shell,.lin-ios) :is(.msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container){border-radius:14px !important;animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:top left}
/* 말풍선은 전부 같은 어두운 유리 알약(앞서 4종만 바꿨다 → 지도·축 말풍선까지) */
html:is(.lin-shell,.lin-ios) :is(.globe-tip, .lb-axtip){background:rgba(18,18,22,.86) !important;color:#fff !important;border:0 !important;border-radius:9px !important;
  -webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);box-shadow:0 8px 24px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.12) !important}

/* ── 10-06 사용자 지적: 홈 머리줄 위로 아래 내용(꽃길 풀밭)이 1px 초록 줄로 비쳤다.
      허브 규칙은 본문 판 테두리 1px 를 전제로 머리줄을 top:9 · left:+1 · right:9 에 두는데, 이 판(위 A2)은 판 테두리를 없앴다 →
      판 안쪽 맨 위 1px 가 머리줄 위로 드러났다. 머리줄을 판 가장자리(8px)에 붙인다 ── */
@media (min-width:901px){
  :root:root:root:root[data-shell="v2"] body.hubon .corner{top:8px !important;right:8px !important;border-radius:12px 12px 0 0 !important}
  :root:root:root:root[data-shell="v2"] body.hubon:not(.rail-collapsed) .corner{left:var(--hs-shellw,var(--lin-sidew)) !important}
  :root:root:root:root[data-shell="v2"] body.hubon.rail-collapsed .corner{left:8px !important}
}

/* ── 10-06 사용자 지적(팝업이 전혀 유리가 아니다): 떠 있는 층은 모두 유리였지만 바탕을 88~92% 불투명으로 덮어 흰 판으로만 보였다.
      글자를 지키는 일은 바탕 농도가 아니라 흐림(34px)·채도에 맡기고, 바탕은 반투명으로 · 가장자리 빛을 세게(Apple Regular 재질) ── */
:root{--lg-thick:rgba(250,250,252,.86)}
html[data-theme="dark"]{--lg-thick:rgba(30,32,38,.84)}
:is(.rail, .hrail, .hshell, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions,
    dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card).lg{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95), inset 1px 0 0 rgba(255,255,255,.35), inset 0 -1px 0 rgba(255,255,255,.18), inset 0 0 0 .5px rgba(255,255,255,.6),
             0 0 0 .5px rgba(15,23,42,.12), 0 24px 60px -18px rgba(15,23,42,.38), 0 6px 16px -8px rgba(15,23,42,.18) !important}
html[data-theme="dark"] :is(.rail, .hrail, .hshell, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions,
    dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card).lg{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22), inset 1px 0 0 rgba(255,255,255,.08), inset 0 0 0 .5px rgba(255,255,255,.12),
             0 0 0 .5px rgba(0,0,0,.55), 0 28px 70px -18px rgba(0,0,0,.75) !important}
/* 유리 안에서 다시 흰 판을 까는 안쪽 부품(목록 칸·머리)은 비치게 */
:is(.pop, .pal-box, .vtab-ovlist, .msf-pop, .mvpop, .more-pop, .mepop, .cbo-pop, .dp).lg :is(.pop-h, .pop-f, .pal-top, .pal-foot, .bp-i, .nmenu-ts){background:transparent !important}
/* 모양으로 찾아 유리를 입힌 떠 있는 층(lin_glass.js · lin-pop-auto) — 같은 두께·테두리 없음·둥근 모서리 */
.lin-pop-auto.lg{background:var(--lg-thick) !important;border:0 !important;border-radius:16px !important;
  -webkit-backdrop-filter:blur(34px) saturate(210%) brightness(1.06);backdrop-filter:var(--lg-f, ) blur(34px) saturate(210%) brightness(1.06);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.95), inset 0 0 0 .5px rgba(255,255,255,.6), 0 0 0 .5px rgba(15,23,42,.12), 0 24px 60px -18px rgba(15,23,42,.38) !important}
html[data-theme="dark"] .lin-pop-auto.lg{box-shadow:inset 0 1px 0 rgba(255,255,255,.22), inset 0 0 0 .5px rgba(255,255,255,.12), 0 0 0 .5px rgba(0,0,0,.55), 0 28px 70px -18px rgba(0,0,0,.75) !important}

/* ── 10-06 사용자 지적 바로잡음: 「리퀴드 글래스는 비치든 말든 불투명한 형태다」 — 바로 앞에서 바탕을 52% 로 비치게 한 것은 틀린 해석이었다.
      바탕은 불투명(86%)으로 두고, 유리로 읽히게 하는 것은 재질의 단서로: ① 위쪽 광택(빛 받는 면) ② 빛나는 가장자리(왼쪽 위·오른쪽 아래가 밝은 1px 띠)
      ③ 안쪽 위 1px 반사 ④ 깊고 넓은 그림자 ⑤ 가장자리 굴절(크롬·엣지 · lin_glass.js).
      ⚠ 앞의 팝업별 규칙들이 border:0 !important 를 세게 걸어 두었다 → 앞머리를 html:root:root 로 올려 이긴다 ── */
html:root:root :is(.rail, .hrail, .hshell, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto).lg{
  border:1px solid transparent !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.62), rgba(255,255,255,0) 38%) padding-box,
    linear-gradient(var(--lg-thick), var(--lg-thick)) padding-box,
    linear-gradient(140deg, rgba(255,255,255,1), rgba(255,255,255,.35) 30%, rgba(200,205,220,.35) 62%, rgba(255,255,255,.9)) border-box !important}
html:root:root[data-theme="dark"] :is(.rail, .hrail, .hshell, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto).lg{
  background:
    linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,0) 38%) padding-box,
    linear-gradient(var(--lg-thick), var(--lg-thick)) padding-box,
    linear-gradient(140deg, rgba(255,255,255,.42), rgba(255,255,255,.08) 30%, rgba(255,255,255,.04) 62%, rgba(255,255,255,.28)) border-box !important}

/* ═══ 10-06 사용자 레퍼런스(Dribbble 「Apple Liquid Glass meets Smart Home Vibes」) = 연기 유리 ═══
   메인이 레퍼런스를 확대해 읽은 값: 면 = 뒤를 강하게 흐린 회색 반투명(흰 판 아님) · 1px 빛나는 테두리(왼쪽 위가 밝음) · 흰 글씨 ·
   안의 고른 칸 = 한 톤 밝은 회색 둥근 칸 · 둥근 22~24. 떠 있는 층 전부(팝업·창·목록·폰 시트·탭 막대) 같은 재질.
   안쪽 부품은 색 토큰을 이 층 안에서만 밝은 쪽으로 바꿔 따라오게 한다(하나하나 칠하지 않는다) */
html:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg{
  --ink:#ffffff; --ink-2:rgba(255,255,255,.84); --ink-3:rgba(255,255,255,.64); --ink-4:rgba(255,255,255,.46);
  --line:rgba(255,255,255,.16); --line-2:rgba(255,255,255,.12); --panel:rgba(255,255,255,.14); --hover:rgba(255,255,255,.12); --hover-2:rgba(255,255,255,.16);
  --lin-band:rgba(255,255,255,.12); --canvas:transparent;
  color:#fff !important; border:1px solid transparent !important; border-radius:22px !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.02) 42%) padding-box,
    linear-gradient(rgba(92,96,106,.62), rgba(92,96,106,.62)) padding-box,
    linear-gradient(150deg, rgba(255,255,255,.62), rgba(255,255,255,.14) 34%, rgba(255,255,255,.06) 66%, rgba(255,255,255,.34)) border-box !important;
  -webkit-backdrop-filter:blur(40px) saturate(160%) !important;backdrop-filter:blur(40px) saturate(160%) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22), 0 24px 60px -16px rgba(0,0,0,.45), 0 2px 8px rgba(0,0,0,.12) !important}
html:root:root:root[data-theme="dark"] :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg{
  background:
    linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.01) 42%) padding-box,
    linear-gradient(rgba(58,60,68,.6), rgba(58,60,68,.6)) padding-box,
    linear-gradient(150deg, rgba(255,255,255,.5), rgba(255,255,255,.1) 34%, rgba(255,255,255,.04) 66%, rgba(255,255,255,.26)) border-box !important}
/* 안쪽 머리·꼬리·구획은 판을 따로 깔지 않는다 · 단추는 한 톤 밝은 칸 */
html:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg :is(.pop-h, .pop-f, .pal-top, .pal-foot, .bp-i, .nmenu-h, .nmenu-ts, .w-h, .dp-h, .mdl-h, .drawer-h, .modal-h){background:transparent !important;border-color:rgba(255,255,255,.14) !important}
html:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg :is(input, select, textarea){background:rgba(255,255,255,.12) !important;color:#fff !important;border-color:rgba(255,255,255,.18) !important}
html:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg :is(input, textarea)::placeholder{color:rgba(255,255,255,.55) !important}
html:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg :is(.btn, button):not(.pop-x):not(.lin-tabbar button):not([class*="x"]){border-color:rgba(255,255,255,.18) !important}
html:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch).lg :is([aria-selected="true"], .on, .active, .sel){background:rgba(255,255,255,.2) !important;color:#fff !important}
/* 폰 탭 막대 = 레퍼런스 위쪽 알약 막대(연기 유리 · 고른 칸은 한 톤 어두운 칸) */
html:root:root:root .lin-tabbar.lg{border-radius:32px !important}
html:root:root:root .lin-tabbar.lg button{color:rgba(255,255,255,.86) !important}
html:root:root:root .lin-tabbar.lg button.on{background:rgba(20,22,28,.45) !important;color:#fff !important}
/* 허브 머리줄 규칙(.corner .quick …)이 세서 위 단추·감춤이 졌다(10-06 실측: 단추 4×20 · 아이콘 0×0 · 링크 그대로) → 앞머리를 올린다 */
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > a{display:none !important}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool{display:inline-grid !important;place-items:center;width:30px !important;height:30px !important;
  padding:0 !important;margin:0 !important;border:0 !important;border-radius:8px !important;background:transparent !important;color:var(--ink-2) !important;flex:none}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool:hover{background:var(--lin-band) !important;color:var(--ink) !important}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool svg{display:block !important;width:16px !important;height:16px !important;
  fill:none !important;stroke:currentColor !important;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}


/* ═══════════════════════════════════════════════════════════════════════
   10-06 사용자 지시: 「리퀴드 글래스 하지 마. 제대로 구현 못 하네 · 폐기해」
   → 유리 효과(흐림·비침·굴절·연기 색·빛 테두리)를 전부 걷는다. 떠 있는 층은 모두 같은 단색 판:
     바탕 = 판 색(--panel) · 선 1px(--line) · 둥근 14 · 그림자 하나. 글자 색 토큰은 바깥 것을 그대로 물려받는다.
   ⚠ 위쪽 유리 규칙들은 기록으로 남기되 이 블록이 맨 뒤에서 모두 이긴다(앞머리 :root 다섯 번). 머리줄은 단색 바탕.
   ═══════════════════════════════════════════════════════════════════════ */
html:root:root:root:root :is(.lg, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop){
  --ink:inherit; --ink-2:inherit; --ink-3:inherit; --ink-4:inherit; --line:inherit; --line-2:inherit; --panel:inherit; --hover:inherit; --hover-2:inherit; --lin-band:inherit; --canvas:inherit}
html:root:root:root:root :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop), html:root:root:root:root .lg:not(header){
  color:var(--ink) !important;
  background:var(--panel) !important; background-image:none !important;
  border:1px solid var(--line) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important;
  box-shadow:0 12px 32px -8px rgba(15,23,42,.18), 0 2px 6px rgba(15,23,42,.06) !important}
html:root:root:root:root:is(:is(.lin-shell,.lin-ios), .lin-hub) :is(.lin-hpop, .pop, .pal-box, .modal-box, .sheet-card, .mdl, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .lin-pop-auto, .lin-hsearch, .lin-me, dialog){border-radius:14px !important}
html:root:root:root:root[data-theme="dark"] :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop), html:root:root:root:root[data-theme="dark"] .lg:not(header){
  box-shadow:0 16px 40px -10px rgba(0,0,0,.6), 0 2px 6px rgba(0,0,0,.3) !important}
html:root:root:root:root .lg::after{display:none !important}
/* 안쪽 구획은 판 색 그대로(연기 유리 때 투명으로 바꾼 것 되돌림) · 안쪽 단추·입력칸은 앱 기본 모양 */
html:root:root:root:root :is(.lg, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop) :is(input, select, textarea){background:var(--panel) !important;color:var(--ink) !important;border-color:var(--line) !important}
html:root:root:root:root :is(.lg, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop) :is(input, textarea)::placeholder{color:var(--ink-3) !important}
html:root:root:root:root :is(.lg, .pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog, .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop) :is([aria-selected="true"], .on, .active, .sel){background:var(--lin-band) !important;color:var(--ink) !important}
/* 머리줄 = 단색(반투명·흐림 없음) */
html:root:root:root:root:is(.lin-shell,.lin-ios) .shell > .main > header:is(.topbar, .gbar), html:root:root:root:root:is(.lin-shell,.lin-ios) .shell > .main > header.lg{
  background:var(--canvas) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important;box-shadow:none !important;border:0 !important;border-bottom:1px solid var(--line-2) !important}
/* 본문 판 = 단색(색 안개 위 80% 비침 → 불투명) */
html:root:root:root:root:is(.lin-shell,.lin-ios) .shell > .main, :root:root:root:root:root[data-shell="v2"] body.hubon .hubwrap{background:var(--canvas) !important}
/* 폰 탭 막대 · 메뉴 시트도 단색 판 */
html:root:root:root:root .lin-tabbar{background:var(--panel) !important;border:1px solid var(--line) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
html:root:root:root:root .lin-tabbar button{color:var(--ink-2) !important}
html:root:root:root:root .lin-tabbar button.on{background:var(--lin-band) !important;color:var(--accent) !important}
html:root:root:root:root[data-shell="v2"]:is(.lin-shell,.lin-ios) .rail.lg{background:var(--panel) !important}
/* 말풍선도 단색 어두운 판(흐림 없음) */
html:root:root:root:root:is(.lin-shell,.lin-ios) :is(.shelltip, .htip, .krtip, .ra-tip, .globe-tip, .lb-axtip){-webkit-backdrop-filter:none !important;backdrop-filter:none !important;background:#1d1e22 !important}
/* 허브 머리줄 단추 = 앱 머리줄 .ghost.ico 실측 그대로(28px · 선 1px #e5e5e6 계열 · 둥근 8 · 바탕 없음 · 간격 8 · 이름 앞 구분선) */
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick{gap:8px !important}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool{position:relative;width:28px !important;height:28px !important;
  border:1px solid var(--line) !important;border-radius:8px !important;background:transparent !important;color:var(--ink-2) !important}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool svg{width:15px !important;height:15px !important;stroke-width:1.9}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool:hover{background:var(--lin-band) !important;color:var(--ink) !important}
:root:root:root:root:root[data-shell="v2"] body.hubon .corner .quick > .lin-htool .lin-hb-n{position:absolute;top:-5px;right:-6px;min-width:16px;height:16px;padding:0 4px;
  border-radius:8px;background:#ff3b30;color:#fff;font-size:10px;line-height:16px;font-weight:700;box-sizing:border-box}
/* 11-05 휴대폰에서 오른쪽 위 머리글자 원이 13px 밀리고 옆에 선이 보였다: 데스크톱 구분선 규칙이 폰에도 걸림 → 넓은 화면에만 */
@media (min-width:901px){ :root:root:root:root:root[data-shell="v2"] body.hubon .corner .who{border-left:1px solid var(--line) !important;margin-left:8px !important;padding-left:12px !important} }
/* 허브 즐겨찾기·알림 팝업(단색 판) */
.lin-hpop{position:fixed;z-index:120;width:300px;max-height:min(calc(70vh * var(--zk, 1)),520px);overflow:auto;padding:8px;border-radius:14px;animation:lgIn .28s cubic-bezier(.2,.8,.2,1) both;transform-origin:top right}
.lin-hp-h{font-size:13px;font-weight:600;padding:6px 8px 8px;border-bottom:1px solid var(--line-2);margin-bottom:6px}
.lin-hp-list{display:flex;flex-direction:column;gap:2px}
.lin-hp-n{flex-direction:column;align-items:flex-start;gap:2px}
.lin-hp-n b{font-weight:500;font-size:13px;line-height:1.45}
.lin-hs-row:hover, .lin-hs-row.on{background:var(--lin-band) !important}
/* 화면 크기 단추·팝업(10-06) */
.lin-zbtn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.lin-zpop{position:fixed;z-index:220;padding:12px;border-radius:14px;background:var(--panel);border:1px solid var(--line);color:var(--ink);
  box-shadow:0 12px 32px -8px rgba(15,23,42,.2), 0 2px 6px rgba(15,23,42,.06);animation:lgIn .26s cubic-bezier(.2,.8,.2,1) both;transform-origin:top right}
.lin-zp-h{font-size:13px;font-weight:600;margin:0 2px 10px}
.lin-zp-seg{display:flex;gap:2px;padding:2px;border-radius:9px;background:color-mix(in srgb, var(--ink) 7%, transparent)}
.lin-zp-seg button{height:30px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--ink-2);font:inherit;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}
.lin-zp-seg button[aria-checked="true"]{background:var(--panel);color:var(--ink);box-shadow:0 3px 8px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.05)}
.lin-zp-s{font-size:11.5px;color:var(--ink-3);margin:8px 2px 0}
/* 앱 이름 메뉴(10-06) */
.lin-gme{cursor:pointer;border-radius:8px}
.lin-gme:hover{background:var(--lin-band)}
.lin-gcaret{width:14px;height:14px;flex:none;margin-left:4px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.6}
.lin-mrow{width:100%;border:0;background:transparent;text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:1px;font:inherit}
.lin-mrow span:empty{display:none}
/* iOS 로딩 표시(10-06) — 12개 막대가 시계 방향으로 흐려지며 돈다 */
.lin-spin{position:absolute;left:50%;top:50%;width:28px;height:28px;margin:-14px 0 0 -14px;z-index:5;pointer-events:none}
.lin-spin i{position:absolute;left:12.5px;top:0;width:3px;height:8px;border-radius:2px;background:var(--ink-3);transform-origin:1.5px 14px;animation:linSpin 1s linear infinite;opacity:.15}
.lin-spin i:nth-child(1){transform:rotate(0deg);animation-delay:-1s}
.lin-spin i:nth-child(2){transform:rotate(30deg);animation-delay:-.9167s}
.lin-spin i:nth-child(3){transform:rotate(60deg);animation-delay:-.8333s}
.lin-spin i:nth-child(4){transform:rotate(90deg);animation-delay:-.75s}
.lin-spin i:nth-child(5){transform:rotate(120deg);animation-delay:-.6667s}
.lin-spin i:nth-child(6){transform:rotate(150deg);animation-delay:-.5833s}
.lin-spin i:nth-child(7){transform:rotate(180deg);animation-delay:-.5s}
.lin-spin i:nth-child(8){transform:rotate(210deg);animation-delay:-.4167s}
.lin-spin i:nth-child(9){transform:rotate(240deg);animation-delay:-.3333s}
.lin-spin i:nth-child(10){transform:rotate(270deg);animation-delay:-.25s}
.lin-spin i:nth-child(11){transform:rotate(300deg);animation-delay:-.1667s}
.lin-spin i:nth-child(12){transform:rotate(330deg);animation-delay:-.0833s}
@keyframes linSpin{0%{opacity:1}100%{opacity:.15}}
html:is(.lin-shell,.lin-ios) .shell > .main{position:relative}

/* ═══ 10-06 전수 점검(QA 2회차) 결함 수정 ═══════════════════════════════════
   Q7  검색 팔레트를 열면 뒤 화면이 통째로 흰(다크=검은) 판 — 바깥 <dialog class="palette">(화면 전체 크기)까지 위 단색 판 규칙의
       `dialog` 에 걸렸다. 판은 안쪽 .pal-box 하나여야 한다 → 바깥 dialog 는 투명·테두리 없음. */
html:root:root:root:root:root dialog.palette{background:transparent !important;border:0 !important;box-shadow:none !important;border-radius:0 !important}
/* Q8  다크 모드 떠 있는 층이 반투명(뒤 글자 비침) — 옛 연기 유리 다크 규칙(앞머리 :root 3 + [data-theme] + .lg)이 위 단색 판 규칙보다 셌다.
       같은 대상에 다크 + .lg 를 붙여 확실히 이긴다(글래스는 10-06 사용자 지시로 폐기). */
html:root:root:root:root[data-theme="dark"] :is(.pop, .pal-box, .modal-box, .sheet-card, .lin-me, .mdl, .drawer, .dp, .cbo-pop, .rowpeek, .vtab-ovlist, .qa, .mentions, dialog:not(.palette), .msf-pop, .mvpop, .more-pop, .mepop, .lb-pop, .krpol-menu, .tabulator-menu, .tabulator-popup-container, .pxa-card, .lin-pop-auto, .lin-tabbar, .lin-hsearch, .lin-hpop).lg{
  background:var(--panel) !important; background-image:none !important; border:1px solid var(--line) !important;
  -webkit-backdrop-filter:none !important; backdrop-filter:none !important}
html:root:root:root:root[data-theme="dark"][data-shell="v2"]:is(.lin-shell,.lin-ios) .rail.lg{background:var(--panel) !important;background-image:none !important}
/* Q5  허브 검색(돋보기 · Ctrl+K) 상자에 위치 규칙이 없어 문서 맨 아래(화면 밖)에 붙었다 → 머리줄 아래 가운데에 띄운다 */
.lin-hsearch{position:fixed;z-index:230;left:50%;top:64px;transform:translateX(-50%);width:min(560px, calc(calc(100vw * var(--zk, 1)) - 32px));
  max-height:min(calc(70vh * var(--zk, 1)), 560px);display:flex;flex-direction:column;padding:8px;box-sizing:border-box;overflow:hidden;animation:lgIn .26s cubic-bezier(.2,.8,.2,1) both;transform-origin:top center}
.lin-hsearch > input{flex:none;height:40px;padding:0 12px;border-radius:10px;font:inherit;font-size:15px;outline:none;box-sizing:border-box;width:100%}
.lin-hsearch .lin-hs-list{flex:1;min-height:0;overflow:auto;margin-top:6px;display:flex;flex-direction:column;gap:2px}
.lin-hs-row{display:flex;align-items:baseline;gap:8px;padding:8px 10px;border-radius:8px;color:var(--ink);text-decoration:none}
.lin-hs-row b{font-weight:500;font-size:13.5px}
.lin-hs-row span{font-size:12px;color:var(--ink-3)}
.lin-hs-empty{padding:14px 10px;font-size:13px;color:var(--ink-3)}
/* Q1  폰(≤760): 닫힌 메뉴 시트가 탭 막대 위로 60px 걸쳐(바닥 84 + 내림 24) 탭 막대 단추 다섯을 전부 가렸다
       → 닫힌 동안은 화면 밖까지 내리고, 보이지도 눌리지도 않게. 허브(≤900) 시트도 같은 구조라 같이. */
@media (max-width:760px){
  :root:root:root[data-shell="v2"]:is(.lin-shell,.lin-ios) .rail:not(.open){transform:translateY(calc(100% + 140px)) !important;visibility:hidden !important;pointer-events:none !important;
    transition:transform var(--sp-smooth-d) var(--sp-smooth), visibility 0s linear var(--sp-smooth-d) !important}
}
@media (max-width:900px){
  :root:root:root:root:root[data-shell="v2"] body.hubon:not(.lin-drawer) .hshell{transform:translateY(calc(100% + 140px)) !important;visibility:hidden !important;pointer-events:none !important;
    transition:transform var(--sp-smooth-d) var(--sp-smooth), visibility 0s linear var(--sp-smooth-d) !important}
}
/* Q25 좁은 창 서랍(761~1024)·허브 서랍(≤900): 사이드바 머리의 단추는 「서랍 닫기」로 동작한다 → 접기 그림 대신 ✕ */
.lin-ib::after{content:"";display:none;width:14px;height:14px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") center/contain no-repeat}
@media (min-width:761px) and (max-width:1024px){ html:is(.lin-shell,.lin-ios) #rail .lin-ib svg{display:none !important} html:is(.lin-shell,.lin-ios) #rail .lin-ib::after{display:block} }
/* ⚠ 폰(≤760)은 위 275행 블록이 이미 ::before 로 ✕ 를 그린다 — 여기서 또 그리면 ✕ 가 두 개 겹친다(10-06 사용자 아이폰 캡처) */
/* 10-06 사용자 아이폰 캡처: 폰 메뉴 시트 바탕이 투명해 뒤 화면 글자와 겹쳤다. 원인은 761~1024 서랍 때와 같다 —
   유리 시절 `html.lin-shell #rail{background:transparent}`(34행)이 아이디 특이도로 이긴다. 서랍만 고치고 폰을 빠뜨렸다 → 폰도 단색 판 */
@media (max-width:760px){ html:is(.lin-shell,.lin-ios):is(.lin-shell,.lin-ios) #rail{background:var(--panel) !important;background-image:none !important;border:1px solid var(--line) !important;
  box-shadow:0 -8px 40px -12px rgba(0,0,0,.35) !important} }
@media (max-width:900px){ :root:root:root:root:root[data-shell="v2"] body.hubon .hshell{background:var(--panel) !important;background-image:none !important;border:1px solid var(--line) !important;
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important} }
@media (max-width:900px){ html.lin-hub .hrail .lin-ib svg, html.lin-hub .hshell .lin-ib svg{display:none !important} html.lin-hub :is(.hrail, .hshell) .lin-ib::after{display:block} }
/* 10-06 폰 메뉴 시트 「열린 화면」 줄이 14px 로 눌려 아래 「홈」 줄 밑에 깔렸다(시트가 세로 flex 라 줄어들 수 있는 칸이었다) ·
   고른 칸 색도 위 단색 판 규칙(.on → 옅은 띠)에 덮였다 → 줄은 줄지 않게, 고른 칸은 강조색 알약 */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) #rail .lin-opentabs{flex:none !important;min-height:44px}
  html:is(.lin-shell,.lin-ios) #rail .lin-opentabs button{background:var(--lin-band) !important;color:var(--ink-2) !important;border:0 !important}
  html:is(.lin-shell,.lin-ios) #rail .lin-opentabs button.on{background:var(--accent) !important;color:#fff !important}
}

/* ═══ 10-06 모바일 전수 점검(qa_261006c_mobile) 결함 — 공통 틀 ═══ */
@media (max-width:760px){
  /* M03 아래에서 올라오는 서랍·전체 창의 맨 아래(코멘트 입력·「등록」)가 떠 있는 탭 막대(64+10) 밑에 깔려 안 눌렸다
     → 서랍·창 안쪽 바닥을 탭 막대 높이만큼 비운다(쌓임 순서는 그대로 — 서랍 안 날짜 고르기 등이 서랍 위에 떠야 해서) */
  html:is(.lin-shell,.lin-ios) .drawer, html:is(.lin-shell,.lin-ios) .pwin{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;box-sizing:border-box}
  html:is(.lin-shell,.lin-ios) .modal .mdl{margin-bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important}
  /* M27 화면을 올려 맞춘 단추가 탭 막대 밑에 걸려 누르면 「알림」이 열렸다 → 스크롤 여백 */
  html:is(.lin-shell,.lin-ios), html:is(.lin-shell,.lin-ios) .shell > .main, html:is(.lin-shell,.lin-ios) .work{scroll-padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  /* M15 관리자 표: 표 머리 고정이 작업면 위 여백(20px) 아래에 붙어 그 틈으로 행 글자가 비쳤다 → 머리 위 틈을 판 색으로 덮는다 */
  html:is(.lin-shell,.lin-ios)[data-app="admin"] .wrap table thead th{box-shadow:0 -24px 0 var(--canvas)}
}
/* M07 허브 폰(≤900): 위젯 목록만 410px 상자 안에서 굴러 화면 절반만 내용이었다(board.css .wb{overflow-y:auto} + 줄어드는 .wbwrap)
   → 위젯 판은 내용 높이로 서고 바깥 .hubwrap 하나만 굴린다 · 바닥은 탭 막대만큼 비움 */
@media (max-width:900px){
  :root:root:root:root body.hubon .hubwrap .wbwrap{flex:none !important}
  :root:root:root:root body.hubon .hubwrap .wb{overflow:visible !important;flex:none !important;min-height:auto !important}
  :root:root:root:root body.hubon .hubwrap{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px)) !important}
}
/* 10-06 사용자 아이폰 캡처(「위랑 오른쪽 여백이 의도한 거야?」 — 아니다): 데스크톱의 「떠 있는 본문 판」(바깥 8px · 둥근 12)이
   폰에도 그대로 남아 위·오른쪽에 바탕 띠가 보였다 → 폰(≤760)은 본문 판이 화면 끝까지(전 앱 공통 셸이라 한 번에) */
@media (max-width:760px){
  :root:root:root:root:is(.lin-shell,.lin-ios) .shell > .main{margin:0 !important;border-radius:0 !important;border:0 !important;box-shadow:none !important;height:calc(100dvh * var(--zk, 1)) !important;max-height:none !important}
  /* 화면 크기(가)는 「나」 시트로 옮겼다(M18) — 머리줄에 남은 단추(Dashboard 등)는 숨겨 앱마다 다르지 않게 */
  html:is(.lin-shell,.lin-ios) .shell > .main > header .lin-zbtn{display:none !important}
}
/* 10-06 넓은 표 첫 열 고정(linear_theme.js freezeFirst 가 lin-f1 을 단다) — 바탕은 판 색(앱이 칸에 색을 깔았으면 앱 색이 이긴다: :where 로 특이도 0) */
html:is(.lin-shell,.lin-ios) .work table.lin-freeze1 .lin-f1{position:sticky;left:0;z-index:2;box-shadow:inset -1px 0 0 var(--line)}
/* ⛔ 10-12 사용자 지적(관리자 › 계정 「이름 · 이메일」 머리칸이 고정 안 됨) — 앱 CSS 의 아이디 규칙
   (admin.css `#tblUsers thead th{z-index:2}`)이 특이도로 이 6 을 이겨 머리 모서리 칸이 2 로 내려앉았고,
   표를 내리면 뒤에 오는 첫 열 칸(z 2)이 그 위를 덮었다. 머리·합계 줄 첫 칸의 층은 **앱 규칙이 못 이기게** 둔다
   (같은 꼴: 앱마다 thead th 에 z 1~3 을 준다 · 최댓값 3 < 5·6). */
html:is(.lin-shell,.lin-ios) .work table.lin-freeze1 thead .lin-f1{z-index:6 !important}
/* 10-06 사용자 지적(해외영업 FCST 국가표 「합계」 줄): 합계 줄(tfoot)은 앱이 아래에 붙여 두고(sticky bottom) 칸을 z 3 으로 올려 둬서,
   옆으로 밀면 숫자 칸이 고정한 「합계」 칸(z 2) 위로 지나가 덮었다 → 머리·합계 줄의 첫 열은 그 줄의 다른 칸보다 위층 */
html:is(.lin-shell,.lin-ios) .work table.lin-freeze1 tfoot .lin-f1{z-index:5 !important}
:where(html:is(.lin-shell,.lin-ios) .work table.lin-freeze1) tbody .lin-f1, :where(html:is(.lin-shell,.lin-ios) .work table.lin-freeze1) tfoot .lin-f1{background-color:var(--panel)}
:where(html:is(.lin-shell,.lin-ios) .work table.lin-freeze1) thead .lin-f1{background-color:var(--panel)}
/* 10-06 사용자 아이폰 캡처: 허브 날씨 등 위젯 펼침 판(.wp, 아래서 올라오는 시트)의 아래쪽이 탭 막대에 가렸다 → 펼친 동안은 탭 막대를 내린다(iOS 시트와 같게) */
@media (max-width:900px){
  html.lin-hub body:has(#hub.panel) .lin-tabbar{display:none !important}
}
/* 10-06 사용자 아이폰 캡처(EBD 재무 비교 연도·누적 기간 칸 단추가 화면 오른쪽 밖으로 잘림) — 칸 단추 묶음은 가로로 구르게 해 놓고도
   줄(flex) 안에서 줄어들지 못해(min-width:auto) 화면 밖으로 밀려 나갔다 → 폰(≤760)에서 모든 칸 단추 묶음은 남은 폭 안에서 가로로 구른다 */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg, .seg, .kl-seg, .ra-toggle, .krpol-seg):has(> :is(button, a, label, [role="radio"], [role="tab"])){
    min-width:0 !important;max-width:100% !important;flex-shrink:1 !important;overflow-x:auto !important;flex-wrap:nowrap !important;scrollbar-width:none;
    -webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  html:is(.lin-shell,.lin-ios) .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg, .seg, .kl-seg, .ra-toggle, .krpol-seg):has(> :is(button, a, label, [role="radio"], [role="tab"]))::-webkit-scrollbar{display:none}
  html:is(.lin-shell,.lin-ios) .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg, .seg, .kl-seg, .ra-toggle, .krpol-seg):has(> :is(button, a, label, [role="radio"], [role="tab"])) > *{flex:none !important}
}
/* ⚠ 10-06 수정: 묶음만 대상(안에 단추가 든 것) — Schedule 은 단추 하나하나가 .ra-seg 라 단추가 줄어들어 글자가 붙었다 → .ra-seg 대신 묶음 .ra-toggle */
/* (이어서) 칸 단추를 담은 줄(예: EBD .cf-fl)도 내용 폭으로 서서 화면 밖까지 넓어졌다 → 그 줄도 화면 폭 안으로 */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work :has(> :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg, .seg, .kl-seg, .ra-toggle, .krpol-seg)){min-width:0 !important;max-width:100% !important}
}
/* 10-06 사용자 지적(해외영업 FCST 「거래처 제품별 예상」 폰): ① 옆으로 밀면 고정 열 머리 「거래처」 위로 「출고수량」이 비쳐 겹침
   ② 표 머리가 위에 안 붙음.
   ① 원인: 격자 표(Tabulator) 머리 바탕이 반투명(흰 5%)이라 밑으로 지나가는 머리 글자가 비쳤다 → 머리는 같은 색의 불투명 판으로(전 폭).
   ② 원인: 폰에서 표 안 이중 스크롤을 없앤 뒤(작업면이 구름) 머리 고정 기준이 바깥 상자가 됐는데, 그 상자들(.tabulator·판)이
      overflow:hidden 이라 머리가 표 안에서만 붙었다 → 폰에서는 잘라 내기만 하고 스크롤 상자는 만들지 않는 clip 으로 바꾼다. */
html:is(.lin-shell,.lin-ios) .work .tabulator .tabulator-header,
html:is(.lin-shell,.lin-ios) .work .tabulator .tabulator-header .tabulator-col{background-color:color-mix(in srgb, var(--ink) 5%, var(--panel)) !important;background-image:none !important}
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work .tabulator, html:is(.lin-shell,.lin-ios) .work :is(.panel, .p-body, .grid-host, .sum-p, .tbl-wrap):has(.tabulator){overflow:clip !important}
  html:is(.lin-shell,.lin-ios) .work .tabulator > .tabulator-header{position:sticky !important;top:0 !important;z-index:6 !important}
}
/* 10-06 사용자 지적(「하단 문구도 다 짤리네 · 기본적인 문법 다 확인하라니까」 — 허브 맨 아래 안내가 「문 / 의는」처럼 낱말 가운데서 끊기고 오른쪽 정렬):
   한글은 낱말 가운데서 끊지 않는다(전 화면 공통) · 아주 긴 영문·숫자 토막만 칸 끝에서 끊어 넘침을 막는다 */
html:is(:is(.lin-shell,.lin-ios), .lin-hub) body{word-break:keep-all;overflow-wrap:break-word}
/* ⚠ 표 칸에는 overflow-wrap:anywhere 를 걸지 않는다 — 숫자 열의 최소 폭이 줄어 「1,234,567」이 줄바꿈된다 */
/* 10-09 사용자 「줄바꿈이 어색한 애들 · 전수 조사해서 제대로」(EBD 라이브러리 홈 설명 「…읽으면 업계를 / 한 바퀴 돌게 됩니다.」 등)
   ① 문단 = pretty(마지막 줄에 한두 낱말만 남지 않게 앞줄에서 미리 넘김) — 상속되므로 body 한 곳에 건다
   ② 제목·카드 제목·칩·설명 한두 줄 = balance(줄 길이를 고르게)
   ⚠ 줄임말 text-wrap 이 아니라 세부 속성 text-wrap-style 로 건다 — 줄임말은 text-wrap-mode 까지 wrap 으로 되돌려
     white-space:nowrap 칸(숫자·칩·단추)을 접히게 만든다.
   지원: text-wrap-style 크롬 130 · 사파리 17.5(balance) · pretty 값 크롬 117 · 사파리 26 — 안 되는 브라우저는 종전 줄바꿈 그대로. */
html:is(:is(.lin-shell,.lin-ios), .lin-hub) body{text-wrap-style:pretty}
html:is(:is(.lin-shell,.lin-ios), .lin-hub) :is(h1, h2, h3, h4, h5, h6, .page-title, .hero-t, .hero-d, .p-title, .stag, .chip, .badge, .lb-hero p, .uph-lead, .krar-note){text-wrap-style:balance}
/* 10-09 사용자 「주문현황처럼 일정 간격이 있어야」 — 홈 본문 좌우 여백이 32px(넓은 화면)·18px(폰)로 다른 메뉴 작업면(1440 20 · 1024 이하 12)과 달랐다 → 같게.
   위 여백(머리줄 자리 68·120)과 721~900 폭(접힌 띠 자리 104)은 그대로 */
@media (min-width:1025px){ :root:root:root[data-shell="v2"] body.hubon .hubwrap{padding-left:20px !important;padding-right:20px !important} }
@media (min-width:901px) and (max-width:1024px){ :root:root:root[data-shell="v2"] body.hubon .hubwrap{padding-left:12px !important;padding-right:12px !important} }
@media (max-width:720px){ :root:root:root[data-shell="v2"] body.hubon .hubwrap{padding-left:12px !important;padding-right:12px !important} }
@media (max-width:900px){
  :root:root:root:root body.hubon .hubutil{text-align:left !important;justify-content:flex-start !important;padding-left:16px !important;padding-right:16px !important;line-height:1.6}
}
/* 10-06 사용자 지적(「아예 문구가 안 보이잖아」 — 허브 해외 시장 뉴스·지원사업 공고·경쟁사 동향 제목이 한 줄 말줄임으로 뜻을 알 수 없음):
   폰(≤900)에서는 목록 제목을 두 줄까지 보이고 그 뒤에만 말줄임 · 줄이 늘어도 위젯 판이 내용만큼 서게 */
@media (max-width:900px){
  :root:root body.hubon :is(.kn-row, .gs-row, .rx-row){align-items:flex-start !important;white-space:normal !important}
  :root:root body.hubon :is(.kn-row .tt, .gs-row .tt, .rx-row .md){white-space:normal !important;display:-webkit-box !important;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;line-height:1.45}
  :root:root body.hubon .wb .w:has(:is(.kn-row, .gs-row, .rx-row)){height:auto !important;min-height:0 !important;grid-row-end:span 1}
  :root:root body.hubon .wb{grid-auto-rows:minmax(var(--wg-cell, 120px), auto) !important}
}
@media (max-width:900px){
  /* 날짜·마감·나라·분류 칸은 한 줄 그대로(제목만 두 줄) — 날짜 칸 폭 44px 이 「10월 6일」을 두 줄로 쪼갰다 */
  :root:root body.hubon :is(.kn-row .dt, .kn-row .nt, .gs-row .dd, .rx-row > :not(.md)){white-space:nowrap !important;width:auto !important;flex:none !important}
}
/* 10-06 사용자 지적(「홈 맨 하단 문의 문구가 아예 안 보인다」): 끝까지 내려도 문구(.hubutil 777~832)가 탭 막대(770~) 밑에 깔렸다.
   스크롤 상자(.hubwrap, 세로 flex)의 아래 안쪽 여백은 스크롤 끝에 잡히지 않았다(실측) → 마지막 요소 자체에 바깥 여백을 준다 */
@media (max-width:900px){
  :root:root:root:root body.hubon .hubwrap > .hubutil{margin-bottom:calc(96px + env(safe-area-inset-bottom,0px)) !important;flex:none !important}
}
/* 10-06 PI 인보이스 서류 서체 = 맑은 고딕(인쇄물 재현 예외 — CLAUDE.md 화면 규칙 3) — 테마의 「body * { font-family:inherit }」(특이도 높음)가
   .pi-sheet 의 맑은 고딕을 눌러 Inter·Pretendard 로 그려졌다(모바일 PI 작업 중 발견) → 서류 안은 맑은 고딕 고정 */
:root .pi-sheet, :root .pi-sheet *{font-family:"Malgun Gothic","맑은 고딕",-apple-system,sans-serif !important}
/* ── 10-06 토글 통일(사용자 지적, 해외영업 FCST 「국가 × 제품 수량」 폰: 「시중에 판매하는 제품 같냐? 정렬도 안 되어 있고 글자 크기도 제각각」
      + 「전수조사 · 일반 웹 버전도 같이」) ──────────────────────────────────────────────────────────────
   Apple 세그먼트 컨트롤 한 벌을 전 메뉴에 이 한 층에서 건다(앱 규칙보다 세게: 앞머리 :not(#…) 둘 = 아이디 두 개 몫).
   · 묶음  : 높이 32(폰 36) · 둥근 9 · 안쪽 2 · 옅은 회색 홈
   · 칸    : 13px·500(폰 14px) · 좌우 12 · 높이 28(폰 32) · 앱마다 달던 최소 폭(76·92 등)은 없앤다
   · 고른 칸: 흰 알약(둥근 7 · 그림자 한 겹) · 600
   · 한 묶음 안 칸 폭은 같게 — 단추만 든 묶음은 격자(1fr)로 가장 긴 칸 폭에 맞춘다. 자리가 모자라면 칸이 자기 글 폭까지만 줄고
     그 아래로는 안 줄어 폰에서는 이미 있는 가로 스크롤(위 「10-06 아이폰 캡처」 규칙)로 민다.
   · 이름표(.lin-seg-lb — lin_glass.js segLabels 가 단다): 13px·500·보조 글색 · 쌓인 줄은 같은 열 폭(같은 JS)
   대상 = 칸 단추 묶음(전수 조사 10-06: Dashboard .sectab·.cmbtns·.scmeas · 해외영업·MES·국내영업 .krds-seg · 국내영업 .scmeas·.krar-seg·
   고른 칸이 있는 .qtab · CRM .qa-seg · EBD .lb-seg·.cf-seg · 관리자 .seg · Schedule .ra-toggle).
   칸 단추가 아닌 것은 그대로: 필터 칩(EBD .lb-chips · Dashboard .tipbtns) · 쪽 넘김 · 고른 칸 없는 동작 단추 줄(.qtab 저장/되돌리기 등) · 목차(.krpol-toc) */
/* ⚠ 묶음 목록은 :where(특이도 0)로 감싼다 — 앞머리(아이디 두 개 몫)만으로 앱 규칙을 이기고, 아래 고른 칸·폰 규칙이 같은 앞머리로 칸 규칙을 덮게 */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))),
:root:not(#lin-sa):not(#lin-sb)[data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg, :root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle{
  align-items:center !important;gap:2px !important;padding:2px !important;height:auto !important;min-height:0 !important;box-sizing:border-box !important;
  max-width:100% !important;border:0 !important;border-radius:9px !important;background:color-mix(in srgb, var(--ink) 7%, transparent) !important;box-shadow:none !important}
/* 단추만 든 묶음 = 격자로 칸 폭을 같게(숨은 단추는 칸을 차지하지 않는다 · Schedule 알약 .ra-pill 은 떠 있는 층이라 칸이 아니다) */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))):where(:not(:has(> :not(button, [role="tab"])))),
:root:not(#lin-sa):not(#lin-sb)[data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg:where(:not(:has(> :not(button)))),
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle:where(:not(:has(> :not(.ra-seg, .ra-pill)))){
  display:inline-grid !important;grid-auto-flow:column !important;grid-auto-columns:1fr !important;grid-template-columns:none !important;grid-template-rows:none !important;
  justify-content:start !important;flex-wrap:nowrap !important}
/* 칸 */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))) > :where(button, [role="tab"]),
:root:not(#lin-sa):not(#lin-sb)[data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg > :where(button), :root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle > :where(.ra-seg){
  height:28px !important;min-height:0 !important;min-width:0 !important;max-width:none !important;width:auto !important;flex:none !important;box-sizing:border-box !important;
  padding:0 12px !important;margin:0 !important;border:0 !important;border-radius:7px !important;
  font-size:13px !important;font-weight:500 !important;line-height:1.2 !important;letter-spacing:0 !important;white-space:nowrap !important;text-align:center !important;
  color:var(--ink-2) !important;background:transparent !important;box-shadow:none !important}
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))) > :where(button, [role="tab"]):hover, :root:not(#lin-sa):not(#lin-sb)[data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg > :where(button):hover, :root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle > :where(.ra-seg):hover{color:var(--ink) !important}
/* 고른 칸 = 흰 알약(Schedule 은 알약을 .ra-pill 이 그리므로 글자만) */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))) > :where(button, [role="tab"]):is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"]), :root:not(#lin-sa):not(#lin-sb)[data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg > :where(button):is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"]){
  background:var(--panel) !important;color:var(--ink) !important;font-weight:600 !important;box-shadow:0 1px 4px rgba(0,0,0,.14) !important}
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle > :where(.ra-seg)[aria-selected="true"]{color:var(--ink) !important;font-weight:600 !important}
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle > .ra-pill{box-shadow:0 1px 4px rgba(0,0,0,.14) !important}
:root:not(#lin-sa):not(#lin-sb)[data-theme="dark"]:is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))) > :where(button, [role="tab"]):is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"]), :root:not(#lin-sa):not(#lin-sb)[data-theme="dark"][data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg > :where(button):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 1px 4px rgba(0,0,0,.4) !important}
:root:not(#lin-sa):not(#lin-sb)[data-theme="dark"]:is(.lin-shell,.lin-ios) .work .ra-toggle > .ra-pill{box-shadow:0 1px 4px rgba(0,0,0,.4) !important}
@media (max-width:760px){
  :root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work :where(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg,
  .qtab:not(.krpol-toc):has(> :nth-child(2)):has(> :is(.on, .active, [aria-pressed="true"], [aria-selected="true"], [aria-checked="true"], [aria-current="true"])):not(:has(> :not(button, [role="tab"])))) > :where(button, [role="tab"]):where(*), :root:not(#lin-sa):not(#lin-sb)[data-app="admin"]:is(.lin-shell,.lin-ios) .work .seg > :where(button):where(*), :root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .ra-toggle > :where(.ra-seg):where(*){height:32px !important;font-size:14px !important}
}
/* 이름표 — 칸 단추 바로 앞 짧은 글(「연도」「시나리오」「품목」「보는 방식」, FCST 「2026년」 같은 값 글자도 같은 모양) */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .lin-seg-lb{font-size:13px !important;font-weight:500 !important;color:var(--ink-2) !important;line-height:1.3 !important;
  letter-spacing:0 !important;text-transform:none !important;white-space:nowrap !important;flex:none !important;box-sizing:border-box !important;text-align:left !important}
:where(html:is(.lin-shell,.lin-ios) .work) .lin-seg-lb{display:inline-block}
/* (이어서) 위 묶음 규칙이 display 를 정하므로, 앱이 hidden 으로 숨긴 묶음은 숨긴 채로 둔다 */
:root:not(#lin-sa):not(#lin-sb):not(#lin-sc):is(.lin-shell,.lin-ios) .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg, .qtab, .seg, .ra-toggle)[hidden]{display:none !important}
/* (이어서) 칸 글 길이 차이가 커서 같은 폭이면 묶음이 30% 넘게 넓어지는 것은 글 폭대로(lin_glass.js segFit 이 단다 — 「너무 길면 내용 폭」) */
:root:not(#lin-sa):not(#lin-sb):not(#lin-sc):is(.lin-shell,.lin-ios) .work .lin-seg-free{grid-auto-columns:auto !important}

/* ═══ 10-07 기본 화면 문법 전수 점검(qa_261007_basics) — 공통 틀 결함 ═══ */
/* G02·G03 고정(sticky) 칸은 반드시 불투명 바탕 — 앱 규칙(국내 합계 줄 td transparent !important · MES FCST table.mx 칸 transparent !important)이
   첫 열 고정 칸을 투명으로 만들어 옆으로 밀면 숫자가 비쳤다 → 고정 칸 바탕을 한 층에서 강제(특이도를 앱 규칙보다 높게) */
:root:root:root:is(.lin-shell,.lin-ios) .work table.lin-freeze1.lin-freeze1 :is(tbody, tfoot) .lin-f1.lin-f1{background-color:var(--panel) !important}

/* G06 관리자 표 고정 머리가 스크롤 상자 위 끝보다 28px 아래에 붙음 — 고정 기준이 상자의 안쪽 여백(28px) 안쪽이라서. 그 여백만큼 올린다 */
html:is(.lin-shell,.lin-ios) #main .wrap:has(.lin-h1){--stick-top:-28px}
/* G12 Dashboard 상세 창 머리가 반투명(옛 유리 규칙의 「안쪽 머리 투명」) → 떠 있는 층 안 머리 띠는 판 색 불투명 · 창 안 표 머리는 창 머리 아래에 붙임 */
html:root:root:root:root:root :is(.modal-box, .pop, .mdl, .drawer, .dp, .sheet-card) :is(.modal-h, .pop-h, .mdl-h, .drawer-h, .dp-h){background:var(--panel) !important;background-image:none !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
/* (10-07 재확인) 창 안 표 머리의 고정 기준은 창이 아니라 바로 위 가로·세로 스크롤 상자(.dtbl)였다 → 그 상자를 창 높이 안으로 묶어
   상자 안에서 위아래로 구르게 하고 머리는 상자 맨 위에 붙인다 */
html:is(.lin-shell,.lin-ios) #dashModal .modal-box .dtbl{max-height:min(calc(62vh * var(--zk, 1)), 640px);overflow:auto !important}
html:is(.lin-shell,.lin-ios) #dashModal .modal-box .dtbl thead th{position:sticky !important;top:0 !important;z-index:2;background-color:color-mix(in srgb, var(--ink) 5%, var(--panel)) !important}
/* G13 1440×900 왼쪽 메뉴: 하위 메뉴가 펼쳐지면 앱 목록이 메뉴 안에서만 구르는데 단서가 없었다 → 아래로 더 있으면 아래 끝을 흐리게(끝까지 내리면 사라짐) */
@supports (animation-timeline: scroll()){
  html:is(.lin-shell,.lin-ios) .lin-side .lin-mid{animation:linMidFade linear both;animation-timeline:scroll(self block)}
  @keyframes linMidFade{from{-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 36px),transparent)}
    99%{-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 36px),transparent)}
    to{-webkit-mask-image:none;mask-image:none}}
}
/* G16 다크: 강조색(#5E6AD2)을 글자에 쓴 곳 3.5:1 → 글자로 쓸 때는 밝은 강조(--accent-strong) · lin-acc-t 는 lin_glass.js accText() 가 단다 */
html[data-theme="dark"] .lin-acc-t{color:var(--accent-strong, #8b93e6) !important}
html[data-theme="dark"] .lin-tabbar button.on{color:var(--accent-strong, #8b93e6) !important}
/* G17 폰 누르는 면 44px — 판 머리 도구·조회 조건 단추·검색칸·날짜 칸·적용 조건 칩 ✕·쪽 넘김 숫자(칸 단추 묶음 밖에서 빠져 있던 것) */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work :is(.p-tools :is(button, .btn), .cf-act :is(button, .btn), #moreBtn, #drBtn, .dr-box, .p-head :is(button, .btn)){min-height:44px !important}
  html:is(.lin-shell,.lin-ios) .work :is(#moreBtn, .ico-more){min-width:44px !important}
  html:is(.lin-shell,.lin-ios) .work :is(input#q, .cf-c input, .p-tools input, .p-head input){min-height:44px !important;font-size:16px !important}
  html:is(.lin-shell,.lin-ios) .work .btn-delete{min-width:32px !important;min-height:32px !important}
  html:is(.lin-shell,.lin-ios) .work :is(.tabulator-page, .pg-n, .pager button){min-width:44px !important;min-height:44px !important}
}
/* G19 글자 위계: 관리자 화면 제목만 24/600(다른 앱 30/700) · 「조회 조건」 판 제목만 12px(다른 판 제목 13/500) */
html:is(.lin-shell,.lin-ios) .lin-h1 h1{font-size:30px !important;font-weight:700 !important;letter-spacing:-.6px}
@media (max-width:760px){ html:is(.lin-shell,.lin-ios) .lin-h1 h1{font-size:34px !important} }
html:is(.lin-shell,.lin-ios) .work .cf-head h2{font-size:13px !important;font-weight:500 !important}
/* G20 허브 위젯 사이 16 → 판 짜기 규칙(L1) 12 */
:root:root body.hubon .hub{--wg-gap:12px !important}
/* G07 폰: 도구 줄(.qtab — 고르개·검색칸·엑셀 단추가 섞인 줄)은 칸 단추 묶음이 아니다 → 가로로 구르게 하지 않고 줄바꿈해 화면 안에 다 보이게 */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work .qtab{overflow:visible !important;flex-wrap:wrap !important;row-gap:8px}
}
/* (G02 이어서) 국내영업 합계 줄 투명 규칙은 #pWork(아이디)로 걸려 위 규칙을 이겼다(실측) → 같은 아이디를 넣어 고정 칸 바탕을 이긴다 */
html:is(.lin-shell,.lin-ios) #pWork table.lin-freeze1.lin-freeze1 :is(tbody, tfoot) .lin-f1.lin-f1{background-color:var(--panel) !important}


/* ═══ 10-07 기본문법 재확인(앱 담당 실측)으로 남은 공통 틀 결함 ═══ */
/* G16 다크 강조 글: 자동 표시(accText)가 잡지 못한 두 곳 — Schedule 이번 달 · 국내 채권 딜러/대리점 알약(글자 #4A529B) */
html[data-theme="dark"] .ra-mo.now{color:var(--accent-strong, #8b93e6) !important}
html[data-theme="dark"] :is(.pill.dealer, .pill.dist){color:#a3aaee !important}
/* G17 폰 해외영업 당월 출고 검색칸(#dbFilter.dbq) 28px — 앱 규칙이 높이를 고정해 공통 44px 규칙이 빠졌다 */
@media (max-width:760px){ html:is(.lin-shell,.lin-ios) .work :is(.scbar .dbq, #dbFilter, input.dbq){min-height:44px !important;height:auto !important;font-size:16px !important} }
/* G19 관리자 제목: admin.css 의 「#main .lin-h1 h1 { 24px !important }」(아이디)가 이겼다 → 같은 아이디로 · MES 「조회 조건」 12px(app.css sop 전용) → #pWork 로 */
html:is(.lin-shell,.lin-ios) #main .lin-h1 h1{font-size:30px !important;font-weight:700 !important;letter-spacing:-.6px;line-height:1.15 !important} /* 10-09 줄높이도 큰 제목과 같게(종전 1.3) */
@media (max-width:760px){ html:is(.lin-shell,.lin-ios) #main .lin-h1 h1{font-size:34px !important;letter-spacing:-.8px} }
html:is(.lin-shell,.lin-ios) #pWork .cf-head h2, html:is(.lin-shell,.lin-ios) .work .cf-head h2{font-size:13px !important;font-weight:500 !important}

/* ═══ 10-07 메인 직전 최종 점검(qa_261007_final) — 공통 틀 결함 ═══ */
/* F2 폰: 글 폭대로 두는 칸 단추 묶음(.lin-seg-free)이 격자 칸 min-width:0 때문에 묶음 폭에 맞춰 눌려 글자가 겹쳤다 → 칸은 글보다 좁아지지 않는다 */
:root:not(#lin-sa):not(#lin-sb):not(#lin-sc):is(.lin-shell,.lin-ios) .work .lin-seg-free > :where(button, [role="tab"], .ra-seg){min-width:max-content !important}
:root:not(#lin-sa):not(#lin-sb):not(#lin-sc):is(.lin-shell,.lin-ios) .work .lin-seg-free{grid-auto-columns:max-content !important}
/* F4 앱이 직접 고정한 표 첫 칸(lin-stk — lin_glass.js stickyOpaque)은 불투명 */
/* (10-07 재확인 N1) 머리 줄은 lin_glass.js stickyOpaque 가 옆 칸 바탕색으로 칠한다(판 색 하나로 칠하면 1440 머리가 두 톤). 몸통·합계 줄은 받침으로 판 색을 깐다(재확인2 F4) */
html:is(.lin-shell,.lin-ios) #pWork table.lin-stk.lin-stk > :is(tbody, tfoot) > tr > :first-child,
html:is(.lin-shell,.lin-ios) .work table.lin-stk.lin-stk > :is(tbody, tfoot) > tr > :first-child{background-color:var(--panel) !important}
/* F6 첫 그리기 동안 메뉴 시트 전환 끔(lin-boot 는 문서 머리 스크립트가 달고 lin_glass.js 가 뗀다) */
html.lin-boot :is(#rail, .rail, .hshell, .lin-tabbar){transition:none !important}
/* F8 다크 주 단추: 밝은 강조색(#8b93e6) 바탕에 흰 글 2.8:1 → 다크에서는 기본 강조색 바탕(흰 글 4.5:1 넘음) */
html[data-theme="dark"] .btn.pri{background:var(--accent) !important;border-color:var(--accent) !important;color:#fff !important}
html[data-theme="dark"] .btn.pri:hover{background:var(--accent-hi, #6d78d5) !important;border-color:var(--accent-hi, #6d78d5) !important}
/* F9 관리자 편집 권한: 앱 줄 요약이 칸 밖으로 넘쳐 말줄임 없이 잘림 → 칸 안에서 말줄임 */
html:is(.lin-shell,.lin-ios) #main td.tree-name{min-width:0;overflow:hidden}
html:is(.lin-shell,.lin-ios) #main td.tree-name .app-sum{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
/* F11 관리자 숫자 열 오른쪽 정렬 */
html:is(.lin-shell,.lin-ios) #main :is(td, th).num{text-align:right !important;font-variant-numeric:tabular-nums}
/* F12 오류·개선 요청 제목 = 다른 앱 화면 제목(30/700 · 폰 34) */
html:is(.lin-shell,.lin-ios) #vTitle{font-size:30px !important;font-weight:700 !important;letter-spacing:-.6px}
@media (max-width:760px){ html:is(.lin-shell,.lin-ios) #vTitle{font-size:34px !important} }
/* F17 폰 Data 판 좌우 여백 0 → 다른 앱과 같은 12 */
@media (max-width:760px){ html:is(.lin-shell,.lin-ios)[data-app="data"] .shell > .main > .work{padding-left:12px !important;padding-right:12px !important} }

/* ═══ 10-07 최종 재확인 남은 결함 ═══ */
/* F3 폰 격자 표: 머리는 판 머리 아래로 내렸지만 굴러 올라오는 몸통 줄(고정 열 z 10 등)이 머리 위에 그려졌다 → 머리 층을 몸통보다 위로 */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work .tabulator > .tabulator-header{z-index:30 !important}
  html:is(.lin-shell,.lin-ios) .work .tabulator > .tabulator-header .tabulator-frozen{z-index:31 !important}
}
/* F12 오류·개선 요청 제목: 이 화면은 lin-shell 표시가 없어 앞 규칙이 안 닿았다 → 아이디 두 번(특이도)으로 */
:root #vTitle#vTitle{font-size:30px !important;font-weight:700 !important;letter-spacing:-.6px}
@media (max-width:760px){ :root #vTitle#vTitle{font-size:34px !important} }
/* F17 폰 Data 판 여백: 품목코드·거래처 화면은 작업면이 #pWork 라 앞 규칙(.shell > .main > .work)이 안 닿았다 */
@media (max-width:760px){ html:is(.lin-shell,.lin-ios)[data-app="data"] :is(#pWork, .work){padding-left:12px !important;padding-right:12px !important} }

/* ═══ 10-07 재확인2 ═══ */
/* F3 폰 격자 표 머리 바탕이 4% 반투명(rgba(15,23,42,.043))이라 밑을 지나는 줄 글이 비쳤다 — color-mix 의 --panel 이 격자 안에서 투명으로 풀렸다(실측)
   → 머리는 테마별 고정 불투명 색 */
html:is(.lin-shell,.lin-ios) .work .tabulator .tabulator-header,
html:is(.lin-shell,.lin-ios) .work .tabulator .tabulator-header .tabulator-col{background-color:#f3f4f5 !important;background-image:none !important}
html:is(.lin-shell,.lin-ios)[data-theme="dark"] .work .tabulator .tabulator-header,
html:is(.lin-shell,.lin-ios)[data-theme="dark"] .work .tabulator .tabulator-header .tabulator-col{background-color:#262627 !important}
/* F12 오류·개선 요청 제목: admin.css 「#main #p-list > h2:first-child」(아이디 둘)가 이겼다 → 아이디 셋 */
:root #vTitle#vTitle#vTitle{font-size:30px !important;font-weight:700 !important;letter-spacing:-.6px}
@media (max-width:760px){ :root #vTitle#vTitle#vTitle{font-size:34px !important} }

/* 10-07 MES 일본(나현 재이식 #23 · .jx-seg): 원본 대시보드의 파란 채움 미끄럼 칩 → 전 메뉴 한 규칙(위 「10-06 토글 통일」 목록에 .jx-seg 추가)을 따르고
   미끄러지는 파란 표시(.thumb)는 숨긴다(미끄럼은 Schedule 만 · 10-06 결정). Linear 를 끈 옛 화면(--classic)은 원본 모양 그대로 */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work .jx-seg > .thumb{display:none !important}
/* (이어서) 폰: 일본 기간 날짜 칸이 128px 고정이라 폰 글자(16px)에서 「yyyy-mm-dd」 뒤가 잘렸다 → 두 칸이 줄 폭을 나눠 쓴다 */
@media (max-width:760px){
  html:is(.lin-shell,.lin-ios) .work .jx-dates{display:flex !important;width:100%;margin-left:0 !important}
  html:is(.lin-shell,.lin-ios) .work .jx-dates > .field{flex:1 1 0;min-width:0}
  html:is(.lin-shell,.lin-ios) .work .jx-dates input{width:100% !important;min-width:0}
}
/* 10-07 해외영업 › 일본(나현 #26 · MES 에서 옮김): MES 식 입력 틀(label.field = 테두리 있는 틀 + 안의 입력칸)이 해외영업에선
   안의 입력칸에도 앱 입력 테두리가 붙어 검색·날짜 칸이 두 겹 테두리로 보였다 → 틀 안 입력칸은 테두리·바탕 없이(틀이 테두리를 그린다).
   전 앱 점검: label.field 안 입력칸은 이 화면 3칸뿐(다른 화면 0) */
:root:not(#lin-sa):not(#lin-sb):is(.lin-shell,.lin-ios) .work label.field > :is(input, select, textarea){border:0 !important;box-shadow:none !important;background:transparent !important;outline-offset:0}

/* 10-08 표 머리 글을 그 열 내용과 같은 정렬로(lin_glass.js headAlign 이 다는 표시) — 머리 안이 flex(정렬 단추 등)여도 같은 쪽으로 */
html:is(.lin-shell,.lin-ios):root:root th.lin-ha-r.lin-ha-r{text-align:right !important;justify-content:flex-end !important}
html:is(.lin-shell,.lin-ios):root:root th.lin-ha-c.lin-ha-c{text-align:center !important;justify-content:center !important}
html:is(.lin-shell,.lin-ios):root:root th.lin-ha-l.lin-ha-l{text-align:left !important;justify-content:flex-start !important}
/* 머리 안 글 상자(정렬 단추 · 두 줄 이름표 등)도 같은 쪽으로 — 라이브러리 제품 비교 머리(회사 · 제품 두 줄 span)가 제 정렬을 따로 갖고 있었다 */
html:is(.lin-shell,.lin-ios):root:root th.lin-ha-r > :is(button, span, div, a, b, small){text-align:right !important;justify-content:flex-end !important}
html:is(.lin-shell,.lin-ios):root:root th.lin-ha-c > :is(button, span, div, a, b, small){text-align:center !important;justify-content:center !important}
html:is(.lin-shell,.lin-ios):root:root th.lin-ha-l > :is(button, span, div, a, b, small){text-align:left !important;justify-content:flex-start !important}

/* 10-08 사용자 지적(다크모드 Incoterms 등 목록 상자를 펼치면 흰 바탕에 흰 글자 · 「품목코드 드롭다운도 안 되네」) —
   윈도우 크롬은 <select> 펼침 창을 문서 색 설정(color-scheme)대로 그리지 않고 흰 바탕으로 그린다. 글자색은 select 에서 물려받아(다크 = 밝은 글자)
   고른 줄 말고는 안 보였다. 계산값 검사로는 안 잡힌다(color-scheme 은 dark 로 나온다) → 항목 색을 직접 박는다(전 화면 공통 · 밝은 테마도 짝 지정) */
html:is(.lin-shell,.lin-ios) select option, html:is(.lin-shell,.lin-ios) select optgroup{background-color:#ffffff;color:#1b1b1b}
html:is(.lin-shell,.lin-ios)[data-theme="dark"] select option, html:is(.lin-shell,.lin-ios)[data-theme="dark"] select optgroup{background-color:#1e1f22;color:#ededef}
@media (prefers-color-scheme:dark){
  html:is(.lin-shell,.lin-ios):not([data-theme="light"]) select option, html:is(.lin-shell,.lin-ios):not([data-theme="light"]) select optgroup{background-color:#1e1f22;color:#ededef}
}
html:is(.lin-shell,.lin-ios) select option:disabled{color:#8a8f98}

/* 10-08 폰 홈 윗줄 「밝기」·「가」 단추(lin_glass.js mtopTools) — 오른쪽 위 내 얼굴 단추(약 56px) 왼쪽에 둔다 */
.lin-mtools{display:none}
@media (max-width:760px){
  html.lin-hub .lin-mtools{display:flex;gap:6px;margin-left:auto;margin-right:60px}
  html.lin-hub .lin-mtop .lin-mtools button{display:grid;width:36px;height:36px;border-radius:9999px;background:var(--panel);color:var(--ink-2);place-items:center;border:0;padding:0}
  html.lin-hub .lin-mtop .lin-mtools button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
}

/* 10-08 사용자 「홈/메뉴/나 이런 하단 메뉴바는 화면 하단에 붙여서 고정으로」 — 떠 있는 알약(좌우 12 · 아래 10 띄움)을 화면 맨 아래에 붙인 막대로.
   홈 막대 영역(safe-area)만큼 안쪽 여백을 둔다. 위에서 올라오는 시트·팝업의 바닥(84px)은 그대로 막대 위에 선다 */
@media (max-width:900px){
  html:root:root:root:root .lin-tabbar, html:root:root:root:root .lin-tabbar.lg{left:0 !important;right:0 !important;bottom:0 !important;
    height:calc(60px + env(safe-area-inset-bottom,0px)) !important;border-radius:0 !important;padding:4px 8px env(safe-area-inset-bottom,0px) !important;
    box-shadow:0 -1px 0 var(--line) !important}
  html:root:root:root:root .lin-tabbar button{border-radius:14px !important}
  /* 창이 열려 있으면 막대를 내린다(lin_glass.js ovlWatch) — 막대가 창의 「저장」을 덮던 것 */
  html.lin-ovl-open .lin-tabbar{display:none !important}
}

/* 10-08 사용자 「여기서 확인 글자 짤리는 것도」 — 폰 2칸 위젯에서 머리줄 오른쪽 글(「10월 8일 확인」)이 줄어들지 않는 칸(flex:none)이라 위젯 밖으로 잘렸다.
   한 줄에 안 들어가면 그 글만 다음 줄로 내린다(줄임표로 자르지 않는다 · 날짜가 정보다) */
@media (max-width:900px){
  .w-h{flex-wrap:wrap;row-gap:2px}
  .w-h .st{flex:0 1 auto;min-width:0;white-space:normal}
}

/* 10-09 폰에서 화면 폭에 안 들어가는 칸 단추 묶음 → 「지금 값 ▾」 알약 고르개(lin_glass.js segCollapse) */
/* 접힌 묶음 숨김 — 칸 단추 묶음 규칙(:root:not(#lin-sa):not(#lin-sb):not(#lin-sc) … display:grid !important)보다 세게 */
:root:not(#lin-sa):not(#lin-sb):not(#lin-sc):not(#lin-sd):is(.lin-shell,.lin-ios) .lin-seg-col, :root:not(#lin-sa):not(#lin-sb):not(#lin-sc):not(#lin-sd):is(.lin-shell,.lin-ios) .work .lin-seg-col{display:none !important}
/* 국내영업 판매정책 목차(①~⑤)는 고르개가 아니라 목차 — 폰에서 오른쪽 밖으로 56px 밀려 나가던 것 → 두 줄로 접는다 */
@media (max-width:760px){ :root:not(#lin-sa):not(#lin-sb):not(#lin-sc):is(.lin-shell,.lin-ios) .work .qtab.krpol-toc{display:flex !important;flex-wrap:wrap !important;gap:6px !important;width:auto !important} }
/* 폰 공통 입력칸 규칙(.work select · 16px·44px·폭 100%)보다 세게 — 알약 크기는 글 폭대로 */
:root:not(#lin-sa):not(#lin-sb):not(#lin-sc):not(#lin-sd):is(.lin-shell,.lin-ios) .work select.lin-segsel, :root:not(#lin-sa):not(#lin-sb):not(#lin-sc):not(#lin-sd):is(.lin-shell,.lin-ios) select.lin-segsel{width:auto !important;min-width:0 !important;flex:none !important;align-self:flex-start;font-size:14px !important}
.lin-segsel{-webkit-appearance:none;appearance:none;display:inline-block;max-width:100%;height:36px !important;min-height:36px !important;padding:0 34px 0 14px !important;margin:0 0 var(--s2,8px);
  border:0 !important;border-radius:9999px !important;background-color:var(--lin-tab-off,var(--panel)) !important;color:var(--ink) !important;font:inherit;font-size:14px !important;font-weight:600;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23959597' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important;background-position:right 12px center !important;background-size:16px 16px !important;box-shadow:inset 0 0 0 1px var(--line-2,var(--line)) !important;cursor:pointer}

/* ═══════════════════════════════════════════════════════════════════════
   11-10 S1 시안 — 사용자 결정(11-10) 「폰 MES 주문 현황부터」 + 「하단바·알약칩이 바로 이어져 넘어가는 모션」
   ① 칸 단추 미끄러짐 = 브라우저 화면 전환(View Transitions) · 고른 칸 그림만 옮긴다(앱 DOM 에 자식을 끼우지 않는다)
   ② 폰 하단 바 = 떠 있는 바(≤900 전역) + 바 안 표시 하나가 고른 단추로 미끄러진다(셸 자기 DOM)
   ③ 폰(≤760) MES 주문 현황(board) 시안 — 큰 제목 접힘 · 유리는 머리줄·하단 바·하단 시트만 · 좌우 16 · 필터 시트 · 하단 행동 바
   ⚠ 위쪽 옛 규칙은 지우지 않고 이 블록이 덮는다(10-06 단색 블록의 :root 넷보다 하나 더 · !important).
   짝: lin_glass.js 맨 끝 「11-10 S1 시안」 덩어리
   ═══════════════════════════════════════════════════════════════════════ */

/* ── ① 칸 단추 미끄러짐: 전환 동안 나머지 화면은 섞지 않는다(새 화면 즉시) · 고른 칸 그림만 움직인다 ── */
html.lin-vt-seg::view-transition-old(root), html.lin-vt-seg::view-transition-new(root){animation:none}
html.lin-vt-seg::view-transition-group(lin-seg){animation-duration:.24s;animation-timing-function:var(--sp-snappy, cubic-bezier(.2,.8,.2,1))}
/* 2안(채택): 옛 그림은 바로 숨기고 새 그림(새 칸 글자)이 알약과 함께 옮겨 간다 — 옛·새 글자 겹침(유령) 없음 */
html.lin-vt-seg::view-transition-old(lin-seg){animation:none;opacity:0}
html.lin-vt-seg::view-transition-new(lin-seg){animation:none;opacity:1}
html.lin-vt-seg.lin-vt-fade::view-transition-old(lin-seg){animation:revert;opacity:revert}
html.lin-vt-seg.lin-vt-fade::view-transition-new(lin-seg){animation:revert;opacity:revert}
/* 전환 동안 칸 단추 자체의 색 전환은 끈다(새 그림 안에서 한 번 더 번지지 않게) */
html.lin-vt-seg .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .jx-seg) > *{transition:none !important}

/* ── ② 떠 있는 하단 바(≤900 전역) — 10-08 「하단에 붙여 고정」 블록을 덮는다 ── */
@media (max-width:900px){
  html:root:root:root:root:root .lin-tabbar, html:root:root:root:root:root .lin-tabbar.lg{
    left:12px !important;right:12px !important;bottom:calc(8px + env(safe-area-inset-bottom,0px)) !important;
    height:60px !important;border-radius:30px !important;padding:4px !important;box-sizing:border-box !important;
    background:color-mix(in srgb, var(--panel) 80%, transparent) !important;
    -webkit-backdrop-filter:blur(20px) saturate(1.4) !important;backdrop-filter:blur(20px) saturate(1.4) !important;
    border:1px solid var(--line) !important;box-shadow:0 6px 20px rgba(0,0,0,.10) !important}
  html:root:root:root:root:root .lin-tabbar button{position:relative;z-index:1;border-radius:26px !important;background:transparent !important;gap:2px !important}
  html:root:root:root:root:root .lin-tabbar button.on{background:transparent !important}
  html:root:root:root:root:root .lin-tabbar button span{font-size:11px !important;font-weight:500 !important;line-height:1.2}
  html:root:root:root:root:root .lin-tabbar button.on span{font-weight:500 !important}
  html:root:root:root:root:root .lin-tabbar button svg{width:22px !important;height:22px !important}
  html:root:root:root:root:root .lin-tabbar .lin-s1-ind{position:absolute;z-index:0;top:4px;bottom:4px;left:0;width:var(--w,0px);
    transform:translateX(var(--x,0px));border-radius:26px;background:var(--lin-band);pointer-events:none;
    transition:transform .26s var(--sp-snappy, ease), width .26s var(--sp-snappy, ease), opacity .18s ease}
  html:root:root:root:root:root .lin-tabbar .lin-s1-ind.off{opacity:0}
  html:root:root:root:root:root .lin-tabbar .lin-s1-ind.now{transition:none}
  /* 본문 맨 끝 = 바 높이 60 + 띄움 8 + 숨 16 + 안전 영역 · 포커스가 바 뒤로 숨지 않게 */
  html:root:root:root:root:root:is(.lin-shell,.lin-ios) .shell > .main > .work{
    padding-bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;scroll-padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:900px) and (prefers-reduced-motion:reduce){ html:root:root:root:root:root .lin-tabbar .lin-s1-ind{transition:none} }
@media (max-width:900px) and (prefers-reduced-transparency:reduce), (max-width:900px) and (prefers-contrast:more){
  html:root:root:root:root:root .lin-tabbar, html:root:root:root:root:root .lin-tabbar.lg{background:var(--panel) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
}

/* ── ③ 폰 주문 현황(board) ── */
@media (max-width:760px){
  /* 머리줄 = 유리(내용이 밑으로 흐르게 작업면을 머리줄 밑까지 올린다) */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) .shell > .main > header:is(.topbar, .gbar){
    position:relative;z-index:20;
    background:color-mix(in srgb, var(--panel) 80%, transparent) !important;
    -webkit-backdrop-filter:blur(20px) saturate(1.4) !important;backdrop-filter:blur(20px) saturate(1.4) !important;
    border:0 !important;border-bottom:1px solid var(--line) !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) .shell > .main > #pWork{
    margin-top:calc(-1 * var(--lin-mhead, 53px)) !important;padding-top:var(--lin-mhead, 53px) !important;
    scroll-padding-top:var(--lin-mhead, 53px);
    padding-left:16px !important;padding-right:16px !important}
  /* 작은 제목(머리줄 가운데) — 큰 제목이 머리줄 밑으로 사라지면 나타난다(lin_glass.js S1 titleWatch) */
  .lin-s1-ct{display:none}
  html[data-app="sop"][data-screen="board"] .shell > .main > header .lin-s1-ct{display:block;position:absolute;left:50%;top:0;bottom:0;transform:translateX(-50%);
    max-width:56%;line-height:var(--lin-mhead, 53px);font-size:17px;font-weight:600;color:var(--ink);letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    opacity:0;transition:opacity .2s ease;pointer-events:none}
  html.lin-s1-small[data-app="sop"][data-screen="board"] .shell > .main > header .lin-s1-ct{opacity:1}
  /* 큰 제목 28/700 · 위 여백 12 */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > h1[data-screen-title]{
    font-size:28px !important;font-weight:700 !important;line-height:1.25 !important;margin:12px 0 4px !important;padding:0 !important;letter-spacing:-.5px}
  /* 요약 카드 깊이 = 데스크톱과 같게(큰 그림자 없음 · 1px 선) — 표 판도 같은 깊이 */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > :is(.stages, .panel){
    box-shadow:none !important;border:1px solid var(--line-2, var(--line)) !important}
  /* 조회 조건 → 닫힌 상태: [Invoice No. 검색칸] + [필터 N] 한 줄 */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt{
    display:grid !important;grid-template-columns:minmax(0,1fr) auto !important;align-items:center !important;column-gap:8px !important;
    background:transparent !important;box-shadow:none !important;border:0 !important;padding:0 !important;margin:8px 0 0 !important;border-radius:0 !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt > .cf-head{display:none !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt .cf-grid{display:block !important;margin:0 !important;padding:0 !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt .cf-grid > .cf-c:not(:first-child){display:none !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt .cf-grid > .cf-c:first-child{
    display:flex !important;flex-direction:row !important;align-items:center !important;height:44px !important;padding:0 12px !important;margin:0 !important;gap:8px !important;
    background:var(--panel) !important;border:1px solid var(--line-2, var(--line)) !important;border-radius:12px !important;box-shadow:none !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt .cf-grid > .cf-c:first-child label{
    flex:none !important;width:auto !important;max-width:none !important;font-size:13px !important;color:var(--ink-3) !important;white-space:nowrap}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt .cf-grid > .cf-c:first-child input{
    flex:1 1 auto !important;min-width:0 !important;width:auto !important;height:42px !important;border:0 !important;background:transparent !important;box-shadow:none !important;padding:0 !important;font-size:16px !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt > .cf-act{
    display:flex !important;margin:0 !important;padding:0 !important;border:0 !important;gap:0 !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios):not(.lin-s1-sheet) #pWork > .cfilt > .cf-act > :not(.cf-fold){display:none !important}
  /* [필터 N] = 앱의 「조건 N개 펼치기」 단추를 그대로 쓴다(누르면 셸이 시트를 연다) */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-fold{
    display:inline-flex !important;align-items:center;justify-content:center;gap:6px;height:44px !important;min-height:44px !important;padding:0 14px !important;margin:0 !important;
    border-radius:12px !important;border:1px solid var(--line-2, var(--line)) !important;background:var(--panel) !important;color:var(--ink) !important;
    font-size:14px !important;font-weight:600 !important;white-space:nowrap;counter-reset:s1n var(--s1-n, 0)}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-fold > span{display:none !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-fold::before{content:"필터";
    padding-left:20px;background:no-repeat left center / 16px 16px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23959597' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 6h16M7 12h10M10 18h4'/%3E%3C/svg%3E")}
  html:root:root:root:root:root:root.lin-s1-has[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-fold::before{content:"필터 " counter(s1n)}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-fold::after{display:none !important;content:none !important}
  html:root:root:root:root:root:root.lin-s1-has[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-fold{color:var(--accent) !important;border-color:color-mix(in srgb, var(--accent) 45%, transparent) !important}
  /* 적용된 조건 칩(셸 자기 요소 · 검색칸 아래) — 앱의 「적용된 조건」 줄은 같은 내용이라 폰에선 이 칩이 대신한다 */
  .lin-s1-cfx{display:none}
  html[data-app="sop"][data-screen="board"] #pWork > .lin-s1-cfx{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:8px 0 0;padding:0;flex:none}
  html[data-app="sop"][data-screen="board"] #pWork > .lin-s1-cfx::-webkit-scrollbar{display:none}
  html[data-app="sop"][data-screen="board"] #pWork > .lin-s1-cfx:empty{display:none}
  html.lin-s1-sheet[data-app="sop"][data-screen="board"] #pWork > .lin-s1-cfx{margin-top:calc(var(--s1-cfh, 44px) + 8px)}
  html.lin-s1-sheet[data-app="sop"][data-screen="board"] #pWork > .lin-s1-cfx:empty{display:block;height:0}
  .lin-s1-cfx button{flex:none;display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 6px 0 12px;border-radius:16px;border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);
    background:color-mix(in srgb, var(--accent) 8%, var(--panel));color:var(--ink);font:inherit;font-size:13px;white-space:nowrap;cursor:pointer}
  .lin-s1-cfx button i{display:grid;place-items:center;width:20px;height:20px;border-radius:10px;font-style:normal;color:var(--ink-3);font-size:15px;line-height:1}
  .lin-s1-cfx button.all{padding:0 12px;border-color:var(--line-2, var(--line));background:transparent;color:var(--ink-2)}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork #cfApplied{display:none !important}
  /* 하단 시트 — 같은 조회 조건 판(.cfilt)을 그 자리에서 시트로 띄운다(앱 이벤트가 그대로 돈다) */
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt{
    position:fixed !important;left:0 !important;right:0 !important;bottom:0 !important;top:auto !important;z-index:97 !important;margin:0 !important;
    display:flex !important;flex-direction:column !important;max-height:calc(85dvh * var(--zk, 1)) !important;width:auto !important;box-sizing:border-box !important;
    padding:22px 16px calc(12px + env(safe-area-inset-bottom,0px)) !important;border-radius:20px 20px 0 0 !important;
    background:color-mix(in srgb, var(--panel) 80%, transparent) !important;
    -webkit-backdrop-filter:blur(20px) saturate(1.4) !important;backdrop-filter:blur(20px) saturate(1.4) !important;
    border:1px solid var(--line) !important;border-bottom:0 !important;box-shadow:0 -6px 20px rgba(0,0,0,.10) !important;
    animation:linS1Up .32s var(--sp-smooth, ease) both}
  html.lin-s1-sheet[data-app="sop"][data-screen="board"] #pWork > .cfilt::before{content:"";position:absolute;left:50%;top:8px;width:36px;height:5px;margin-left:-18px;border-radius:3px;background:var(--line)}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-head{display:block !important;margin:0 0 10px !important;height:auto !important}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-head h2{font-size:17px !important;font-weight:600 !important;color:var(--ink) !important}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-grid{
    display:grid !important;grid-template-columns:minmax(0,1fr) !important;gap:8px !important;flex:1 1 auto !important;align-self:stretch !important;width:auto !important;min-height:0 !important;overflow-y:auto !important;overscroll-behavior:contain;
    padding:0 0 8px !important;margin:0 !important}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-grid > .cf-c{
    display:flex !important;flex-direction:row !important;align-items:center !important;height:44px !important;min-height:44px !important;flex:none !important}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt .cf-grid > .cf-c :is(input, select){height:40px !important;font-size:16px !important}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-act{
    display:grid !important;grid-template-columns:1fr 2fr !important;gap:8px !important;flex:none !important;margin:0 !important;align-self:stretch !important;width:auto !important;padding:12px 0 0 !important;border-top:1px solid var(--line-2, var(--line)) !important}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-act > *{height:44px !important;min-height:44px !important;width:100% !important;margin:0 !important;justify-content:center}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-act > [data-cf-clear]{order:1}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-act > [data-cf-go]{order:2}
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt > .cf-act > .cf-fold{display:none !important}
  .lin-s1-scrim{display:none}
  html.lin-s1-sheet[data-app="sop"][data-screen="board"] .lin-s1-scrim{display:block;position:fixed;inset:0;z-index:96;background:rgba(0,0,0,.32);animation:linS1Fade .2s ease both}
  /* 목록 머리: 「일괄 저장」은 하단 행동 바로 옮긴다(앱 단추는 그대로 두고 대신 누른다) · 검색칸과 ⋯ 를 한 줄에 */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .panel .p-tools [data-bulklabel]{display:none !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .panel .p-tools{display:flex !important;flex-wrap:wrap !important;gap:8px !important;align-items:center !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .panel .p-tools > .drange{flex:1 1 100% !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .panel .p-tools > .field{flex:1 1 0 !important;min-width:0 !important;width:auto !important;margin:0 !important}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .panel .p-tools > #moreBtn{flex:none !important;width:44px !important;height:44px !important;margin:0 !important}
  /* 범례 두 줄 → 한 줄 가로 밀기 */
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork .lin-legend{
    display:flex !important;flex-wrap:nowrap !important;overflow-x:auto !important;overflow-y:hidden !important;scrollbar-width:none;white-space:nowrap !important;max-width:100%;min-width:0}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork .lin-legend::-webkit-scrollbar{display:none}
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork .lin-legend > *{flex:none !important}
  /* 하단 행동 바 — 바뀐 칸이 있어 일괄 저장이 살아 있을 때만 하단 바 위(8 간격)에 뜬다 */
  .lin-s1-act{display:none}
  html.lin-s1-dirty[data-app="sop"][data-screen="board"]:not(.lin-s1-sheet):not(.lin-ovl-open) .lin-s1-act{display:flex;position:fixed;left:12px;right:12px;z-index:84;
    bottom:calc(76px + env(safe-area-inset-bottom,0px));height:52px;box-sizing:border-box;align-items:center;gap:8px;padding:0 6px 0 16px;border-radius:26px;
    background:var(--panel);border:1px solid var(--line);box-shadow:0 6px 20px rgba(0,0,0,.10);animation:linS1Rise .26s var(--sp-snappy, ease) both}
  .lin-s1-act span{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .lin-s1-act button{flex:none;height:40px;padding:0 18px;border-radius:20px;border:0;background:var(--accent);color:#fff;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
  .lin-s1-act button:disabled{opacity:.5}
  html.lin-s1-dirty[data-app="sop"][data-screen="board"] .shell > .main > #pWork{padding-bottom:calc(144px + env(safe-area-inset-bottom,0px)) !important;scroll-padding-bottom:calc(144px + env(safe-area-inset-bottom,0px))}
}
@keyframes linS1Up{from{transform:translateY(100%)}to{transform:none}}
@keyframes linS1Fade{from{opacity:0}to{opacity:1}}
@keyframes linS1Rise{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
@media (max-width:760px) and (prefers-reduced-motion:reduce){
  html[data-app="sop"][data-screen="board"] #pWork > .cfilt, .lin-s1-scrim, .lin-s1-act{animation:none !important}
  html[data-app="sop"][data-screen="board"] .shell > .main > header .lin-s1-ct{transition:none}
}
/* 투명도 줄이기 · 대비 높이기 = 유리 대신 단색 */
@media (max-width:760px) and (prefers-reduced-transparency:reduce), (max-width:760px) and (prefers-contrast:more){
  html:root:root:root:root:root:root[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) .shell > .main > header:is(.topbar, .gbar),
  html:root:root:root:root:root:root.lin-s1-sheet[data-app="sop"][data-screen="board"]:is(.lin-shell,.lin-ios) #pWork > .cfilt{
    background:var(--panel) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
}
