/* Shared launcher cards on account pages and inside app menus. */
.cb-app-cards{--app-card-min:230px;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--app-card-min)),1fr));gap:10px;width:100%;margin:16px 0}
.cb-app-card{--card-tint:var(--panel,#fff);--card-hover:var(--brand-soft,#edf4ff);--card-edge:#3678ce;display:flex;flex-direction:column;align-items:flex-start;gap:7px;box-sizing:border-box;min-width:0;padding:16px;border:1px solid var(--line,#cbd5e1);border-radius:12px;background:var(--card-tint);color:var(--ink,#15263c);text-align:left;text-decoration:none;white-space:normal;font:inherit;line-height:1.45;transition:background .15s,border-color .15s}
.cb-app-card{border-top:3px solid var(--card-edge)} /* 솔루션 페이지 카드와 같은 윗선 */
.cb-app-card:hover{border-color:var(--card-edge);background:var(--card-hover)}
/* 색의 출처는 여기 한 곳이다 — 솔루션 페이지의 제품 카드·칩(.product-card, .product-chip)도
   data-key 로 같은 토큰을 받는다. 제품 카드에 data-app-card 를 달면 app-cards.js 가
   비로그인 때 숨기므로 달지 않는다. 앱마다 색조를 달리하면 카드가 여럿 늘어설 때 이름을 읽기 전에 어느 앱인지 눈에
   걸린다. 색조만 다르고 명도는 같은 자리에 두어 한 장이 튀지 않게 하고, 글자색은
   그대로 var(--ink) 를 쓰므로 대비가 바뀌지 않는다. 목록에 없는 앱은 기본값(흰 카드)
   이라 새 앱이 붙어도 화면이 깨지지 않는다. */
.cb-app-card[data-app-card="aurora"],.product-card[data-key="aurora"],.product-chip[data-key="aurora"]{--card-tint:#eceffd;--card-hover:#dde3fb;--card-edge:#6d81dd}
.cb-app-card[data-app-card="pepdesigner"],.product-card[data-key="pepdesigner"],.product-chip[data-key="pepdesigner"]{--card-tint:#e9f6f0;--card-hover:#d6efe3;--card-edge:#4aa585}
.cb-app-card[data-app-card="biowrit"],.product-card[data-key="biowrit"],.product-chip[data-key="biowrit"]{--card-tint:#fdf2e5;--card-hover:#fbe6cd;--card-edge:#d09443}
.cb-app-card[data-app-card="labis"],.product-card[data-key="labis"],.product-chip[data-key="labis"]{--card-tint:#fbeef5;--card-hover:#f7dee9;--card-edge:#c96fa5}
.cb-app-card[data-app-card="cgv"],.product-card[data-key="cgv"],.product-chip[data-key="cgv"]{--card-tint:#eef4ea;--card-hover:#e0ecd9;--card-edge:#6f9e57}
.cb-app-card[data-app-card="cortex"],.product-card[data-key="cortex"],.product-chip[data-key="cortex"]{--card-tint:#e6f6fa;--card-hover:#d2eef5;--card-edge:#3aa3bd}
.cb-app-card[data-app-card="relay"],.product-card[data-key="relay"],.product-chip[data-key="relay"],.cb-app-card[data-app-card="labbit"],.product-card[data-key="labbit"],.product-chip[data-key="labbit"]{--card-tint:#e8f1fc;--card-hover:#d6e6fa;--card-edge:#4a86d0}
.cb-app-card[data-app-card="supplio"],.product-card[data-key="supplio"],.product-chip[data-key="supplio"]{--card-tint:#fdeeea;--card-hover:#fbdcd3;--card-edge:#d0704f}
.cb-app-card[data-app-card="devflow"],.product-card[data-key="devflow"],.product-chip[data-key="devflow"]{--card-tint:#f6f3df;--card-hover:#efe9c4;--card-edge:#b5a23a}
.cb-app-card[data-app-card="muse"],.product-card[data-key="muse"],.product-chip[data-key="muse"]{--card-tint:#eef1f5;--card-hover:#e0e5ec;--card-edge:#6b7f99}
.cb-app-card[data-app-card="labis-controlcenter"],.product-card[data-key="labis-controlcenter"],.product-chip[data-key="labis-controlcenter"],.cb-app-card[data-app-card="labis-cowork"]{--card-tint:#fdecef;--card-hover:#fadbe0;--card-edge:#d0596f}
.cb-app-card[data-app-card="hypora"],.product-card[data-key="hypora"],.product-chip[data-key="hypora"]{--card-tint:#f2edfc;--card-hover:#e6dcfa;--card-edge:#8a63d2}
:root[data-theme="dark"] .cb-app-card[data-app-card="aurora"],:root[data-theme="dark"] .product-card[data-key="aurora"],:root[data-theme="dark"] .product-chip[data-key="aurora"]{--card-tint:#1a2040;--card-hover:#232b52;--card-edge:#7484d8}
:root[data-theme="dark"] .cb-app-card[data-app-card="pepdesigner"],:root[data-theme="dark"] .product-card[data-key="pepdesigner"],:root[data-theme="dark"] .product-chip[data-key="pepdesigner"]{--card-tint:#122a23;--card-hover:#17372d;--card-edge:#4fa98a}
:root[data-theme="dark"] .cb-app-card[data-app-card="biowrit"],:root[data-theme="dark"] .product-card[data-key="biowrit"],:root[data-theme="dark"] .product-chip[data-key="biowrit"]{--card-tint:#2b2113;--card-hover:#3a2c19;--card-edge:#c99a4c}
:root[data-theme="dark"] .cb-app-card[data-app-card="labis"],:root[data-theme="dark"] .product-card[data-key="labis"],:root[data-theme="dark"] .product-chip[data-key="labis"]{--card-tint:#2c1a25;--card-hover:#3a2231;--card-edge:#c3749f}
:root[data-theme="dark"] .cb-app-card[data-app-card="cgv"],:root[data-theme="dark"] .product-card[data-key="cgv"],:root[data-theme="dark"] .product-chip[data-key="cgv"]{--card-tint:#1b2618;--card-hover:#243221;--card-edge:#7faa66}
:root[data-theme="dark"] .cb-app-card[data-app-card="cortex"],:root[data-theme="dark"] .product-card[data-key="cortex"],:root[data-theme="dark"] .product-chip[data-key="cortex"]{--card-tint:#0f2a31;--card-hover:#14363f;--card-edge:#47aec6}
/* relay 는 labbit 으로 개명 중이라 두 키를 한 색으로 묶는다 */
:root[data-theme="dark"] .cb-app-card[data-app-card="relay"],:root[data-theme="dark"] .product-card[data-key="relay"],:root[data-theme="dark"] .product-chip[data-key="relay"],:root[data-theme="dark"] .cb-app-card[data-app-card="labbit"],:root[data-theme="dark"] .product-card[data-key="labbit"],:root[data-theme="dark"] .product-chip[data-key="labbit"]{--card-tint:#132238;--card-hover:#1a2d48;--card-edge:#5a92d6}
:root[data-theme="dark"] .cb-app-card[data-app-card="supplio"],:root[data-theme="dark"] .product-card[data-key="supplio"],:root[data-theme="dark"] .product-chip[data-key="supplio"]{--card-tint:#2e1a14;--card-hover:#3c221a;--card-edge:#d27a5a}
:root[data-theme="dark"] .cb-app-card[data-app-card="devflow"],:root[data-theme="dark"] .product-card[data-key="devflow"],:root[data-theme="dark"] .product-chip[data-key="devflow"]{--card-tint:#262212;--card-hover:#33301a;--card-edge:#c9b64f}
:root[data-theme="dark"] .cb-app-card[data-app-card="muse"],:root[data-theme="dark"] .product-card[data-key="muse"],:root[data-theme="dark"] .product-chip[data-key="muse"]{--card-tint:#1b2129;--card-hover:#232b36;--card-edge:#7d90a8}
:root[data-theme="dark"] .cb-app-card[data-app-card="labis-controlcenter"],:root[data-theme="dark"] .product-card[data-key="labis-controlcenter"],:root[data-theme="dark"] .product-chip[data-key="labis-controlcenter"],:root[data-theme="dark"] .cb-app-card[data-app-card="labis-cowork"]{--card-tint:#2e161b;--card-hover:#3c1d24;--card-edge:#d36a7d}
:root[data-theme="dark"] .cb-app-card[data-app-card="hypora"],:root[data-theme="dark"] .product-card[data-key="hypora"],:root[data-theme="dark"] .product-chip[data-key="hypora"]{--card-tint:#221a38;--card-hover:#2c2248;--card-edge:#9475d6}
.cb-app-card:focus-visible{outline:3px solid #6095ec;outline-offset:3px}
.cb-app-card.is-current{background:#123f77;border-color:#123f77;color:#fff}
.cb-app-card strong{font-size:16px;font-weight:650;color:inherit}
/* 상단 바 메뉴의 카드는 앱 머리글(.cb-app header) 안에 있다 — 머리글의 글자색(a·strong)이 새어 들어와 연한 글자가 되므로 카드 색을 되돌린다 */
.cb-app header a.cb-app-card,.cb-app header a.cb-app-card:hover{color:var(--ink,#15263c)}
.cb-app header a.cb-app-card.is-current,.cb-app header a.cb-app-card.is-current:hover{color:#fff}
.cb-app header .cb-app-card strong{color:inherit}
.cb-app header .cb-app-downloads a,.cb-app header .cb-app-downloads a:hover{color:var(--ink,#15263c)}
.cb-app-card .cb-app-fullname{font-size:11px;line-height:1.45;opacity:.78;overflow-wrap:anywhere}
.cb-app-card .cb-app-summary{font-size:12px;color:inherit;opacity:.9}
.cb-app-card .cb-app-current{font-size:10px;font-weight:600;border-radius:20px;padding:2px 8px;background:#fff;color:#123f77}
/* 묶음 제목 — 솔루션 페이지의 .product-group-title 과 같은 모노 라벨 어법 */
.cb-app-group{grid-column:1/-1;margin:22px 0 2px;text-align:left;font-family:var(--font-mono,ui-monospace,monospace);font-size:.82rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--slate,var(--muted,#64748b))}
.cb-app-group:first-child{margin-top:0}
.cb-app-group[hidden]{display:none!important}
.cb-app-card-tools[hidden],.cb-app-card[hidden],.cb-app-cards[hidden]{display:none!important}
.cb-app-card-tools{display:flex;justify-content:flex-end;gap:8px;align-items:center;font-size:11px;color:var(--muted,#64748b);margin-top:10px}
.cb-app-card-tools select{font:inherit;color:inherit;background:var(--panel,#fff);border:1px solid var(--line,#cbd5e1);border-radius:6px;padding:4px}
.cb-app-cards[data-size=compact]{--app-card-min:175px}
.cb-app-cards[data-size=compact] .cb-app-card{padding:11px;gap:5px}
.cb-app-cards[data-size=large]{--app-card-min:280px}
.cb-app-cards[data-size=large] .cb-app-card{padding:22px;gap:9px}
.cb-top-menu:has(.cb-app-cards){position:fixed;top:70px;right:16px;left:auto;width:min(600px,calc(100vw - 32px));max-height:75vh;overflow:auto;box-sizing:border-box;padding:12px}
.cb-top-menu .cb-app-cards{margin:8px 0;--app-card-min:220px}
.cb-top-menu .cb-app-card{width:auto}
@media(max-width:600px){.cb-app-cards,.cb-top-menu .cb-app-cards{grid-template-columns:1fr}.cb-app-card{padding:13px}.cb-top-menu:has(.cb-app-cards){position:fixed;top:70px;left:16px;right:16px;width:auto}}
.cb-top-id [data-app-management-slot]{display:inline-flex;gap:10px;flex-wrap:wrap}
@media(max-width:600px){.cb-top{gap:9px;flex-wrap:wrap;max-width:calc(100vw - 32px)}.cb-top-id{flex-wrap:wrap;gap:6px}.cb-top-id [data-app-management-slot]{gap:6px}.cb-top .app-management-links{margin-inline:0}}
/* 카드 아래 다운로드 링크 — 카드와 한 칸(.cb-app-cell)을 쓰고, 카드가 숨겨지면 칸째 숨는다. */
.cb-app-cell{display:flex;flex-direction:column;gap:6px;min-width:0}
.cb-app-cell[hidden]{display:none}
.cb-app-cell>.cb-app-card{flex:1}
.cb-app-downloads{display:flex;flex-wrap:wrap;gap:6px}
.cb-app-downloads a{padding:3px 10px;border:1px solid var(--line,#cbd5e1);border-radius:999px;background:var(--panel,#fff);color:var(--ink,#15263c);font-size:.8rem;line-height:1.5;text-decoration:none}
.cb-app-downloads a:hover,.cb-app-downloads a:focus-visible{border-color:#3678ce;background:var(--brand-soft,#edf4ff)}
