/* portal-skin-v3 — 사용자 포털 공통 스킨 (ink 본문 + 라이트 상·하단 크롬) */

@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");
@import url("https://fonts.googleapis.com/css2?family=Newsreader:opsz,wght@6..72,500;6..72,650&display=swap");

html:is(.portal-v3, .mv3-skin),
html:is(.portal-v3, .mv3-skin)[data-theme="soft"],
html:is(.portal-v3, .mv3-skin)[data-theme="light"],
html:is(.portal-v3, .mv3-skin)[data-theme="night"],
html[data-theme="soft"]:is(.portal-v3, .mv3-skin) {
  /* home-v3 .v3-band-ink · .v3-why 톤 */
  --bg: #10181c;
  --panel: #162024;
  --panel-2: #1a262b;
  --panel-3: #203035;
  --bd: rgba(232, 238, 242, 0.14);
  --bd-soft: rgba(232, 238, 242, 0.08);
  --fg: #e6eef0;
  --mut: rgba(230, 238, 240, 0.72);
  --mut-2: rgba(230, 238, 240, 0.48);
  --acc: #8fc4cb;       /* kicker-light */
  --acc-2: #b8e6e2;     /* ink band h2 */
  --ok: #5ecf96;
  --warn: #e0b25a;
  --danger: #e07a7e;
  --r: 12px;
  --r-sm: 8px;
  --r-lg: 16px;
  --shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
  /* 상·하단 네브만 라이트 크롬 */
  --footbar-bg: #f7f9fa;
  --footbar-fg: #3a4550;
  --footbar-bd: rgba(18, 23, 28, .1);
  color-scheme: dark;
}

