/* MMT:BEGIN — 모멘터스 공용 셸(생성물). 손으로 고치지 말 것.
   정본: momentus/scripts/gen_site.py · 반영: momentus/scripts/sync_shell.py */
:root{--mmt-gut:clamp(20px, 4vw, 56px);--mmt-maxw:1320px;--mmt-wm-font:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Helvetica Neue","Segoe UI",sans-serif;--mmt-wm-fw:800;--mmt-wm-ls:-.035em;--mmt-wm-sm:16px;--mmt-wm-md:19px;--mmt-wm-lg:24px;--mmt-ink:#0b0c0e;--mmt-faint:#9aa0a8;--mmt-soft:#f4f5f7;--mmt-bar-h:44px;--mmt-bar2-h:64px;--mmt-fs-logo:22px;--mmt-fs-nav:14px;--mmt-fw-nav:600;--mmt-nav-gap:26px;--mmt-fs-cta:14px;--mmt-cta-pad:9px 18px;--mmt-cta-r:999px;--mmt-fs-base:16px;--mmt-lh-base:1.6;--mmt-ls-base:-0.015em;--mmt-fs-lead:18px;--mmt-lh-lead:1.65;--mmt-fs-sm:14px;--mmt-fs-h3:19px;--mmt-fs-h2:clamp(26px, 2.6vw, 34px);--mmt-lh-head:1.28;--mmt-ls-head:-0.035em;}
/* 2026-08-23 재교정 — **검정으로 되돌린다.**
   밝게 바꿨더니 제품 사이트(마크·큐)의 흰 헤더와 위아래로 겹쳐 어느 게 무슨 메뉴인지
   구분이 안 됐다(대표: "색깔도 위아래가 비슷하니 이게 무슨 메뉴인지 모르겠고").
   패밀리 바는 뒤로 물러나고 제품 브랜드가 앞에 서야 한다 — 그게 검정이었던 이유다.
   정렬도 가운데가 아니라 **좌측**. 제품마다 본문 폭이 달라(마크 1208 / apex 1176)
   가운데 정렬로는 로고 기준선이 영원히 안 맞는다. 아예 다른 층으로 둔다. */
#mmt-bar{display:block;box-sizing:border-box;width:100%;height:var(--mmt-bar-h,44px);
background:#14161a;color:#cfd4dc;position:relative;z-index:2147483002;
font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Helvetica Neue','Segoe UI',sans-serif;
letter-spacing:normal;line-height:normal}
#mmt-bar *,#mmt-bar *::after{box-sizing:border-box}
/* 애플 글로벌 내비 실측(2026-08-23, 1440 뷰포트): .globalnav-content max-width 1024px,
   좌우 padding 22px, 바 높이 44px. 뷰포트 끝에 붙이면 넓은 화면에서 왼쪽만 붙고
   오른쪽이 휑해진다 — 가운데로 모으고 그 안에서 좌측 정렬한다. */
#mmt-bar .mmt-in{display:flex;align-items:center;height:100%;gap:16px;
padding:0 clamp(16px,2.2vw,28px)}
/* 랜딩(apex)엔 아래에 제품 헤더가 없다 — 검정일 이유가 없고 가운데로 모은다.
   검정·좌측은 **제품 사이트**용이다: 그 아래 흰 제품 헤더가 오니 물러나 있어야 한다.
   (2026-08-23 대표: "검은색으로 하는 건 제품 페이지 들어갔을 때만") */
