/* ═══════════════════════════════════════════════════════════════════════
   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.lin-shell body, html.lin-shell .shell, html.lin-hub body.hubon .hub, html.lin-hub 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.lin-shell #rail, html.lin-shell .rail, html.lin-hub body.hubon .hrail, html.lin-hub body.hubon .hshell{background:transparent !important}
html.lin-shell .shell > .main, :root:root:root.lin-hub[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.lin-shell .shell > .main, html[data-theme="dark"].lin-shell .shell > .main,
:root:root:root.lin-hub[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.lin-shell .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"].lin-shell .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.lin-shell :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.lin-shell :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.lin-shell .pop:not([hidden]){animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:top right}
html.lin-shell dialog.palette[open] .pal-box{animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both;transform-origin:top center}
html.lin-shell .modal-box, html.lin-shell .sheet-card{animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both}
html.lin-shell .work > .lin-in{animation-timing-function:var(--sp-smooth) !important;animation-duration:var(--sp-smooth-d) !important}
/* 팝업·창·명령 팔레트 = 리퀴드 글래스(두꺼운 재질: 그림자 깊게) */
html.lin-shell .pop, html.lin-shell .pal-box, html.lin-shell .modal-box{border:0 !important;border-radius:18px !important}
html.lin-shell dialog.palette::backdrop{background:rgba(10,12,20,.28);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}