html:is(.portal-v3, .mv3-skin) body {
  font-family: "Pretendard Variable", "Pretendard", "Apple SD Gothic Neo", sans-serif;
  background:
    radial-gradient(900px 360px at 90% 0%, rgba(47, 111, 122, .14), transparent 55%),
    linear-gradient(180deg, #142226 0%, #10181c 42%, #0c1418 100%);
  background-attachment: fixed;
  color: var(--fg);
}

/* Preview ribbon */
.mv3-preview-bar {
  position: sticky;
  top: 0;
  z-index: 200;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 14px;
  padding: 8px clamp(14px, 3vw, 28px);
  background: #0a1013;
  color: rgba(230, 238, 240, .85);
  font-size: 13px;
  border-bottom: 1px solid rgba(232, 238, 242, .1);
}
.mv3-preview-bar strong {
  color: #8fc4cb;
  font-weight: 700;
}
.mv3-preview-bar a {
  color: #f0f7f8;
  text-decoration: none;
  border: 1px solid rgba(244, 248, 249, .22);
  border-radius: 999px;
  padding: 5px 11px;
  font-size: 12.5px;
}
.mv3-preview-bar a:hover { background: rgba(255, 255, 255, .08); }
.mv3-preview-bar .links { display: flex; flex-wrap: wrap; gap: 8px; }

/* Headings — Newsreader (본문 ink) */
html:is(.portal-v3, .mv3-skin) .portal-catalog-head h1,
html:is(.portal-v3, .mv3-skin) .md-title-row h1 {
  font-family: "Newsreader", "Apple SD Gothic Neo", serif;
  font-weight: 650;
  letter-spacing: -0.03em;
  color: #f0f7f8;
}
html:is(.portal-v3, .mv3-skin) .portal-catalog-head .eyebrow {
  color: var(--acc);
  letter-spacing: .12em;
  text-transform: uppercase;
  font-size: 12px;
  font-weight: 650;
}
html:is(.portal-v3, .mv3-skin) .portal-catalog-head p {
  color: var(--mut);
  max-width: 40rem;
}

/* Top bar — 흰색 계열 크롬 (본문 ink 링크색이 덮지 않도록 !important) */
html:is(.portal-v3, .mv3-skin) .portal-top {
  --topbar-bg: rgba(247, 249, 250, .96);
  --topbar-bd: rgba(18, 23, 28, .1);
  --topbar-fg: #12171c;
  --topbar-mut: #3a4550;
  --topbar-hover: rgba(18, 23, 28, .05);
  --topbar-active: rgba(47, 111, 122, .12);
  --acc: #2f6f7a;
  background: var(--topbar-bg);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--topbar-bd);
  color: var(--topbar-fg);
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-brand {
  color: var(--topbar-fg) !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-brand .brand-text {
  font-family: "Newsreader", "Apple SD Gothic Neo", serif;
  font-weight: 650;
  letter-spacing: -0.02em;
  color: #12171c !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-brand .brand-text > span {
  color: #2f6f7a !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-beta {
  background: rgba(47, 111, 122, .92);
  color: #fff !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top a,
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav a,
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-main a,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-action-muted,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-login,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-signup,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-logout {
  color: #3a4550 !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top a:hover,
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav a:hover,
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-main a:hover,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-action-muted:hover,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-login:hover,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-signup:hover {
  color: #12171c !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-main a.active,
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-main a.on,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-action-muted.active {
  color: #12171c !important;
  background: rgba(47, 111, 122, .12);
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-main a.active::after,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-action-muted.active::after {
  background: #2f6f7a;
}
html:is(.portal-v3, .mv3-skin) .portal-top .nav-user-pill {
  color: #12171c !important;
  border-color: rgba(18, 23, 28, .12);
  background: rgba(18, 23, 28, .04);
}
html:is(.portal-v3, .mv3-skin) .portal-top .nav-logout:hover {
  color: #c0392b !important;
}
html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-toggle span {
  background: #163740;
}
@media (max-width: 768px) {
  html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav {
    border-top-color: rgba(18, 23, 28, .1);
  }
  html:is(.portal-v3, .mv3-skin) .portal-top .portal-nav-actions {
    border-top-color: rgba(18, 23, 28, .08);
  }
}

/* Cards — slightly lifted panels, soft hairline */
html:is(.portal-v3, .mv3-skin) .card,
html:is(.portal-v3, .mv3-skin) .model-card,
html:is(.portal-v3, .mv3-skin) a.card {
  background: var(--panel);
  border: 1px solid var(--bd);
  box-shadow: none;
  border-radius: 14px;
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) .card:hover,
html:is(.portal-v3, .mv3-skin) a.card:hover {
  border-color: rgba(143, 196, 203, .45);
  box-shadow: var(--shadow);
  transform: translateY(-1px);
  background: #1a282d;
}
/* 일시 이용 불가 — 스킨 .card 배경 덮어쓰기보다 우선 */
html:is(.portal-v3, .mv3-skin) .card.status-unavailable,
html:is(.portal-v3, .mv3-skin) .model-card.status-unavailable,
html:is(.portal-v3, .mv3-skin) a.card.status-unavailable {
  background: linear-gradient(180deg, rgba(185, 28, 28, .55), rgba(90, 20, 24, .72) 48%, #1a1214);
  border-color: rgba(248, 113, 113, .75);
  box-shadow: inset 0 0 0 1px rgba(248, 113, 113, .22);
}
html:is(.portal-v3, .mv3-skin) .card.status-unavailable:hover,
html:is(.portal-v3, .mv3-skin) a.card.status-unavailable:hover {
  background: linear-gradient(180deg, rgba(220, 38, 38, .58), rgba(110, 24, 28, .78) 48%, #221418);
  border-color: rgba(252, 165, 165, .95);
  box-shadow: 0 8px 28px rgba(127, 29, 29, .4), inset 0 0 0 1px rgba(248, 113, 113, .28);
}
html:is(.portal-v3, .mv3-skin) .card.status-unavailable h3,
html:is(.portal-v3, .mv3-skin) .card.status-unavailable .model-card-name {
  color: #fee2e2;
}
html:is(.portal-v3, .mv3-skin) .card.status-unavailable .desc,
html:is(.portal-v3, .mv3-skin) .card.status-unavailable p {
  color: #fecaca;
}
html:is(.portal-v3, .mv3-skin) .card.status-unavailable .prov {
  color: #fda4af;
}
/* 중단(retired) — 옅은 회색 채움 · 이용가능보다 뒤로 물러나게 */
html:is(.portal-v3, .mv3-skin) .card.status-retired,
html:is(.portal-v3, .mv3-skin) .model-card.status-retired,
html:is(.portal-v3, .mv3-skin) a.card.status-retired {
  background: linear-gradient(180deg, rgba(71, 85, 105, .22), rgba(40, 48, 58, .35) 48%, #14191e);
  border-color: rgba(100, 116, 139, .28);
  border-style: solid;
  box-shadow: none;
  opacity: .76;
  filter: saturate(.7);
}
html:is(.portal-v3, .mv3-skin) .card.status-retired:hover,
html:is(.portal-v3, .mv3-skin) a.card.status-retired:hover {
  background: linear-gradient(180deg, rgba(80, 95, 115, .26), rgba(48, 58, 70, .4) 48%, #171d23);
  border-color: rgba(148, 163, 184, .38);
  box-shadow: none;
  opacity: .86;
  filter: saturate(.78);
}
html:is(.portal-v3, .mv3-skin) .card.status-retired h3,
html:is(.portal-v3, .mv3-skin) .card.status-retired .model-card-name {
  color: #94a3b8;
}
html:is(.portal-v3, .mv3-skin) .card.status-retired .desc,
html:is(.portal-v3, .mv3-skin) .card.status-retired p {
  color: #64748b;
}
html:is(.portal-v3, .mv3-skin) .card.status-retired .prov {
  color: #64748b;
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-retired,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) a.card.status-retired {
  background: linear-gradient(180deg, #e8edf2, #f1f5f9 55%, #f8fafc);
  border-color: rgba(148, 163, 184, .35);
  color: #64748b;
  opacity: .8;
  filter: saturate(.75);
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-retired:hover,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) a.card.status-retired:hover {
  background: linear-gradient(180deg, #e2e8f0, #eef2f6 55%, #f8fafc);
  border-color: rgba(100, 116, 139, .4);
  opacity: .9;
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-retired h3,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-retired .model-card-name {
  color: #64748b;
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-retired .desc,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-retired p {
  color: #94a3b8;
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-unavailable,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) a.card.status-unavailable {
  background: linear-gradient(180deg, #fecaca, #fee2e2 55%, #fff5f5);
  border-color: rgba(239, 68, 68, .6);
  color: #7f1d1d;
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-unavailable:hover,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) a.card.status-unavailable:hover {
  background: linear-gradient(180deg, #fca5a5, #fecaca 55%, #fff1f2);
  border-color: rgba(220, 38, 38, .7);
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-unavailable h3,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-unavailable .model-card-name {
  color: #991b1b;
}
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-unavailable .desc,
html[data-theme="light"]:is(.portal-v3, .mv3-skin) .card.status-unavailable p {
  color: #7f1d1d;
}
html:is(.portal-v3, .mv3-skin) .card h3,
html:is(.portal-v3, .mv3-skin) .card .title,
html:is(.portal-v3, .mv3-skin) a.card strong {
  color: #f0f7f8;
}
html:is(.portal-v3, .mv3-skin) .card p,
html:is(.portal-v3, .mv3-skin) .card .desc {
  color: var(--mut);
}

/* Filters */
html:is(.portal-v3, .mv3-skin) .portal-filter-fold {
  background: rgba(22, 32, 36, .85);
  border-color: var(--bd);
}
html:is(.portal-v3, .mv3-skin) .portal-filter-fold > summary {
  background: rgba(26, 38, 43, .9);
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) .portal-filter-fold > summary::before {
  color: var(--acc);
}
html:is(.portal-v3, .mv3-skin) .portal-filter-fold > summary:hover {
  background: color-mix(in srgb, var(--acc) 14%, #162024);
}

/* Layer tabs */
html:is(.portal-v3, .mv3-skin) .md-layer-tab {
  background: var(--panel);
  border-color: var(--bd);
  color: var(--mut);
}
html:is(.portal-v3, .mv3-skin) .md-layer-tab.on {
  background: #1e3a40;
  border-color: rgba(143, 196, 203, .55);
  color: var(--acc-2);
}
html:is(.portal-v3, .mv3-skin) .md-layer-tab:hover {
  border-color: rgba(143, 196, 203, .35);
  color: #f0f7f8;
}

/* Search / sort */
html:is(.portal-v3, .mv3-skin) .sortrow .search input,
html:is(.portal-v3, .mv3-skin) .sortrow select,
html:is(.portal-v3, .mv3-skin) input[type="search"],
html:is(.portal-v3, .mv3-skin) input[type="text"],
html:is(.portal-v3, .mv3-skin) select {
  background: #121c20;
  border-color: var(--bd);
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) .sortrow .search input::placeholder {
  color: var(--mut-2);
}
html:is(.portal-v3, .mv3-skin) .sortrow .search input:focus,
html:is(.portal-v3, .mv3-skin) select:focus {
  border-color: rgba(143, 196, 203, .55);
  box-shadow: 0 0 0 3px rgba(143, 196, 203, .14);
  outline: none;
}

/* Badges */
html:is(.portal-v3, .mv3-skin) .badge.available { color: var(--ok); background: rgba(94, 207, 150, .14); }
html:is(.portal-v3, .mv3-skin) .badge.testing { color: var(--warn); background: rgba(224, 178, 90, .14); }
html:is(.portal-v3, .mv3-skin) .badge.listed { color: #8eb4f0; background: rgba(142, 180, 240, .14); }
html:is(.portal-v3, .mv3-skin) .badge.unavailable { color: var(--danger); background: rgba(224, 122, 126, .14); }

/* Discovery */
html:is(.portal-v3, .mv3-skin) .disc-card {
  background: linear-gradient(180deg, #162024, #121c20);
  border-color: var(--bd);
}
html:is(.portal-v3, .mv3-skin) .disc-bar .track {
  background: rgba(232, 238, 242, .08);
}
html:is(.portal-v3, .mv3-skin) .disc-bar .track > i {
  background: linear-gradient(90deg, #2f6f7a, #8fc4cb);
}
html:is(.portal-v3, .mv3-skin) .disc-bar.our .track > i {
  background: linear-gradient(90deg, #163740, #b8e6e2);
}
html:is(.portal-v3, .mv3-skin) .disc-want {
  border-color: rgba(143, 196, 203, .35);
  color: var(--mut);
  background: transparent;
}
html:is(.portal-v3, .mv3-skin) .disc-want.on,
html:is(.portal-v3, .mv3-skin) .disc-want:hover {
  color: var(--acc-2);
  border-color: var(--acc);
  background: rgba(143, 196, 203, .08);
}

/* Code panels — slightly deeper than page */
html:is(.portal-v3, .mv3-skin) .code-toolbar {
  background: var(--panel);
  border-color: var(--bd);
}
html:is(.portal-v3, .mv3-skin) .code-toolbar .tabs button {
  background: transparent;
  color: var(--mut);
  border-color: var(--bd);
}
html:is(.portal-v3, .mv3-skin) .code-toolbar .tabs button.on {
  background: #0a1013;
  color: #e8eef2;
}
html:is(.portal-v3, .mv3-skin) .code-body {
  background: #0a1013;
}

/* Ladder */
html:is(.portal-v3, .mv3-skin) .portal-ladder-step {
  background: var(--panel);
  border-color: var(--bd);
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) .portal-ladder-step.on {
  border-color: var(--acc);
  box-shadow: 0 0 0 1px rgba(143, 196, 203, .28);
}

/* Bottom bar — 상단과 같은 라이트 크롬 */
html:is(.portal-v3, .mv3-skin) .portal-foot,
html:is(.portal-v3, .mv3-skin) .portal-foot.portal-foot-partners {
  background: #f7f9fa;
  border-top: 1px solid rgba(18, 23, 28, .1);
  box-shadow: 0 -4px 18px rgba(0, 0, 0, .06);
  color: #3a4550;
}
html:is(.portal-v3, .mv3-skin) .portal-foot a {
  color: #3a4550;
}
html:is(.portal-v3, .mv3-skin) .portal-foot a:hover {
  color: #163740;
}

/* Buttons */
html:is(.portal-v3, .mv3-skin) .btn-primary,
html:is(.portal-v3, .mv3-skin) button.primary {
  background: #2f6f7a;
  border-color: #2f6f7a;
  color: #f4f8f9;
}
html:is(.portal-v3, .mv3-skin) .btn-primary:hover,
html:is(.portal-v3, .mv3-skin) button.primary:hover {
  background: #3a8590;
  border-color: #3a8590;
}
html:is(.portal-v3, .mv3-skin) .mini {
  background: var(--panel-2);
  border-color: var(--bd);
  color: var(--mut);
}
html:is(.portal-v3, .mv3-skin) .mini:hover {
  color: var(--fg);
  border-color: rgba(143, 196, 203, .4);
}

html:is(.portal-v3, .mv3-skin) .portal-beta {
  background: rgba(47, 111, 122, .85);
  color: #f0f7f8;
}

/* Type badges / links */
html:is(.portal-v3, .mv3-skin) .tbadge {
  border-color: rgba(143, 196, 203, .28);
  color: var(--mut);
}
/* 본문 링크만 ink 액센트 — 상·하단 크롬은 제외 */
html:is(.portal-v3, .mv3-skin) .portal-shell a:not(.btn):not(.card),
html:is(.portal-v3, .mv3-skin) main a:not(.btn):not(.card),
html:is(.portal-v3, .mv3-skin) .portal-main a:not(.btn):not(.card) {
  color: var(--acc-2);
}
html:is(.portal-v3, .mv3-skin) .portal-shell a:not(.btn):not(.card):hover,
html:is(.portal-v3, .mv3-skin) main a:not(.btn):not(.card):hover,
html:is(.portal-v3, .mv3-skin) .portal-main a:not(.btn):not(.card):hover {
  color: #d4f4f1;
}

/* Side / filter chips often use light surfaces in portal.css */
html:is(.portal-v3, .mv3-skin) .chip,
html:is(.portal-v3, .mv3-skin) .filter-chip,
html:is(.portal-v3, .mv3-skin) .tag {
  background: rgba(232, 238, 242, .06);
  border-color: var(--bd);
  color: var(--mut);
}
html:is(.portal-v3, .mv3-skin) .chip.on,
html:is(.portal-v3, .mv3-skin) .filter-chip.on,
html:is(.portal-v3, .mv3-skin) .tag.on {
  background: rgba(143, 196, 203, .16);
  border-color: rgba(143, 196, 203, .45);
  color: var(--acc-2);
}

/* ep boxes in detail */
html:is(.portal-v3, .mv3-skin) .ep-box {
  background: var(--panel);
  border-color: var(--bd);
}
html:is(.portal-v3, .mv3-skin) .ext-band {
  background: color-mix(in srgb, var(--cat, var(--mut-2)) 8%, transparent);
}
html:is(.portal-v3, .mv3-skin) .disc-slot:hover {
  background: var(--panel-2);
  border-color: var(--bd);
}

/* why-like hairlines for section heads if present */
html:is(.portal-v3, .mv3-skin) .portal-catalog-head {
  border-bottom: 1px solid var(--bd);
  padding-bottom: 22px;
  margin-bottom: 22px;
}


/* ── 공통 셸 보강 (docs · auth · account · guide) ── */
html:is(.portal-v3, .mv3-skin) .panel,
html:is(.portal-v3, .mv3-skin) .auth-card,
html:is(.portal-v3, .mv3-skin) .docs-card,
html:is(.portal-v3, .mv3-skin) .account-card,
html:is(.portal-v3, .mv3-skin) .proto-card,
html:is(.portal-v3, .mv3-skin) .qna-card {
  background: var(--panel);
  border: 1px solid var(--bd);
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) h1,
html:is(.portal-v3, .mv3-skin) h2,
html:is(.portal-v3, .mv3-skin) .page-title {
  color: #f0f7f8;
}
html:is(.portal-v3, .mv3-skin) h1,
html:is(.portal-v3, .mv3-skin) .page-title {
  font-family: "Newsreader", "Apple SD Gothic Neo", serif;
  font-weight: 650;
  letter-spacing: -0.03em;
}
html:is(.portal-v3, .mv3-skin) table { color: var(--fg); }
html:is(.portal-v3, .mv3-skin) th,
html:is(.portal-v3, .mv3-skin) td { border-color: var(--bd); }
html:is(.portal-v3, .mv3-skin) textarea,
html:is(.portal-v3, .mv3-skin) input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html:is(.portal-v3, .mv3-skin) .field input,
html:is(.portal-v3, .mv3-skin) .field select,
html:is(.portal-v3, .mv3-skin) .field textarea {
  background: #121c20;
  border-color: var(--bd);
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) .docs-subnav a,
html:is(.portal-v3, .mv3-skin) .subnav a { color: var(--mut); }
html:is(.portal-v3, .mv3-skin) .docs-subnav a.on,
html:is(.portal-v3, .mv3-skin) .docs-subnav a.active,
html:is(.portal-v3, .mv3-skin) .subnav a.on,
html:is(.portal-v3, .mv3-skin) .subnav a.active {
  color: var(--acc-2);
  border-color: rgba(143, 196, 203, .45);
}
html:is(.portal-v3, .mv3-skin) pre,
html:is(.portal-v3, .mv3-skin) code:not(.inline) {
  background: #0a1013;
  color: #e8eef2;
}
html:is(.portal-v3, .mv3-skin) .empty,
html:is(.portal-v3, .mv3-skin) .muted { color: var(--mut); }
html:is(.portal-v3, .mv3-skin) .tabs button,
html:is(.portal-v3, .mv3-skin) .seg button {
  background: var(--panel);
  border-color: var(--bd);
  color: var(--mut);
}
html:is(.portal-v3, .mv3-skin) .tabs button.on,
html:is(.portal-v3, .mv3-skin) .seg button.on {
  color: var(--acc-2);
  border-color: rgba(143, 196, 203, .45);
  background: #1e3a40;
}
html:is(.portal-v3, .mv3-skin) .portal-top a,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-login,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-signup,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-action-muted,
html:is(.portal-v3, .mv3-skin) .portal-top .nav-logout {
  color: #3a4550 !important;
}
html:is(.portal-v3, .mv3-skin) .portal-foot a { color: #3a4550 !important; }
html:is(.portal-v3, .mv3-skin) .portal-foot a:hover { color: #163740 !important; }

/* ── /home 허브 (구 NIM 메인) — 씨글래스 톤 맞춤 ── */
html:is(.portal-v3, .mv3-skin) body.nim-home {
  --nim-api: #2f6f7a;
  --nim-api-soft: #8fc4cb;
  --nim-api-dim: rgba(47, 111, 122, .14);
  --nim-api-border: rgba(143, 196, 203, .35);
  --nim-api-glow: rgba(143, 196, 203, .18);
  --nim-skill: #b07a2e;
  --nim-skill-soft: #e0b25a;
  --nim-skill-dim: rgba(224, 178, 90, .12);
  --nim-skill-border: rgba(224, 178, 90, .35);
  --nim-skill-glow: rgba(224, 178, 90, .16);
}
html:is(.portal-v3, .mv3-skin) .nim-bg-mesh {
  background:
    radial-gradient(ellipse 70% 45% at 50% 0%, rgba(47, 111, 122, .18) 0%, transparent 55%),
    radial-gradient(circle at 20% 30%, rgba(47, 111, 122, .06) 0%, transparent 40%),
    radial-gradient(circle at 80% 20%, rgba(143, 196, 203, .05) 0%, transparent 35%);
}
html:is(.portal-v3, .mv3-skin) .nim-bg-mesh::before {
  background-image: radial-gradient(rgba(143, 196, 203, .28) 1px, transparent 1px);
}
html:is(.portal-v3, .mv3-skin) .nim-hero-glow {
  background: radial-gradient(ellipse 55% 45% at 50% 0%, rgba(47, 111, 122, .28) 0%, transparent 68%);
}
html:is(.portal-v3, .mv3-skin) .nim-hero h1 {
  font-family: "Newsreader", "Apple SD Gothic Neo", serif;
  font-weight: 650;
  letter-spacing: -0.03em;
  color: #f0f7f8;
}
html:is(.portal-v3, .mv3-skin) .nim-hero-eyebrow {
  color: #8fc4cb;
  letter-spacing: .12em;
}
html:is(.portal-v3, .mv3-skin) .nim-hero-message {
  color: rgba(230, 238, 240, .72);
}
html:is(.portal-v3, .mv3-skin) .nim-search {
  background: #121c20;
  border-color: rgba(232, 238, 242, .14);
}
html:is(.portal-v3, .mv3-skin) .nim-search input {
  background: transparent;
  color: #e6eef0;
}
html:is(.portal-v3, .mv3-skin) .nim-search input::placeholder {
  color: rgba(230, 238, 240, .45);
}
html:is(.portal-v3, .mv3-skin) .nim-panel {
  background: var(--panel);
  border-color: var(--bd);
  box-shadow: none;
}
html:is(.portal-v3, .mv3-skin) .nim-row {
  border-color: var(--bd-soft);
  color: var(--fg);
}
html:is(.portal-v3, .mv3-skin) .nim-row:hover {
  background: rgba(143, 196, 203, .08);
}
html:is(.portal-v3, .mv3-skin) .nim-cat-chip {
  background: var(--panel);
  border-color: var(--bd);
  color: var(--mut);
}
html:is(.portal-v3, .mv3-skin) .nim-cat-chip:hover,
html:is(.portal-v3, .mv3-skin) .nim-cat-chip.nim-cat-all {
  border-color: rgba(143, 196, 203, .45);
  color: #b8e6e2;
}
html:is(.portal-v3, .mv3-skin) .nim-more {
  color: #8fc4cb;
}
html:is(.portal-v3, .mv3-skin) .nim-flow-n {
  background: rgba(47, 111, 122, .22);
  color: #b8e6e2;
}
