@charset "UTF-8";
/* =========================================================
   TRIVN CENTUM · base.css
   공통 : 리셋 / 폰트 / 변수 / 헤더 / 전체메뉴 / 인디케이터
   ---------------------------------------------------------
   크기 단위
   · PC   : calc(N * var(--u))  → 1920 시안 px 그대로 N 에 입력
   · 모바일: calc(N * var(--m))  → 750 시안 px 그대로 N 에 입력
========================================================= */

/* ---------- 폰트 ---------- */
@font-face { font-family: 'Futura'; font-weight: 400; font-style: normal; font-display: swap; src: url('../font/futura-book.woff2') format('woff2'); }
@font-face { font-family: 'Futura'; font-weight: 500; font-style: normal; font-display: swap; src: url('../font/futura-medium.woff2') format('woff2'); }
@font-face { font-family: 'Futura'; font-weight: 600; font-style: normal; font-display: swap; src: url('../font/futura-demi.woff2') format('woff2'); }
@font-face { font-family: 'Futura'; font-weight: 700; font-style: normal; font-display: swap; src: url('../font/futura-bold.woff2') format('woff2'); }

/* ---------- 변수 ---------- */
:root {
    --navy: #05205f;
    --ink: #1b1d22;
    --ink-2: #4a4f58;
    --line: #d5d9e0;
    --white: #fff;

    --ff: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
    --ff-en: 'Futura', 'Century Gothic', 'Pretendard Variable', sans-serif;
    --ff-serif: 'Noto Serif KR', 'Nanum Myeongjo', 'AppleMyungjo', serif;

    --ease: cubic-bezier(.22, .8, .22, 1);
    --ease-io: cubic-bezier(.77, 0, .18, 1);

    --u: clamp(.55px, .052083vw, 1.3px);   /* PC  1px = 100vw / 1920 */
    --m: min(.133333vw, 1.2px);            /* MO  1px = 100vw / 750  */

    --vh: 1vh;                             /* JS 가 실제 높이로 보정 */
    --hd-h: calc(100 * var(--u));
}
@media (max-width: 1023px) {
    :root { --hd-h: calc(130 * var(--m)); }   /* 모바일 로고·메뉴를 조금 위로 */
}

/* ---------- 리셋 ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
    font-family: var(--ff);
    font-size: 16px;
    line-height: 1.6;
    color: var(--ink);
    background: #000;
    word-break: keep-all;
    overflow-wrap: break-word;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
body.is-sub { background: #fff; }
ul, ol { list-style: none; }
a { color: inherit; text-decoration: none; -webkit-tap-highlight-color: transparent; }
img, video, svg, picture { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
em, i { font-style: normal; }
h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }
:focus-visible { outline: 2px solid #6aa2ff; outline-offset: 3px; }

.blind {
    position: absolute !important; width: 1px; height: 1px; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
.tv-skip {
    position: fixed; left: 12px; top: -60px; z-index: 9999;
    padding: 10px 16px; background: var(--navy); color: #fff; font-size: 14px;
    transition: top .2s;
}
.tv-skip:focus { top: 12px; }

br.mo, span.mo { display: none; }
@media (max-width: 1023px) { br.mo, span.mo { display: inline; } br.pc, span.pc { display: none; } }

/* Lenis (부드러운 스크롤) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
/* .lenis.lenis-stopped { overflow: hidden; }  → 메뉴 열 때 스크롤바가 사라져 화면이 흔들려서 사용 안 함 (스크롤 막기는 common.js) */


/* =========================================================
   등장 모션 공통 : data-intro + style="--d:지연ms"
   (JS 없으면 그냥 보임)
========================================================= */
.js [data-intro] {
    opacity: 0;
    transform: translate3d(0, -14px, 0);
    transition:
        opacity .9s var(--ease) calc(var(--d, 0) * 1ms),
        transform 1.1s var(--ease) calc(var(--d, 0) * 1ms);
}
.js.is-ready [data-intro] { opacity: 1; transform: none; }


/* =========================================================
   LOGO (PNG 1장을 마스크로 사용 → 색을 CSS로 자유롭게 변경)
========================================================= */
.tv-logo {
    display: block;
    width: 100%; height: 100%;
    background-color: currentColor;
    -webkit-mask: url('../img/common/logo.png') no-repeat center / contain;
            mask: url('../img/common/logo.png') no-repeat center / contain;
    transition: background-color .5s var(--ease);
}