/* ── A8 알림 = 위에서 내려오는 섬(Dynamic Island) ── */
html.lin-shell .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.lin-shell .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.lin-shell body.rail-collapsed .shell{grid-template-columns:0 minmax(0,1fr) !important}
  html.lin-shell body.rail-collapsed #mstrip{display:none !important}
  html.lin-shell body.rail-collapsed .shell > .main{grid-column:2;margin-left:8px !important}
  html.lin-shell.lin-shell body.rail-collapsed #rail{display:block !important;position:fixed !important;left:8px;top:8px;bottom:8px;
    width:260px !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.lin-shell.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.lin-shell body.rail-collapsed .lin-edge{display:block;position:fixed;left:0;top:0;bottom:0;width:14px;z-index:89}
  html.lin-shell body.rail-collapsed .lin-open{display:inline-grid}
  /* 허브도 같다 */
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hshell{width:0 !important;overflow:visible !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hstrip{display:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hrail{display:block !important;position:fixed !important;left:8px !important;top:8px;bottom:8px;
    width:260px !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.lin-hub.lin-peek[data-shell="v2"] body.hubon.rail-collapsed .hrail{transform:none;visibility:visible !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hrail .lin-side{display:flex !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .hubwrap,
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed.hubboard #hub .hubwrap{margin-left:8px !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .corner{left:9px !important;clip-path:none !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon.rail-collapsed .lin-edge{display:block;position:fixed;left:0;top:0;bottom:0;width:14px;z-index:89}
}
/* 머리줄 왼쪽 「사이드바 열기」 단추(접혔을 때만) */
.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.lin-scrolled > .work{-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){
  html.lin-shell .shell > .main > header:is(.gbar, .topbar){min-height:52px !important;height:auto !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.lin-shell .shell > .main > header #railBtn, html.lin-shell .shell > .main > header .vtabs,
  html.lin-shell .shell > .main > header #favBtn, html.lin-shell .shell > .main > header #themeBtn{display:none !important}
  /* 아래 탭 막대가 검색·알림·나를 맡으므로 위 줄은 앱 이름 하나만(iOS 내비 막대) — 단추는 숨겨도 탭 막대가 그대로 누른다 */
  /* 단추를 지우면(display:none) 위치가 0 이 되어 알림 팝업이 엉뚱한 데 뜬다 → 자리는 두고 보이지만 않게 */
  html.lin-shell .shell > .main > header .gright{position:absolute !important;right:8px;top:6px;opacity:0 !important;pointer-events:none !important}
  html.lin-shell .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}
  /* 알림 팝업 = 탭 막대 위로 올라오는 시트 */
  html.lin-shell .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.lin-shell .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"].lin-shell .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"].lin-shell .rail.open{transform:none !important}
  :root:root[data-shell="v2"].lin-shell .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"].lin-shell .rail .lin-side{height:auto !important;overflow:visible !important}
  /* 입력칸: iOS 채움 칸 · 16px(아이폰 확대 방지) · 44px */
  html.lin-shell .work :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea){font-size:16px !important;min-height:44px;border-radius:12px !important}
  /* 열린 탭(메뉴 시트 안 「열린 화면」) */
  .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.lin-hub[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.lin-hub[data-shell="v2"] body.hubon.lin-drawer .hshell{transform:none !important}
  :root:root:root.lin-hub[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.lin-hub[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.lin-shell *, 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.lin-shell .modal{background:rgba(10,12,20,.22) !important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
html.lin-shell .mdl{border:0 !important;border-radius:22px !important;animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both}
html.lin-shell :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.lin-shell .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.lin-shell .drawer.open{transform:none !important}
}
@media (max-width:760px){
  html.lin-shell .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.lin-shell .drawer.open{transform:none !important}
  html.lin-shell .mdl{border-radius:26px 26px 0 0 !important;align-self:flex-end;animation:lgUp var(--sp-smooth-d) var(--sp-smooth) both}
  html.lin-shell .modal{align-items:flex-end !important;padding:0 !important}
}
/* 말풍선 = 작은 어두운 유리 알약 */
html.lin-shell :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.lin-shell .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.lin-shell .qa-fab{bottom:calc(86px + env(safe-area-inset-bottom,0px)) !important} }

/* ── 10-06 Dashboard 창 머리(QA B13): 흰 사각 띠(sticky·#fff·좌우 여백 0)가 유리 창과 따로 놀았다 → 창 가장자리까지 닿는 유리 띠 ── */
html.lin-shell #dashModal .modal-h{margin:-20px -22px 8px !important;padding:18px 22px 10px !important;border-radius:18px 18px 0 0;
  background:color-mix(in srgb, var(--panel) 72%, transparent) !important;-webkit-backdrop-filter:blur(18px) saturate(180%);backdrop-filter:blur(18px) saturate(180%);
  border-bottom:.5px solid var(--line-2) !important}
@media (max-width:600px){ html.lin-shell #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.lin-shell .shell > .main > header :is(#searchBtn, #bellBtn, .gme){position:absolute !important;right:8px;top:6px;opacity:0 !important;pointer-events:none !important}
  /* 메뉴 시트 오른쪽 위 단추 = 닫기(✕). 종전엔 데스크톱의 '사이드바 접기' 그림이 그대로 나왔다 */
  html.lin-shell .rail .lin-ws .lin-ib svg{display:none}
  html.lin-shell .rail .lin-ws .lin-ib{width:32px;height:32px;background:var(--lin-band)}
  html.lin-shell .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: Data 는 작업면 좌우 여백이 0 이라 큰 제목이 화면 끝에 붙었다 → 다른 앱과 같은 16px 에서 시작 */
  html.lin-ios[data-app="data"] .work h1[data-screen-title]{padding-left:16px !important;padding-right:16px !important}
}

/* ── 10-06 사용자 지적(토글이 서로 다름): 모양 = 장비·소모품(iOS 칸 단추) · 움직임 = Schedule 처럼 고른 알약이 미끄러져 이어짐 ──
   ① Schedule(.ra-toggle)은 자기 알약(.ra-pill)이 이미 미끄러진다 → 모양만 iOS 칸 단추로(흰 테두리 막대 · 칸 사이 세로선 → 회색 홈 · 흰 알약)
   ② 나머지 칸 단추는 lin_glass.js 가 고른 칸의 자리를 홈의 변수(--lin-tx·--lin-tw…)로만 알려 주고, 알약은 홈의 ::before 가 그린다.
      ⛔ 자식 요소를 끼워 넣지 않는다(10-06 앞서 끼워 넣은 알약을 앱이 단추로 바꿔 빈 흰 알약이 남았다 · QA B11) */
html.lin-shell .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.lin-shell .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.lin-shell .ra-seg[aria-selected="true"]{color:var(--ink) !important}
html.lin-shell .ra-seg + .ra-seg::before{display:none !important}
html.lin-shell .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.lin-shell .ra-pill.no-anim{transition:none !important}
html[data-theme="dark"].lin-shell .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.lin-shell .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.lin-shell dialog:not(.palette)[open]{border-radius:22px !important;animation:lgIn var(--sp-bouncy-d) var(--sp-bouncy) both}
html.lin-shell dialog:not(.palette)::backdrop{background:rgba(10,12,20,.22) !important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
html.lin-shell :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.lin-shell :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.lin-hub[data-shell="v2"] body.hubon .corner{top:8px !important;right:8px !important;border-radius:12px 12px 0 0 !important}
  :root:root:root.lin-hub[data-shell="v2"] body.hubon:not(.rail-collapsed) .corner{left:var(--hs-shellw,244px) !important}
  :root:root:root.lin-hub[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.lin-hub[data-shell="v2"] body.hubon .corner .quick > a{display:none !important}
:root:root:root:root.lin-hub[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.lin-hub[data-shell="v2"] body.hubon .corner .quick > .lin-htool:hover{background:var(--lin-band) !important;color:var(--ink) !important}
:root:root:root:root.lin-hub[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(.lin-shell, .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.lin-shell .shell > .main > header:is(.topbar, .gbar), html:root:root:root:root.lin-shell .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.lin-shell .shell > .main, :root:root:root:root.lin-hub[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"].lin-shell .rail.lg{background:var(--panel) !important}
/* 말풍선도 단색 어두운 판(흐림 없음) */
html:root:root:root:root.lin-shell :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.lin-hub[data-shell="v2"] body.hubon .corner .quick{gap:8px !important}
:root:root:root:root.lin-hub[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.lin-hub[data-shell="v2"] body.hubon .corner .quick > .lin-htool svg{width:15px !important;height:15px !important;stroke-width:1.9}
:root:root:root:root.lin-hub[data-shell="v2"] body.hubon .corner .quick > .lin-htool:hover{background:var(--lin-band) !important;color:var(--ink) !important}
:root:root:root:root.lin-hub[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}
:root:root:root:root.lin-hub[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.lin-shell .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"].lin-shell .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"].lin-shell .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.lin-hub[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.lin-shell #rail .lin-ib svg{display:none !important} html.lin-shell #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.lin-shell.lin-shell #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.lin-hub[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.lin-shell #rail .lin-opentabs{flex:none !important;min-height:44px}
  html.lin-shell #rail .lin-opentabs button{background:var(--lin-band) !important;color:var(--ink-2) !important;border:0 !important}
  html.lin-shell #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.lin-shell .drawer, html.lin-shell .pwin{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important;box-sizing:border-box}
  html.lin-shell .modal .mdl{margin-bottom:calc(84px + env(safe-area-inset-bottom,0px)) !important}
  /* M27 화면을 올려 맞춘 단추가 탭 막대 밑에 걸려 누르면 「알림」이 열렸다 → 스크롤 여백 */
  html.lin-shell, html.lin-shell .shell > .main, html.lin-shell .work{scroll-padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  /* M15 관리자 표: 표 머리 고정이 작업면 위 여백(20px) 아래에 붙어 그 틈으로 행 글자가 비쳤다 → 머리 위 틈을 판 색으로 덮는다 */
  html.lin-shell[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.lin-hub body.hubon .hubwrap .wbwrap{flex:none !important}
  :root:root:root.lin-hub body.hubon .hubwrap .wb{overflow:visible !important;flex:none !important;min-height:auto !important}
  :root:root:root.lin-hub 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.lin-shell .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.lin-shell .shell > .main > header .lin-zbtn{display:none !important}
}
/* 10-06 넓은 표 첫 열 고정(linear_theme.js freezeFirst 가 lin-f1 을 단다) — 바탕은 판 색(앱이 칸에 색을 깔았으면 앱 색이 이긴다: :where 로 특이도 0) */
html.lin-shell .work table.lin-freeze1 .lin-f1{position:sticky;left:0;z-index:2;box-shadow:inset -1px 0 0 var(--line)}
html.lin-shell .work table.lin-freeze1 thead .lin-f1{z-index:4}
:where(html.lin-shell .work table.lin-freeze1) tbody .lin-f1, :where(html.lin-shell .work table.lin-freeze1) tfoot .lin-f1{background-color:var(--panel)}
:where(html.lin-shell .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.lin-shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .seg, .kl-seg, .qtab, .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.lin-shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .seg, .kl-seg, .qtab, .ra-toggle, .krpol-seg):has(> :is(button, a, label, [role="radio"], [role="tab"]))::-webkit-scrollbar{display:none}
  html.lin-shell .work :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .seg, .kl-seg, .qtab, .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.lin-shell .work :has(> :is(.sectab, .cmbtns, .scmeas, .krds-seg, .krar-seg, .qa-seg, .lb-seg, .cf-seg, .seg, .kl-seg, .qtab, .ra-toggle, .krpol-seg)){min-width:0 !important;max-width:100% !important}
}