#mmt-bar[data-v=apex]{background:rgba(250,250,252,.86);color:rgba(0,0,0,.78);
backdrop-filter:saturate(1.8) blur(20px);-webkit-backdrop-filter:saturate(1.8) blur(20px);
border-bottom:1px solid rgba(0,0,0,.07)}
#mmt-bar[data-v=apex] .mmt-in{max-width:1224px;margin:0 auto;padding:0 24px}
#mmt-bar[data-v=apex] .mmt-wm{color:#111}
#mmt-bar[data-v=apex] .mmt-nav{margin:0 auto}
#mmt-bar[data-v=apex] a.mmt-it{color:rgba(0,0,0,.78)}
#mmt-bar[data-v=apex] a.mmt-it:hover{background:rgba(0,0,0,.055);color:#000}
#mmt-bar[data-v=apex] a.mmt-it[aria-current=page]{background:#111;color:#fff}
#mmt-bar[data-v=apex] .mmt-sep{background:rgba(0,0,0,.14)}
#mmt-bar[data-v=apex] .mmt-cta{background:transparent;color:rgba(0,0,0,.78);
box-shadow:inset 0 0 0 1px rgba(0,0,0,.18);font-weight:600}
#mmt-bar[data-v=apex] .mmt-cta:hover{background:rgba(0,0,0,.05);color:#000}
#mmt-bar[data-v=apex] .mmt-ib{color:rgba(0,0,0,.7)}
#mmt-bar[data-v=apex] .mmt-ib:hover{background:rgba(0,0,0,.06);color:#000}
#mmt-bar[data-v=apex] .mmt-fly{background:#fff;border:1px solid rgba(0,0,0,.09);
box-shadow:0 24px 48px -22px rgba(0,0,0,.24)}
#mmt-bar[data-v=apex] .mmt-fly-h{color:#86868b}
#mmt-bar[data-v=apex] .mmt-fly-it{color:#111}
#mmt-bar[data-v=apex] .mmt-fly-it:hover{background:rgba(0,0,0,.05)}
#mmt-bar[data-v=apex] .mmt-fly-it b{color:#111}
#mmt-bar[data-v=apex] .mmt-fly-it .th{background:rgba(0,0,0,.05);color:#333}
#mmt-bar[data-v=apex] .mmt-fly-grid .mmt-fly-it b{color:#3a4150}
#mmt-bar[data-v=apex] .mmt-fly-grid .mmt-fly-it .th{background:var(--soft,#f4f5f7)}
#mmt-bar[data-v=apex] .mmt-fly-foot a{color:#0071e3}
#mmt-bar .mmt-in::-webkit-scrollbar{display:none}
/* 워드마크는 바의 시스템 폰트를 상속하면 안 된다 — 본문(Pretendard)과 글자꼴이 갈린다. */
#mmt-bar .mmt-wm{flex:0 0 auto;
font-family:var(--mmt-wm-font,"Pretendard Variable",Pretendard,-apple-system,sans-serif);
font-size:var(--mmt-wm-sm,15px);font-weight:var(--mmt-wm-fw,800);
letter-spacing:var(--mmt-wm-ls,-.035em);color:#fff;text-decoration:none}
#mmt-bar .mmt-nav{display:flex;align-items:center;gap:2px;flex:0 0 auto}
#mmt-bar a.mmt-it{font-size:12.5px;font-weight:600;letter-spacing:-.02em;color:#cfd4dc;
text-decoration:none;padding:6px 11px;border-radius:99px;white-space:nowrap;position:relative}
#mmt-bar a.mmt-it:hover{background:rgba(255,255,255,.12);color:#fff}
#mmt-bar a.mmt-it .nb{font-style:normal;margin-left:5px;padding:1px 5px;border-radius:99px;
font-size:8.5px;font-weight:800;letter-spacing:.05em;background:#0071e3;color:#fff;vertical-align:1.5px}
#mmt-bar a.mmt-it[aria-current=page]{background:#fff;color:#14161a;font-weight:700}
#mmt-bar .mmt-sep{width:1px;height:14px;background:rgba(255,255,255,.2);flex:0 0 auto;margin:0 6px}
#mmt-bar i.mmt-ext{font-style:normal;font-size:9px;opacity:.55;margin-left:3px;vertical-align:super}
#mmt-bar a.mmt-it[data-sub]::after{content:none;position:absolute;top:calc(100% + 7px);left:50%;
transform:translateX(-50%) translateY(-3px);white-space:nowrap;background:#14161a;color:#fff;font-size:12px;
font-weight:500;padding:6px 11px;border-radius:8px;opacity:0;visibility:hidden;pointer-events:none;
transition:opacity .14s,transform .14s;box-shadow:0 10px 26px -12px rgba(0,0,0,.45)}
#mmt-bar a.mmt-it[data-sub]:hover::after,#mmt-bar a.mmt-it[data-sub]:focus-visible::after{
opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
@media(max-width:820px){#mmt-bar .mmt-in{gap:10px}#mmt-bar .mmt-sep{display:none}
#mmt-bar a.mmt-it{padding:5px 7px}#mmt-bar a.mmt-it[data-sub]::after{display:none}}
/* 모바일 셀렉션 — 좁은 화면에서 링크 7개를 가로로 흘리면 상단이 정신없고 잘린다.
   현재 제품 이름만 보이고 누르면 목록이 뜬다. <details> 라 **JS 없이도 동작**한다(바의 fail-open 규칙). */
#mmt-bar .mmt-pick{display:none;position:relative;margin-left:auto}
#mmt-bar .mmt-pick>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:5px;
font-size:13.5px;font-weight:700;color:#fff;padding:6px 13px;border-radius:999px;
background:rgba(255,255,255,.14);white-space:nowrap}
#mmt-bar .mmt-pick>summary::-webkit-details-marker{display:none}
#mmt-bar .mmt-pick>summary::after{content:"";width:0;height:0;border:4px solid transparent;
border-top-color:currentColor;margin-top:2px;opacity:.7}
#mmt-bar .mmt-menu{position:absolute;right:0;top:calc(100% + 9px);background:#14161a;border-radius:14px;
padding:6px;min-width:206px;box-shadow:0 18px 44px -14px rgba(0,0,0,.6);z-index:2147483001}
#mmt-bar .mmt-menu a{display:block;padding:10px 13px;border-radius:10px;color:#cfd4dc;
font-size:14.5px;font-weight:600;text-decoration:none;white-space:nowrap}
#mmt-bar .mmt-menu a[aria-current=page]{background:#fff;color:#14161a;font-weight:700}
#mmt-bar .mmt-menu hr{border:0;border-top:1px solid rgba(255,255,255,.12);margin:5px 8px}
@media(max-width:640px){#mmt-bar .mmt-in{gap:10px}
#mmt-bar .mmt-nav{display:none}#mmt-bar .mmt-pick{display:block}}
/* ⚠️ 액션(문의하기·검색·테마) 스타일은 **공용 셸**에 있어야 한다.
   apex 전용 CSS 에 두었더니 제품 사이트에서 문의하기가 스타일 없는 파란 밑줄 링크로
   나왔다(2026-08-24 빈방 실측). 마크업이 공용이면 스타일도 공용이다. */
#mmt-bar .mmt-act{margin-left:auto;display:flex;align-items:center;gap:4px;flex:0 0 auto}
/* 문의는 '메뉴'가 아니라 '행동'이다 — 토스 헤더가 앱 다운로드를 버튼으로 두는 자리.
   글자 수를 줄이려고 '문의'로 쓰던 것을 '문의하기'로 되돌린다(2026-08-23 대표 지적). */
/* 버튼도 내비와 같은 글자꼴·크기 — 하나만 튀면 메뉴가 아니라 광고로 읽힌다. */
/* 문의하기는 '있다'만 알리면 된다 — 꽉 채우면 광고처럼 튄다(2026-08-23 대표 지적). */
#mmt-bar .mmt-cta{display:inline-flex;align-items:center;height:28px;padding:0 13px;
border-radius:99px;background:transparent;color:#e6e9ee;
box-shadow:inset 0 0 0 1px rgba(255,255,255,.28);
font-size:12.5px;font-weight:600;letter-spacing:-.02em;
text-decoration:none;white-space:nowrap;margin-right:4px}
#mmt-bar .mmt-cta:hover{background:rgba(255,255,255,.12);color:#fff}
@media(max-width:640px){#mmt-bar .mmt-cta{display:none}}
#mmt-bar .mmt-ib{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;
border-radius:50%;background:none;color:#cfd4dc;cursor:pointer;transition:background .18s,color .18s}
#mmt-bar .mmt-ib:hover{background:rgba(255,255,255,.12);color:#fff}
#mmt-bar .mmt-ib svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.8;
stroke-linecap:round;stroke-linejoin:round}
#mmt-bar .mmt-ib .moon{display:none}
html[data-theme="dark"] #mmt-bar .mmt-ib .moon{display:block}
html[data-theme="dark"] #mmt-bar .mmt-ib .sun{display:none}
@media(prefers-reduced-motion:reduce){#mmt-bar a.mmt-it[data-sub]::after{transition:none}}
/* ── 제품 플라이아웃 ──────────────────────────────────────────────────────
   제품 이름을 바에 하나씩 늘어놓으면 제품이 늘 때마다 바가 길어지고 결국 잘린다
   (2026-08-23 대표: "제품이 늘어난다고 해서 이걸 다 올릴 순 없잖아").
   애플 글로벌 내비와 같은 방식 — 바에는 '제품' 하나, 목록은 호버 패널이 연다.
   ⚠️ JS 0. :has() 로만 연다. 지원 안 되는 브라우저에선 패널이 안 열리고 '제품'이
      그냥 /products/ 로 가는 평범한 링크가 된다(바의 fail-open 규칙). */
#mmt-bar .mmt-trg::after{content:"";display:inline-block;width:0;height:0;margin-left:5px;
border:3.5px solid transparent;border-top-color:currentColor;vertical-align:middle;opacity:.5}
/* 패널은 밝게, 썸네일은 크게, 설명 줄은 뺀다 — 목록은 고르라고 있는 것이지 읽으라고 있는 게 아니다
   (2026-08-23 대표: "심플하지만 썸네일도 큼직하게, 중요한 건 더 크게 간결하게"). */