/* =========================================================
   HEADER
========================================================= */
.tv-hd {
    --c-logo: #fff;
    --c-nav: #fff;
    position: fixed; left: 0; top: 0; z-index: 900;
    width: 100%;
    /* 상단 안전영역 여백 사용 안 함 : 네이버웍스 등 앱 안 브라우저가 자기 상단 바가 있는데도 값을 넘겨줘 헤더가 내려감 */
    color: var(--c-nav);
    pointer-events: none;
}
.tv-hd[data-theme="dark"]  { --c-logo: var(--navy); --c-nav: var(--ink); }
.tv-hd[data-theme="split"] { --c-logo: #fff;        --c-nav: var(--ink); }

.tv-hd__bar {
    position: relative; z-index: 2;
    display: flex; align-items: center;
    height: var(--hd-h);
    padding: 0 calc(50 * var(--u)) 0 calc(52 * var(--u));
}
.tv-hd__bar > * { pointer-events: auto; }

.tv-hd__logo { flex: none; color: var(--c-logo); transition: color .5s var(--ease); }
.tv-hd__logo a { display: block; width: calc(156 * var(--u)); min-width: 104px; aspect-ratio: 156 / 63; }

/* GNB */
.tv-gnb { margin-left: auto; height: 100%; }
.tv-gnb__list { display: flex; height: 100%; }
.tv-gnb__item { position: relative; height: 100%; }
.tv-gnb__link {
    position: relative;
    display: flex; align-items: center;
    height: 100%;
    padding: 0 calc(40 * var(--u));
    font-size: max(14px, calc(18 * var(--u)));
    font-weight: 400;
    letter-spacing: -.01em;
    white-space: nowrap;
    transition: color .5s var(--ease);
}
/* 메뉴명 아래 가는 선 : 가운데서 양옆으로 */
.tv-gnb__link::after {
    content: ''; position: absolute; left: calc(40 * var(--u)); right: calc(40 * var(--u)); bottom: calc(30 * var(--u));
    height: 1px; background: currentColor;
    transform: scaleX(0);
    transition: transform .55s var(--ease);
}
.tv-gnb__item:hover .tv-gnb__link::after,
.tv-gnb__item.is-current .tv-gnb__link::after,
.tv-gnb__link:focus-visible::after { transform: scaleX(1); }

/* 글자 롤링 : 마우스오버 시 위로 밀리며 같은 글자가 아래에서 올라옴 */
.tv-roll { display: inline-block; overflow: hidden; vertical-align: top; line-height: 1.4; }
.tv-roll > span { display: block; position: relative; transition: transform .6s var(--ease); }
.tv-roll > span::after { content: attr(data-t); position: absolute; left: 0; top: 100%; width: 100%; }
a:hover .tv-roll > span,
a:focus-visible .tv-roll > span { transform: translate3d(0, -100%, 0); }

/* 서브메뉴 */
.tv-gnb__sub {
    position: absolute; left: 50%; top: 100%;
    min-width: 100%;
    padding-top: calc(26 * var(--u));
    text-align: center;
    transform: translateX(-50%);
    visibility: hidden;
    transition: visibility 0s .5s;
}
.tv-gnb__sub li {
    opacity: 0;
    transform: translate3d(0, -10px, 0);
    transition: opacity .25s ease, transform .3s ease;
}
.tv-gnb__sub a {
    display: inline-block;
    padding: calc(8 * var(--u)) calc(6 * var(--u));
    font-size: max(13px, calc(16 * var(--u)));
    color: rgba(255, 255, 255, .62);
    white-space: nowrap;
    transition: color .4s var(--ease), opacity .4s var(--ease);
}
.tv-gnb__sub a .tv-roll > span::after { color: #fff; }
.tv-gnb__sub a.is-current { color: #fff; font-weight: 600; }

/* 유틸 (전화 + 햄버거) */
.tv-hd__util { display: flex; align-items: center; flex: none; }
.tv-hd__tel {
    display: flex; align-items: center;
    gap: calc(8 * var(--u));
    color: var(--c-nav);
    transition: color .5s var(--ease);
}
.tv-ico-tel {
    width: calc(22 * var(--u)); min-width: 16px; height: auto;
    fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linejoin: round; stroke-linecap: round;
}
.tv-hd__num {
    font-size: max(18px, calc(28 * var(--u)));
    font-weight: 700;
    letter-spacing: -.01em;
    line-height: 1;
}
.tv-hd__menu {
    display: flex; flex-direction: column; justify-content: center; gap: calc(7 * var(--u));
    width: calc(24 * var(--u)); min-width: 20px;
    height: calc(40 * var(--u)); min-height: 32px;
    margin-left: calc(17 * var(--u));
    color: var(--c-nav);
    transition: color .5s var(--ease);
}
.tv-hd__menu i { display: block; width: 100%; height: 1.5px; background: currentColor; transition: transform .4s var(--ease); }
.tv-hd__menu:hover i:nth-child(2) { transform: scaleX(.6); transform-origin: right; }

/* GNB 드롭다운 : 어두운 반투명 유리 패널 */
.tv-hd__drop {
    position: absolute; left: 0; top: 0; z-index: 1;
    width: 100%;
    height: var(--drop-h, 320px);
    background: rgba(6, 10, 22, .58);
    -webkit-backdrop-filter: blur(20px) saturate(1.25);
            backdrop-filter: blur(20px) saturate(1.25);
    clip-path: inset(0 0 100% 0);
    transition: clip-path .5s var(--ease-io);
    pointer-events: none;
}
/* 헤더 아래 가는 선 : 열릴 때 가운데서 양옆으로 그어짐 */
.tv-hd__drop::before {
    content: ''; position: absolute; left: 0; right: 0;
    top: var(--hd-h);
    height: 1px; background: rgba(255, 255, 255, .16);
    transform: scaleX(0);
    transition: transform .4s var(--ease);
}
.tv-hd.is-drop { --c-logo: #fff; --c-nav: #fff; }
.tv-hd.is-drop .tv-hd__drop { clip-path: inset(0 0 0 0); pointer-events: auto; transition: clip-path .75s var(--ease-io); }
.tv-hd.is-drop .tv-hd__drop::before { transform: scaleX(1); transition: transform 1.1s var(--ease) .2s; }

/* 열릴 때 : 열(메뉴) → 행(서브) 순서로 물결처럼 등장 */
.tv-hd.is-drop .tv-gnb__sub { visibility: visible; transition: visibility 0s; }
.tv-hd.is-drop .tv-gnb__sub li {
    opacity: 1; transform: none;
    transition:
        opacity .6s ease calc(.22s + var(--col) * 45ms + var(--row) * 40ms),
        transform .8s var(--ease) calc(.22s + var(--col) * 45ms + var(--row) * 40ms);
}
/* 마우스가 올라간 메뉴 열만 또렷하게, 나머지는 한 톤 낮춤 */
.tv-hd.is-drop .tv-gnb__list:hover .tv-gnb__item:not(:hover) .tv-gnb__sub a:not(.is-current) { color: rgba(255, 255, 255, .34); }
.tv-hd.is-drop .tv-gnb__list:hover .tv-gnb__item:not(:hover) > .tv-gnb__link { opacity: .55; }
.tv-gnb__link { transition: color .5s var(--ease), opacity .4s var(--ease); }

/* =========================================================
   전체메뉴
========================================================= */
.tv-all {
    overscroll-behavior: contain;
    position: fixed; inset: 0; z-index: 1000;
    display: flex; flex-direction: column;
    background: var(--navy);
    color: #fff;
    overflow-y: auto;
    overscroll-behavior: contain;
    visibility: hidden;
    clip-path: inset(0 0 100% 0);
    transition: clip-path .8s var(--ease-io), visibility 0s .8s;
}
.tv-all.is-open { visibility: visible; clip-path: inset(0 0 0 0); transition: clip-path .8s var(--ease-io), visibility 0s; }

.tv-all__top {
    display: flex; align-items: center; justify-content: space-between;
    flex: none;
    height: var(--hd-h);
    padding: 0 calc(50 * var(--u)) 0 calc(52 * var(--u));
}
.tv-all__logo { display: block; width: calc(156 * var(--u)); min-width: 104px; aspect-ratio: 156 / 63; color: #fff; }
.tv-all__close { position: relative; width: calc(40 * var(--u)); min-width: 32px; aspect-ratio: 1; }
.tv-all__close i {
    position: absolute; left: 10%; top: 50%;
    width: 80%; height: 1.5px; background: #fff;
    transition: transform .5s var(--ease) .3s;
}
.tv-all__close i:nth-child(1) { transform: rotate(45deg); }
.tv-all__close i:nth-child(2) { transform: rotate(-45deg); }
.tv-all__close:hover i:nth-child(1) { transform: rotate(135deg); }
.tv-all__close:hover i:nth-child(2) { transform: rotate(45deg); }

.tv-all__nav { flex: 1; display: flex; align-items: center; padding: calc(40 * var(--u)) calc(160 * var(--u)); }
.tv-all__list { display: grid; grid-template-columns: repeat(6, 1fr); width: 100%; }
.tv-all__group {
    padding: 0 calc(28 * var(--u));
    border-left: 1px solid rgba(255, 255, 255, .14);
    opacity: 0; transform: translate3d(0, 40px, 0);
    transition: opacity .5s, transform .5s;
}
.tv-all__group:last-child { border-right: 1px solid rgba(255, 255, 255, .14); }
.tv-all.is-open .tv-all__group {
    opacity: 1; transform: none;
    transition: opacity .9s var(--ease) calc(.35s + var(--i) * .07s), transform 1.1s var(--ease) calc(.35s + var(--i) * .07s);
}
.tv-all__title { display: block; width: 100%; text-align: left; cursor: default; }
.tv-all__title em {
    display: block;
    font-family: var(--ff-en); font-weight: 500;
    font-size: max(11px, calc(13 * var(--u)));
    letter-spacing: .18em;
    color: rgba(255, 255, 255, .45);
}
.tv-all__title strong {
    display: block;
    margin-top: calc(10 * var(--u));
    font-size: max(18px, calc(26 * var(--u)));
    font-weight: 600;
    letter-spacing: -.02em;
}
.tv-all__sub { margin-top: calc(38 * var(--u)); }
.tv-all__sub a {
    display: inline-block;
    padding: calc(8 * var(--u)) 0;
    font-size: max(14px, calc(17 * var(--u)));
    color: rgba(255, 255, 255, .62);
    transition: color .25s, transform .35s var(--ease);
}
.tv-all__sub a:hover, .tv-all__sub a:focus-visible { color: #fff; transform: translateX(6px); }

.tv-all__info {
    flex: none;
    display: flex; align-items: center; justify-content: center; gap: calc(40 * var(--u));
    padding: calc(30 * var(--u)) 0 calc(44 * var(--u) + env(safe-area-inset-bottom, 0px));
    font-size: max(13px, calc(15 * var(--u)));
    color: rgba(255, 255, 255, .55);
}
.tv-all__tel { font-family: var(--ff); font-weight: 700; font-size: max(16px, calc(22 * var(--u))); color: #fff; }
.tv-all__tel span { margin-right: 8px; font-weight: 400; font-size: .7em; color: rgba(255, 255, 255, .55); }


/* =========================================================
   좌측 섹션 인디케이터 (PC 풀페이지)
========================================================= */
.tv-ind {
    position: fixed; z-index: 800;
    left: calc(34 * var(--u)); top: 55%;
    display: none;
    transform: translateY(-50%);
    color: #fff;
    transition: color .5s var(--ease);
}
.tv-ind[data-theme="dark"] { color: var(--ink); }
html.is-fp .tv-ind { display: block; }
.tv-ind { transition: color .5s var(--ease), opacity .5s ease; }
.tv-ind.is-hide { opacity: 0; pointer-events: none; }   /* 푸터에서는 숨김 */

.tv-ind__btn {
    position: relative;
    display: flex; align-items: center; justify-content: center;
    width: calc(16 * var(--u)); min-width: 14px;
    height: max(26px, calc(35.5 * var(--u)));
    opacity: 0; transform: translate3d(-10px, 0, 0);
    transition: opacity .8s var(--ease) calc(var(--d) * 1ms), transform .8s var(--ease) calc(var(--d) * 1ms);
}
.is-ready .tv-ind__btn { opacity: 1; transform: none; }
.tv-ind__btn::before {
    content: '';
    width: 7px; height: 7px; border-radius: 50%;
    background: currentColor;
    opacity: .45;
    transition: opacity .4s, transform .5s var(--ease);
}
.tv-ind__btn:hover::before { opacity: .8; }
.tv-ind__btn.is-on::before { opacity: 1; transform: scale(1.15); }

/* 첫 번째 = 홈 아이콘 */
.tv-ind__btn.is-home::before {
    width: 14px; height: 14px; border-radius: 0;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M7 .8 0 6.6h1.9V13h3.7V9h2.8v4h3.7V6.6H14Z'/%3E%3C/svg%3E") no-repeat center / contain;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M7 .8 0 6.6h1.9V13h3.7V9h2.8v4h3.7V6.6H14Z'/%3E%3C/svg%3E") no-repeat center / contain;
}
.tv-ind__btn.is-home.is-on::before { transform: none; }

.tv-ind__btn span {
    position: absolute; left: 100%; top: 50%;
    margin-left: 10px;
    font-size: 12px; white-space: nowrap;
    opacity: 0; transform: translate3d(-6px, -50%, 0);
    pointer-events: none;
    transition: opacity .3s, transform .3s var(--ease);
}
.tv-ind__btn:hover span, .tv-ind__btn:focus-visible span { opacity: .9; transform: translate3d(0, -50%, 0); }


/* =========================================================
   풀페이지 (PC)
========================================================= */
html.is-fp, html.is-fp body { height: 100%; overflow: hidden; overscroll-behavior: none; }
html.is-fp .fp {
    position: relative;
    will-change: transform;
    transition: transform 1.1s var(--ease-io);
}
html.is-fp .fp-sec { height: calc(var(--vh) * 100); overflow: hidden; }
html.is-fp .fp-sec.fp-auto { height: auto; }
html.is-fp .fp.is-instant { transition: none; }


/* =========================================================
   FOOTER
========================================================= */
.tv-foot {
    position: relative;
    background: #141414;
    color: #fff;
    text-align: center;
    padding: calc(42 * var(--u)) calc(40 * var(--u)) calc(50 * var(--u));
}
.tv-foot__logo {
    display: inline-block;
    width: calc(134 * var(--u)); min-width: 96px;
    aspect-ratio: 156 / 63;
    color: #fff;
}
.tv-foot__biz {
    display: flex; justify-content: center; align-items: baseline; flex-wrap: wrap;
    margin-top: calc(34 * var(--u));
}
.tv-foot__biz li { display: flex; align-items: baseline; gap: calc(12 * var(--u)); }
.tv-foot__biz li + li::before {
    content: ''; align-self: center;
    width: 1px; height: calc(16 * var(--u)); min-height: 11px;
    margin: 0 calc(28 * var(--u));
    background: #555;
}
.tv-foot__label { font-size: max(11px, calc(13 * var(--u))); color: #8b8b8b; }
.tv-foot__biz strong { font-size: max(13px, calc(18 * var(--u))); font-weight: 700; letter-spacing: -.02em; }

.tv-foot__info {
    display: flex; justify-content: center; align-items: center; flex-wrap: wrap;
    margin-top: calc(18 * var(--u));
    font-size: max(12px, calc(15 * var(--u)));
    font-weight: 700;
    letter-spacing: -.01em;
}
.tv-foot__info span + span::before {
    content: ''; display: inline-block; vertical-align: middle;
    width: 1px; height: calc(14 * var(--u)); min-height: 10px;
    margin: 0 calc(16 * var(--u));
    background: #666;
}
/* 유의사항 : 가운데 1100 폭 안에서 왼쪽 정렬 · ※ 다음 줄은 들여쓰기 */
.tv-foot__notes {
    width: calc(1100 * var(--u));
    max-width: 100%;
    margin: calc(34 * var(--u)) auto 0;
    padding-top: calc(28 * var(--u));
    border-top: 1px solid rgba(255, 255, 255, .12);
    text-align: left;
    font-size: max(11px, calc(13.5 * var(--u)));
    line-height: 1.75;
    color: #8f8f8f;
    letter-spacing: -.02em;
}
.tv-foot__notes p { padding-left: 1.15em; text-indent: -1.15em; word-break: keep-all; }
.tv-foot__notes p + p { margin-top: calc(6 * var(--u)); }


/* =========================================================
   모바일 하단 고정 바 (COMING SOON / 관심고객등록)
========================================================= */
.tv-mbar { display: none; }


/* =========================================================
   TOP 버튼 (섹션2부터 노출)
========================================================= */
.tv-top {
    position: fixed; z-index: 840;
    right: calc(40 * var(--u)); bottom: calc(40 * var(--u));
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 3px;
    width: calc(62 * var(--u)); height: calc(62 * var(--u));
    min-width: 48px; min-height: 48px;
    border-radius: 50%;
    background: rgba(5, 32, 95, .88);
    color: #fff;
    box-shadow: 0 8px 24px rgba(0, 10, 40, .22);
    opacity: 0; visibility: hidden;
    transform: translate3d(0, 16px, 0);
    transition: opacity .4s ease, transform .5s var(--ease), visibility 0s .5s, background-color .3s ease;
}
.tv-top.is-show { opacity: 1; visibility: visible; transform: none; transition: opacity .4s ease, transform .5s var(--ease), visibility 0s, background-color .3s ease; }
.tv-top svg { width: 13px; height: auto; fill: none; stroke: currentColor; stroke-width: 1.6; transition: transform .4s var(--ease); }
.tv-top span { font-family: var(--ff-en); font-size: 11px; font-weight: 600; letter-spacing: .08em; line-height: 1; }
.tv-top:hover { background: var(--navy); }
.tv-top:hover svg { transform: translate3d(0, -3px, 0); }
html.is-menu-open .tv-top { opacity: 0; visibility: hidden; }


/* =========================================================
   MOBILE / TABLET  (≤1023px)
========================================================= */
@media (max-width: 1023px) {
    .tv-hd__bar { padding: 0 calc(40 * var(--m)) 0 calc(43 * var(--m)); }
    .tv-hd__logo a { width: calc(157 * var(--m)); min-width: 0; }
    .tv-gnb { display: none; }
    .tv-hd__util { margin-left: auto; }
    .tv-hd__tel { gap: 0; }
    .tv-ico-tel { width: calc(42 * var(--m)); min-width: 0; stroke-width: 1.3; }
    .tv-hd__num { display: none; }
    .tv-hd__menu {
        width: calc(42 * var(--m)); min-width: 0;
        height: calc(60 * var(--m)); min-height: 0;
        gap: calc(10 * var(--m));
        margin-left: calc(30 * var(--m));
    }
    .tv-hd__menu i { height: 2px; }

    .tv-all__top { padding: 0 calc(40 * var(--m)) 0 calc(43 * var(--m)); }
    .tv-all__logo { width: calc(157 * var(--m)); min-width: 0; }
    .tv-all__close { width: calc(54 * var(--m)); min-width: 0; }
    .tv-all__nav { display: block; flex: none; padding: calc(30 * var(--m)) calc(50 * var(--m)); }
    .tv-all__list { display: block; }
    .tv-all__group { padding: 0; border: 0; border-bottom: 1px solid rgba(255, 255, 255, .14); }
    .tv-all__group:last-child { border-right: 0; }
    .tv-all__title {
        position: relative;
        display: flex; align-items: baseline; gap: calc(20 * var(--m));
        padding: calc(36 * var(--m)) 0;
        cursor: pointer;
    }
    .tv-all__title em { order: 2; font-size: calc(20 * var(--m)); }
    .tv-all__title strong { margin: 0; font-size: calc(36 * var(--m)); }
    .tv-all__title::before, .tv-all__title::after {
        content: ''; position: absolute; right: calc(6 * var(--m)); top: 50%;
        width: calc(24 * var(--m)); height: 2px; background: rgba(255, 255, 255, .8);
        transition: transform .4s var(--ease);
    }
    .tv-all__title::after { transform: rotate(90deg); }
    .tv-all__title[aria-expanded="true"]::after { transform: rotate(0); }

    .tv-all__sub {
        margin: 0;
        max-height: 0; overflow: hidden;
        transition: max-height .5s var(--ease), padding .5s var(--ease);
    }
    .tv-all__title[aria-expanded="true"] + .tv-all__sub { max-height: 600px; padding-bottom: calc(28 * var(--m)); }
    .tv-all__sub a { padding: calc(14 * var(--m)) 0; font-size: calc(28 * var(--m)); }

    .tv-all__info {
        flex-direction: column; gap: calc(10 * var(--m));
        margin-top: auto;
        padding: calc(50 * var(--m)) 0 calc(70 * var(--m) + env(safe-area-inset-bottom, 0px));
        font-size: calc(22 * var(--m));
    }
    .tv-all__tel { font-size: calc(36 * var(--m)); }

    /* ---------- FOOTER (모바일) ---------- */
    .tv-foot { padding: calc(64 * var(--m)) calc(30 * var(--m)) calc(70 * var(--m)); }
    .is-main .tv-foot { padding-bottom: calc(70 * var(--m) + 80 * var(--m) + env(safe-area-inset-bottom, 0px)); }   /* 하단 바만큼 여유 */
    .tv-foot__logo { width: calc(150 * var(--m)); min-width: 0; }
    .tv-foot__biz { margin-top: calc(46 * var(--m)); row-gap: calc(12 * var(--m)); white-space: nowrap; }
    .tv-foot__biz li { gap: calc(12 * var(--m)); }
    .tv-foot__biz li + li::before { height: calc(20 * var(--m)); min-height: 0; margin: 0 calc(18 * var(--m)); }
    .tv-foot__label { font-size: calc(18 * var(--m)); }
    .tv-foot__biz strong { font-size: calc(23 * var(--m)); }
    .tv-foot__info { margin-top: calc(34 * var(--m)); font-size: calc(24 * var(--m)); line-height: 1.6; }
    .tv-foot__info span + span::before { height: calc(20 * var(--m)); min-height: 0; margin: 0 calc(14 * var(--m)); }
    .tv-foot__copy { flex-basis: 100%; }
    .tv-foot__info .tv-foot__copy::before { display: none !important; }
    .tv-foot__notes { width: auto; margin-top: calc(40 * var(--m)); padding-top: calc(34 * var(--m)); font-size: calc(18 * var(--m)); line-height: 1.7; }
    .tv-foot__notes p + p { margin-top: calc(10 * var(--m)); }

    /* ---------- 모바일 하단 고정 바 ---------- */
    .tv-mbar {
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 850;
        display: flex;
        height: calc(80 * var(--m) + env(safe-area-inset-bottom, 0px));
        padding-bottom: env(safe-area-inset-bottom, 0px);
        background: #fff;
        box-shadow: 0 -6px 20px rgba(0, 0, 0, .08);
        transform: translate3d(0, 100%, 0);
        visibility: hidden;
        transition: transform .5s var(--ease), visibility 0s .5s;
    }
    .tv-mbar.is-show { transform: none; visibility: visible; transition: transform .6s var(--ease), visibility 0s; }
    html.is-menu-open .tv-mbar { transform: translate3d(0, 100%, 0); }
    .tv-mbar__soon, .tv-mbar__reg {
        flex: 1;
        display: flex; align-items: center; justify-content: center;
    }
    .tv-mbar__soon {
        background: #0b63b2;
        color: #fff;
        font-family: var(--ff-en);
        font-size: calc(30 * var(--m));
        font-weight: 600;
        letter-spacing: .04em;
    }
    .tv-mbar__reg {
        color: #12286b;
        font-size: calc(30 * var(--m));
        font-weight: 700;
        letter-spacing: -.03em;
        border-top: 1px solid #dfe3ea;
    }
    .tv-mbar__reg:active { background: #f3f5f9; }


    /* ---------- TOP 버튼 (모바일 : 하단 바 위) ---------- */
    .tv-top {
        right: calc(30 * var(--m));
        bottom: calc(80 * var(--m) + 26 * var(--m) + env(safe-area-inset-bottom, 0px));
        width: calc(84 * var(--m)); height: calc(84 * var(--m));
        min-width: 0; min-height: 0;
    }
    .tv-top svg { width: calc(20 * var(--m)); }
    .tv-top span { font-size: calc(16 * var(--m)); }

}


/* =========================================================
   모션 줄이기 설정 존중
========================================================= */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0s !important; }
}