/* ⚠️ 커튼(전체 화면 블러)은 걷어냈다. 이건 제품 사이트 위에 얹히는 **패밀리 메뉴**지
   그 사이트의 주 내비가 아니다 — 화면 전체를 덮으면 남의 집에서 주인 행세를 하는 꼴이다
   (2026-08-24 대표: "여전히 전체적으로 헤비한데"). 패널도 전체폭 → '더보기' 아래 작은 카드로. */
#mmt-bar .mmt-drop{position:relative;display:inline-flex}
#mmt-bar .mmt-fly{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%) translateY(-4px);
width:min(620px,calc(100vw - 24px));background:#1a1d22;border:1px solid rgba(255,255,255,.1);
border-radius:16px;box-shadow:0 24px 48px -20px rgba(0,0,0,.65);
opacity:0;visibility:hidden;z-index:2147483003;
transition:opacity .15s ease,transform .15s ease,visibility .15s}
#mmt-bar:has(.mmt-trg:hover) .mmt-fly,
#mmt-bar:has(.mmt-fly:hover) .mmt-fly,
#mmt-bar:has(.mmt-trg:focus-visible) .mmt-fly,
#mmt-bar:has(.mmt-fly a:focus-visible) .mmt-fly{opacity:1;visibility:visible;
transform:translateX(-50%) translateY(0)}
#mmt-bar .mmt-fly-in{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px;padding:14px 14px 4px}
#mmt-bar .mmt-fly-h{font-size:11px;font-weight:600;letter-spacing:.02em;color:#79828f;
margin:0 0 6px;padding:0 8px}
#mmt-bar .mmt-fly-it{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:9px;
text-decoration:none;color:#cfd4dc}
#mmt-bar .mmt-fly-it:hover{background:rgba(255,255,255,.09)}
#mmt-bar .mmt-fly-it .th{width:44px;height:28px;border-radius:6px;overflow:hidden;flex:0 0 auto;
background:rgba(255,255,255,.08);display:grid;place-items:center;font-size:13px;color:#e6e9ee}
#mmt-bar .mmt-fly-it .th img{width:100%;height:100%;object-fit:cover;display:block}
#mmt-bar .mmt-fly-it .tx{min-width:0}
#mmt-bar .mmt-fly-it b{font-size:13.5px;font-weight:600;letter-spacing:-.02em;color:#fff;
white-space:nowrap}
#mmt-bar .mmt-fly-it b .nb{font-style:normal;margin-left:6px;padding:1px 6px;border-radius:99px;
font-size:9px;font-weight:800;letter-spacing:.05em;background:#0071e3;color:#fff;vertical-align:1px}
#mmt-bar .mmt-fly-it i{display:none}
#mmt-bar .mmt-fly-it[aria-current=page]{background:rgba(255,255,255,.1)}
#mmt-bar .mmt-fly-it[aria-current=page] b{color:#8fc0ff}
#mmt-bar .mmt-fly-grid{display:flex;flex-direction:column;gap:0}
#mmt-bar .mmt-fly-grid .mmt-fly-it .th{width:26px;height:26px;border-radius:7px;background:#fff;padding:4px}
#mmt-bar .mmt-fly-grid .mmt-fly-it .th img{object-fit:contain}
#mmt-bar .mmt-fly-grid .mmt-fly-it b{font-size:13px;font-weight:500;color:#cfd4dc}
#mmt-bar .mmt-fly-foot{padding:6px 22px 14px}
#mmt-bar .mmt-fly-foot a{font-size:12.5px;font-weight:600;color:#8fc0ff;text-decoration:none}
#mmt-bar .mmt-fly-foot a:hover{text-decoration:underline}
@media(max-width:820px){#mmt-bar .mmt-fly{display:none}}
@media(prefers-reduced-motion:reduce){#mmt-bar .mmt-fly{transition:none}}

/* ── 글 페이지 공통 간격·크기 (목록 = 상세) ─────────────────────────────
   2026-08-24 대표: "목록은 상단 여백이 있는데 상세로 가면 굉장히 좁다.
   목록에 있는 간격 규칙이 상세에도 적용됐으면 좋겠다."
   실측 차이: 목록 상단 129.6px vs 상세 84px. 값을 각자 적어 두니 갈렸다 → 토큰 하나로.
   제목만 상세가 한 단계 크다(글의 주인공이라) — 그것도 여기서 정한다. */
:root{
--pg-top:clamp(64px,9vw,132px);      /* 바 아래 첫 요소까지 */
--pg-head-gap:clamp(26px,3.4vw,44px);/* 제목 블록 → 본문/목록 */
--pg-sub-gap:14px;                   /* 제목 → 부제 */
--pg-h1:clamp(34px,4.6vw,56px);      /* 목록 제목 */
--pg-h1-post:clamp(30px,4.4vw,64px); /* 글 제목 */
}
/* 카드 그림은 제품 og(1200x630) 비율 그대로 — 다른 비율로 자르면 글자가 잘린다 */
.nws-card .th,.dg-card .th{display:block;width:100%;aspect-ratio:1200/630;border-radius:16px;overflow:hidden;
background:var(--mmt-soft,#f4f5f7);display:block;margin:0}
.nws-card .th img,.dg-card .th img{width:100%;height:100%;object-fit:cover;display:block;
transition:transform .55s cubic-bezier(.2,.7,.3,1)}
.nws-card:hover .th img,.dg-card:hover .th img{transform:scale(1.04)}
.nws-card h3,.dg-card h3{margin-top:16px;font-size:17px;font-weight:700;letter-spacing:-.03em;
line-height:1.45;color:var(--mmt-ink,#0b0c0e);display:-webkit-box;-webkit-line-clamp:2;
-webkit-box-orient:vertical;overflow:hidden}
.nws-card .d,.dg-card .cat{margin-top:12px;font-size:14px;color:var(--mmt-faint,#9aa0a8);
font-variant-numeric:tabular-nums}
.dg-card .cat{margin-top:12px;order:2}
.dg-card p{display:none}                     /* 카드엔 제목·날짜만 — 요약은 목록을 무겁게 한다 */
/* ── 글 본문(상세) 공통 타이포 ─────────────────────────────────────────
   모멘터스 .pst-prose / 마크 .prose / 큐 .dg-post 가 각자 다른 크기·행간을 쓰고 있었다
   (실측 16.5/1.78 · 16/1.6 · 18.5/1.75). 읽는 글은 같은 리듬이어야 한다 → 토큰 하나로.
   ⚠️ 큐는 페이지 CSS 가 공용 블록보다 뒤에 실려서 !important 가 필요하다. */
:root{--art-fs:17px;--art-lh:1.75;--art-h2:clamp(20px,1.9vw,24px);--art-h2-mt:40px;
--art-p-mt:16px;--art-r:16px}
.pst-prose,.prose,.dg-post p,.dg-post li{font-size:var(--art-fs);line-height:var(--art-lh)}
.dg-post p{font-size:var(--art-fs) !important;line-height:var(--art-lh) !important;
margin:0 0 var(--art-p-mt) !important}
.pst-prose h2,.prose h2,.dg-post h2{font-size:var(--art-h2);font-weight:800;
letter-spacing:-.035em;margin-top:var(--art-h2-mt)}
.dg-post h2{font-size:var(--art-h2) !important;margin:var(--art-h2-mt) 0 14px !important}
.pst-prose p,.prose p{margin-top:var(--art-p-mt)}
.pst-cover,.post-cover,.dg-post .cover{border-radius:var(--art-r)}
.dg-post .cover{border-radius:var(--art-r) !important}

/* 제품 사이트의 글 목록·상세도 같은 간격을 본다(큐 .dg-hero, 마크 .post-top). */
.dg-hero{padding:var(--pg-top) 0 var(--pg-head-gap) !important}
.dg-hero h1{font-size:var(--pg-h1) !important;line-height:1.08}
.dg-hero p{margin-top:var(--pg-sub-gap) !important}
.post-top{padding-top:var(--pg-top) !important}
.post-h1{font-size:var(--pg-h1-post) !important}
.post-sub{margin-top:var(--pg-sub-gap) !important}
.post-grid{margin-top:var(--pg-head-gap) !important}
.nws-grid,.dg-grid{display:grid;grid-template-columns:repeat(3,1fr);
gap:clamp(34px,4.6vw,64px) clamp(18px,2.6vw,36px)}
@media(max-width:960px){.nws-grid,.dg-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.nws-grid,.dg-grid{grid-template-columns:1fr;gap:34px}}

/* MMT:END */
