/* =====================================================================
   test.html 전용 스타일 — .tp- 접두사로 모든 셀렉터 네임스페이스 격리
   외부 CSS와 완전히 독립
   ===================================================================== */

@font-face { font-family:'Pretendard'; src:url('../font/Pretendard-Regular.woff') format('woff'); font-weight:400; font-display:swap; }
@font-face { font-family:'Pretendard'; src:url('../font/Pretendard-Medium.woff') format('woff'); font-weight:500; font-display:swap; }
@font-face { font-family:'Pretendard'; src:url('../font/Pretendard-SemiBold.woff') format('woff'); font-weight:600; font-display:swap; }
@font-face { font-family:'Pretendard'; src:url('../font/Pretendard-Bold.woff') format('woff'); font-weight:700; font-display:swap; }
@font-face { font-family:'Pretendard'; src:url('../font/Pretendard-ExtraBold.woff') format('woff'); font-weight:800; font-display:swap; }
@font-face { font-family:'Paperlogy'; src:url('../font/Paperlogy-7Bold.woff') format('woff'); font-weight:700; font-display:swap; }
@font-face { font-family:'Paperlogy'; src:url('../font/Paperlogy-8ExtraBold.woff') format('woff'); font-weight:800; font-display:swap; }

html:has(.tp-page) { overflow-x:hidden; }
.tp-page, .tp-page *, .tp-page *::before, .tp-page *::after {
    box-sizing:border-box; margin:0; padding:0; border:0;
    word-break:keep-all; word-wrap:break-word; overflow-wrap:break-word;
    -webkit-text-size-adjust:none; min-width:0;
    /* base.css의 전역 * 셀렉터 차단 — font/color는 .tp-page에서 상속 */
    font-family:inherit; font-size:inherit; font-weight:inherit;
    line-height:inherit; letter-spacing:inherit; color:inherit;
    vertical-align:baseline;
}

.tp-page {
    --tp-navy:#0e2a6b;
    --tp-navy-deep:#081a47;
    --tp-navy-2:#1b3fa0;
    --tp-blue:#3a6dff;
    --tp-blue-soft:#eef3ff;
    --tp-orange:#ff7a3a;
    --tp-orange-soft:#fff1e8;
    --tp-yellow:#ffd23a;
    --tp-bg:#ffffff;
    --tp-bg-soft:#f5f7fb;
    --tp-text:#0f1326;
    --tp-text-2:#535a6e;
    --tp-text-3:#8a91a5;
    --tp-line:#e8ebf3;
    --tp-line-2:#dfe3ee;
    font-family:'Pretendard','Apple SD Gothic Neo','Malgun Gothic','Segoe UI',sans-serif;
    color:var(--tp-text); background:var(--tp-bg);
    line-height:1.7; font-size:17px; letter-spacing:-0.3px;
    -webkit-font-smoothing:antialiased; overflow-x:hidden;
}

.tp-page img { max-width:100%; height:auto; display:block; }
.tp-page svg { display:block; max-width:100%; }
/* :where() 로 specificity 0 처리 — 클래스로 지정한 color/background가 항상 이김 */
:where(.tp-page) a { color:inherit; text-decoration:none; display:inline-block; }
:where(.tp-page) button { background:transparent; cursor:pointer; font-family:inherit; color:inherit; }
.tp-page ul, .tp-page ol { list-style:none; }

.tp-inner {
    width:100%; max-width:1280px; margin:0 auto;
    padding:0 32px;
}
@media (max-width:1024px) { .tp-inner { padding:0 24px; } }
@media (max-width:768px) { .tp-inner { padding:0 20px; } }
@media (max-width:480px) { .tp-inner { padding:0 15px; } }
@media (max-width:320px) { .tp-inner { padding:0 15px; } }

.tp-section { padding:clamp(40px, 6.5vw, 100px) 0; position:relative; overflow:hidden; }
.tp-section > .tp-inner { position:relative; z-index:2; }
.tp-section--soft {
    background:
        radial-gradient(ellipse 60% 50% at 10% 0%, rgba(58,109,255,0.07) 0%, transparent 70%),
        radial-gradient(ellipse 60% 50% at 95% 100%, rgba(255,122,58,0.06) 0%, transparent 70%),
        var(--tp-bg-soft);
}
.tp-section--dark { background:#0a1430; color:#fff; }
.tp-section--dark h1, .tp-section--dark h2, .tp-section--dark h3, .tp-section--dark p { color:#fff; }

/* ----- 배경 장식 모디파이어 ----- */
.tp-section--dots::before {
    content:''; position:absolute; inset:0; z-index:0;
    background-image:radial-gradient(circle, rgba(14,42,107,0.08) 1.2px, transparent 1.2px);
    background-size:28px 28px;
    -webkit-mask-image:radial-gradient(ellipse 70% 60% at center, #000 30%, transparent 85%);
    mask-image:radial-gradient(ellipse 70% 60% at center, #000 30%, transparent 85%);
}
.tp-section--grid::before {
    content:''; position:absolute; inset:0; z-index:0;
    background-image:
        linear-gradient(to right, rgba(14,42,107,0.06) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(14,42,107,0.06) 1px, transparent 1px);
    background-size:56px 56px;
    -webkit-mask-image:radial-gradient(ellipse 75% 60% at center, #000 20%, transparent 90%);
    mask-image:radial-gradient(ellipse 75% 60% at center, #000 20%, transparent 90%);
}
.tp-section--blueprint::before {
    content:''; position:absolute; inset:0; z-index:0;
    background-image:
        url('../images/site_building.jpg'),
        radial-gradient(ellipse 50% 40% at right top, rgba(58,109,255,0.06), transparent 70%);
    background-size:60% auto, 100% 100%;
    background-repeat:no-repeat;
    background-position:right -8% bottom -10%, center;
    opacity:0.55;
    mix-blend-mode:multiply;
    pointer-events:none;
}
.tp-section--blob::before, .tp-section--blob::after {
    content:''; position:absolute; z-index:0; pointer-events:none;
    border-radius:50%; filter:blur(60px);
}
.tp-section--blob::before {
    width:520px; height:520px; top:-160px; left:-200px;
    background:radial-gradient(circle, rgba(58,109,255,0.18), transparent 70%);
}
.tp-section--blob::after {
    width:580px; height:580px; bottom:-220px; right:-180px;
    background:radial-gradient(circle, rgba(255,122,58,0.14), transparent 70%);
}

/* ===== 색감 모디파이어 — 단조롭지 않게 톤 다양화 ===== */
.tp-section--cream {
    background:
        radial-gradient(ellipse 60% 50% at 10% 0%, rgba(255,178,74,0.12), transparent 70%),
        linear-gradient(180deg, #fdf6ec 0%, #fbf0db 100%);
}
.tp-section--mint {
    background:
        radial-gradient(ellipse 60% 50% at 90% 0%, rgba(30,153,113,0.08), transparent 70%),
        linear-gradient(180deg, #f0f7f3 0%, #e7f0eb 100%);
}
.tp-section--ice {
    background:
        radial-gradient(ellipse 60% 50% at 50% 0%, rgba(58,109,255,0.1), transparent 70%),
        linear-gradient(180deg, #eef3fb 0%, #e3eaf6 100%);
}

/* ===== 사진이 분명히 보이는 다크 섹션 (드라마틱) ===== */
.tp-section--photo-dark {
    background:
        linear-gradient(135deg, rgba(8,26,71,0.78) 0%, rgba(14,42,107,0.7) 60%, rgba(20,33,61,0.85) 100%),
        var(--tp-bg-img, url('../images/px_library.jpg')) center / cover no-repeat;
    color:#fff;
}
.tp-section--photo-dark .tp-headline { color:#fff; }
.tp-section--photo-dark .tp-headline em {
    background:linear-gradient(120deg, var(--tp-yellow), var(--tp-orange));
    -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
    color:transparent;
}
.tp-section--photo-dark .tp-lead { color:rgba(255,255,255,0.82); }
.tp-section--photo-dark .tp-eyebrow {
    color:var(--tp-yellow); background:rgba(255,210,58,0.12);
}
.tp-section--photo-dark .tp-eyebrow::before { background:var(--tp-yellow); }
.tp-section--photo-dark .tp-octa__footer { color:rgba(255,255,255,0.85); }
.tp-section--photo-dark .tp-octa__footer strong { color:#fff; }
.tp-section--photo-dark .tp-octa__rings::before,
.tp-section--photo-dark .tp-octa__rings::after { border-color:rgba(255,255,255,0.2); }
.tp-section--photo-dark .tp-octa__bg {
    background:radial-gradient(circle at 50% 50%, rgba(255,210,58,0.12), transparent 60%);
}
.tp-section--photo-dark .tp-octa__center {
    background:
        radial-gradient(circle at 30% 25%, rgba(255,210,58,0.3), transparent 60%),
        linear-gradient(135deg, #2a4ec8 0%, #14296b 100%);
    box-shadow:0 0 80px rgba(58,109,255,0.4), 0 18px 60px rgba(0,0,0,0.4);
}
.tp-section--photo-dark .tp-octa__item {
    box-shadow:0 14px 36px rgba(0,0,0,0.35);
    border-color:rgba(255,255,255,0.15);
}

/* ===== 사진 살짝 보이는 cream 톤 ===== */
.tp-section--photo-soft {
    background:
        linear-gradient(180deg, rgba(253,246,236,0.86) 0%, rgba(253,246,236,0.9) 50%, rgba(251,240,219,0.86) 100%),
        var(--tp-bg-img, url('../images/px_whiteboard.jpg')) right center / cover no-repeat;
}

/* Consult 다크 톤 — 흰 폼 카드 위에 다크 배경 + 사진 */
.tp-consult-section--dark .tp-consult__sub {
    background:rgba(255,210,58,0.18); color:var(--tp-yellow);
}
.tp-consult-section--dark .tp-consult__title { color:#fff; }
.tp-consult-section--dark .tp-consult__title em { color:var(--tp-yellow); }

.tp-eyebrow {
    display:inline-flex; align-items:center; gap:clamp(7px, 1.2vw, 10px);
    font-size:clamp(11px, 1vw, 14px); font-weight:700;
    letter-spacing:2.5px; color:var(--tp-orange);
    text-transform:uppercase;
    margin-bottom:clamp(14px, 2.2vw, 22px);
}
.tp-eyebrow::before {
    content:''; width:clamp(22px, 2.8vw, 32px); height:2px; background:var(--tp-orange);
    border-radius:2px;
}

.tp-headline {
    font-size:clamp(24px, 4.2vw, 60px);
    font-weight:800; line-height:1.2; color:var(--tp-navy);
    letter-spacing:-1.6px;
}
.tp-section--dark .tp-headline { color:#fff; }
.tp-headline em { font-style:normal; color:var(--tp-orange); }
@media (max-width:340px) { .tp-headline { letter-spacing:-0.8px; } }

.tp-lead {
    font-size:clamp(16px, 1.5vw, 20px);
    color:var(--tp-text-2); line-height:1.85;
}
.tp-section--dark .tp-lead { color:rgba(255,255,255,0.72); }

/* =====================================================================
   1. HEADER
   ===================================================================== */
.tp-header {
    position:sticky; top:0; z-index:100;
    background:rgba(255,255,255,0.96);
    backdrop-filter:saturate(180%) blur(14px);
    -webkit-backdrop-filter:saturate(180%) blur(14px);
    border-bottom:1px solid var(--tp-line);
}
.tp-header__inner {
    display:flex; align-items:center; justify-content:space-between;
    gap:clamp(8px, 1.4vw, 16px); height:clamp(58px, 7vw, 80px);
}
.tp-logo { display:flex; align-items:center; flex-shrink:0; }
.tp-logo img { height:clamp(26px, 3.2vw, 36px); width:auto; }
.tp-gnb { display:flex; gap:clamp(14px, 2.3vw, 40px); align-items:center; }
.tp-gnb__group { position:relative; }
.tp-gnb__item {
    font-size:clamp(13px, 1.2vw, 15px); font-weight:600; color:var(--tp-text);
    padding:10px 4px; position:relative; white-space:nowrap;
    transition:color 0.2s;
}
.tp-gnb__item::after {
    content:''; position:absolute; left:50%; bottom:4px;
    width:0; height:2px; background:var(--tp-orange);
    transform:translateX(-50%); transition:width 0.25s;
    border-radius:2px;
}
.tp-gnb__group:hover .tp-gnb__item,
.tp-gnb__item:hover { color:var(--tp-navy); }
.tp-gnb__group:hover .tp-gnb__item::after,
.tp-gnb__item:hover::after { width:28px; }

/* 하위메뉴 드롭다운 */
.tp-gnb__sub {
    position:absolute; left:50%; top:calc(100% + 6px);
    transform:translateX(-50%) translateY(-6px);
    min-width:170px; padding:10px 0;
    background:#fff; border:1px solid var(--tp-line);
    border-radius:12px;
    box-shadow:0 20px 40px -10px rgba(14,42,107,0.18);
    opacity:0; visibility:hidden; pointer-events:none;
    transition:opacity 0.22s ease, transform 0.22s ease, visibility 0.22s ease;
    z-index:5;
}
.tp-gnb__sub::before {
    content:''; position:absolute; left:0; right:0; top:-10px; height:10px;
}
.tp-gnb__sub li a {
    display:block; padding:9px 22px;
    font-size:13px; color:var(--tp-text-soft);
    white-space:nowrap; transition:color 0.18s, background 0.18s;
}
.tp-gnb__sub li a:hover {
    color:var(--tp-navy); background:var(--tp-bg-soft);
}
.tp-gnb__group:hover .tp-gnb__sub,
.tp-gnb__group:focus-within .tp-gnb__sub {
    opacity:1; visibility:visible; pointer-events:auto;
    transform:translateX(-50%) translateY(0);
}

/* GNB hover 시 헤더 전체 살짝 깊이 추가 */
.tp-gnb__bg { display:none; }

.tp-header__right { display:flex; gap:10px; align-items:center; flex-shrink:0; }
.tp-btn-login {
    display:inline-flex; align-items:center; gap:6px;
    font-size:clamp(11px, 1vw, 13px); font-weight:700;
    padding:clamp(8px, 1.2vw, 11px) clamp(13px, 2vw, 22px);
    background:var(--tp-navy); color:#fff;
    border-radius:999px; white-space:nowrap;
    transition:all 0.2s;
}
.tp-btn-login:hover { background:var(--tp-navy-deep); transform:translateY(-1px); }
.tp-hamburger {
    display:none; width:clamp(36px, 4.4vw, 42px); height:clamp(36px, 4.4vw, 42px); padding:clamp(9px, 1.2vw, 11px);
    flex-direction:column; justify-content:space-between;
    border-radius:10px; cursor:pointer;
}
.tp-hamburger span { display:block; width:100%; height:2px; background:var(--tp-navy); border-radius:2px; transition:transform 0.25s, opacity 0.25s; }
@media (max-width:960px) { .tp-gnb { display:none; } .tp-hamburger { display:flex; } }

/* 모바일 메뉴 패널 */
.tp-mnav {
    position:fixed; top:0; right:0; bottom:0;
    width:min(86vw, 360px);
    background:#fff;
    z-index:120;
    transform:translateX(100%);
    transition:transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
    display:flex; flex-direction:column;
    overflow-y:auto; overscroll-behavior:contain;
    box-shadow:-30px 0 60px -20px rgba(0,0,0,0.2);
}
.tp-mnav.is-open { transform:translateX(0); }
.tp-mnav__head {
    display:flex; align-items:center; justify-content:space-between;
    padding:18px 20px;
    border-bottom:1px solid var(--tp-line);
}
.tp-mnav__logo img { height:28px; }
.tp-mnav__close {
    width:38px; height:38px; border-radius:10px;
    display:flex; align-items:center; justify-content:center;
    color:var(--tp-navy); cursor:pointer;
}
.tp-mnav__close:hover { background:var(--tp-bg-soft); }
.tp-mnav__close svg { width:20px; height:20px; }
.tp-mnav__tip {
    display:flex; gap:10px;
    padding:14px 20px;
    border-bottom:1px solid var(--tp-line);
    background:var(--tp-bg-soft);
}
.tp-mnav__tip-link {
    flex:1; text-align:center;
    padding:10px 0;
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:8px;
    font-size:13px; font-weight:600; color:var(--tp-navy);
}
.tp-mnav__list { padding:8px 0; }
.tp-mnav__item { border-bottom:1px solid var(--tp-line); }
.tp-mnav__btn {
    width:100%; padding:18px 20px;
    display:flex; align-items:center; justify-content:space-between;
    font-size:15px; font-weight:700; color:var(--tp-navy);
    cursor:pointer; text-align:left;
}
.tp-mnav__btn svg { width:18px; height:18px; transition:transform 0.25s; flex-shrink:0; }
.tp-mnav__item.is-open .tp-mnav__btn svg { transform:rotate(180deg); }
.tp-mnav__sub {
    max-height:0; overflow:hidden;
    transition:max-height 0.3s ease;
    background:var(--tp-bg-soft);
}
.tp-mnav__item.is-open .tp-mnav__sub { max-height:400px; }
.tp-mnav__sub li a {
    display:block; padding:13px 28px;
    font-size:13px; color:var(--tp-text-soft);
}
.tp-mnav__sub li a:hover { color:var(--tp-navy); }
.tp-mnav__copy {
    margin-top:auto;
    padding:24px 20px;
    text-align:center; font-size:11px;
    color:var(--tp-text-soft); letter-spacing:0.5px;
}
.tp-mnav-dim {
    position:fixed; inset:0; background:rgba(10,20,48,0.5);
    z-index:110; opacity:0; visibility:hidden;
    transition:opacity 0.3s, visibility 0.3s;
}
.tp-mnav-dim.is-open { opacity:1; visibility:visible; }

/* 햄버거 X 변환 */
.tp-hamburger.is-open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.tp-hamburger.is-open span:nth-child(2) { opacity:0; }
.tp-hamburger.is-open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }

/* 플로팅 배너 */
.tp-fix {
    position:fixed; right:clamp(14px, 2vw, 26px); bottom:clamp(14px, 2vw, 26px);
    z-index:90;
    display:flex; flex-direction:column; gap:10px;
    opacity:0; transform:translateY(20px); pointer-events:none;
    transition:opacity 0.32s ease, transform 0.32s ease;
}
.tp-fix.is-active { opacity:1; transform:translateY(0); pointer-events:auto; }
.tp-fix__btn {
    width:clamp(46px, 5vw, 56px); height:clamp(46px, 5vw, 56px);
    display:flex; align-items:center; justify-content:center;
    border-radius:50%;
    color:#fff; font-weight:800; font-size:16px;
    background:var(--tp-navy);
    box-shadow:0 12px 24px -8px rgba(14,42,107,0.45);
    transition:transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
}
.tp-fix__btn:hover { transform:translateY(-3px) scale(1.04); box-shadow:0 18px 30px -10px rgba(14,42,107,0.55); }
.tp-fix__btn svg { width:48%; height:48%; }
.tp-fix__btn--insta { background:linear-gradient(135deg, #f09433 0%, #e6683c 25%, #dc2743 50%, #cc2366 75%, #bc1888 100%); }
.tp-fix__btn--blog { background:#03c75a; font-family:'Paperlogy', sans-serif; }
.tp-fix__btn--map { background:#3a6dff; }
.tp-fix__btn--tel { background:var(--tp-orange); }

/* =====================================================================
   2. HERO  — 풀블리드 사진 + 강한 카피
   ===================================================================== */
.tp-hero {
    position:relative; overflow:hidden;
    min-height:clamp(520px, 78vw, 760px);
    background:#0a1430;
    display:flex; align-items:center;
}
.tp-hero__bg {
    position:absolute; inset:0;
    background-image:url('../images/site_study_laptop.jpg');
    background-size:cover;
    background-position:center 30%;
    filter:brightness(0.85) saturate(1.05) contrast(1.05);
}
.tp-hero__bg::after {
    content:''; position:absolute; inset:0;
    background:
        linear-gradient(90deg, rgba(10,20,48,0.68) 0%, rgba(10,20,48,0.4) 60%, rgba(10,20,48,0.55) 100%),
        radial-gradient(ellipse at 85% 30%, rgba(255,122,58,0.16) 0%, transparent 50%);
}
.tp-hero__inner {
    position:relative; z-index:2; width:100%;
    padding-top:clamp(80px, 12vw, 140px);
    padding-bottom:clamp(80px, 12vw, 140px);
    /* 좌우 패딩은 .tp-inner의 padding(최소 15px)이 적용되도록 shorthand 사용 안 함 */
}
.tp-hero__grid {
    display:grid; grid-template-columns:1fr;
    gap:32px; max-width:780px;
}

.tp-hero__chip {
    display:inline-flex; align-items:center; gap:clamp(6px, 1vw, 10px);
    width:fit-content; max-width:100%;
    padding:clamp(7px, 1.1vw, 10px) clamp(12px, 1.8vw, 18px);
    background:rgba(255,255,255,0.1);
    border:1px solid rgba(255,255,255,0.2);
    border-radius:999px;
    font-size:clamp(10px, 1.5vw, 13px);
    color:rgba(255,255,255,0.92);
    letter-spacing:1.2px; font-weight:500;
    backdrop-filter:blur(8px);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
@media (max-width:380px) { .tp-hero__chip { letter-spacing:0.5px; padding:8px 14px; } }
.tp-hero__chip-dot {
    width:6px; height:6px; border-radius:50%;
    background:var(--tp-orange);
    box-shadow:0 0 12px rgba(255,122,58,0.9);
}
.tp-hero__title {
    font-family:'Paperlogy', 'Pretendard', sans-serif;
    font-size:clamp(20px, 7vw, 86px);
    font-weight:800; line-height:1.1;
    color:#fff; letter-spacing:-1.5px;
}
@media (max-width:480px) { .tp-hero__title { letter-spacing:-0.5px; font-size:24px !important; } }
@media (max-width:340px) { .tp-hero__title { font-size:20px !important; letter-spacing:-0.3px; } }
.tp-hero__title em {
    display:inline-block; font-style:normal; position:relative;
    background:linear-gradient(120deg, #ffd23a 0%, #ff7a3a 60%, #ff5a8a 100%);
    -webkit-background-clip:text; background-clip:text;
    -webkit-text-fill-color:transparent;
}
.tp-hero__sub {
    font-size:clamp(14px, 2vw, 19px);
    color:rgba(255,255,255,0.78); font-weight:400;
    max-width:580px; line-height:1.7;
}
.tp-hero__ctas { display:flex; gap:12px; flex-wrap:wrap; margin-top:8px; }
.tp-hero__ctas .tp-btn-primary,
.tp-hero__ctas .tp-btn-ghost { max-width:100%; }
@media (max-width:480px) {
    .tp-hero__ctas { flex-direction:column !important; align-items:stretch !important; gap:10px !important; }
    .tp-hero__ctas .tp-btn-primary,
    .tp-hero__ctas .tp-btn-ghost { width:100% !important; justify-content:center !important; padding:14px 20px !important; font-size:13px !important; }
}
.tp-btn-primary {
    display:inline-flex; align-items:center; gap:clamp(7px, 1.2vw, 10px);
    padding:clamp(12px, 1.7vw, 16px) clamp(20px, 3vw, 30px);
    background:#fff; color:var(--tp-navy);
    border-radius:999px;
    font-weight:700; font-size:clamp(12px, 1.2vw, 14px);
    transition:all 0.25s;
}
.tp-btn-primary:hover { transform:translateY(-2px); box-shadow:0 16px 32px rgba(0,0,0,0.2); }
.tp-btn-primary svg { width:14px; height:14px; flex-shrink:0; transition:transform 0.25s; }
.tp-btn-ghost {
    display:inline-flex; align-items:center; gap:clamp(7px, 1.2vw, 10px);
    padding:clamp(12px, 1.7vw, 16px) clamp(20px, 3vw, 30px);
    background:transparent; color:#fff;
    border:1.5px solid rgba(255,255,255,0.4);
    border-radius:999px;
    font-weight:700; font-size:clamp(12px, 1.2vw, 14px);
    transition:all 0.25s;
}
.tp-btn-ghost:hover { background:rgba(255,255,255,0.1); border-color:rgba(255,255,255,0.7); }
.tp-btn-ghost svg { width:14px; height:14px; flex-shrink:0; }
.tp-btn-primary:hover svg, .tp-btn-ghost:hover svg { transform:translateX(3px); transition:transform 0.25s; }
/* fallback: 클래스가 사이즈를 지정 안 한 모든 인라인 SVG에도 안전한 기본값 */
.tp-page svg:not([width]):not([class]) { width:1em; height:1em; }

/* Hero 우측 통계 카드 (PC만) */
.tp-hero__stats {
    position:absolute; right:32px; bottom:32px; z-index:2;
    display:grid; grid-template-columns:repeat(3, auto);
    gap:36px;
    padding:22px 32px;
    background:rgba(10,20,48,0.55);
    border:1px solid rgba(255,255,255,0.18);
    border-radius:20px;
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
}
.tp-hero__stat-num {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(20px, 2.6vw, 30px);
    font-weight:800; color:#fff;
    letter-spacing:-1px; line-height:1;
}
.tp-hero__stat-label {
    font-size:11px; color:rgba(255,255,255,0.65);
    margin-top:6px; letter-spacing:1px; font-weight:500;
}
@media (max-width:768px) { .tp-hero__stats { display:none; } }

/* 좌측 세로 표시 */
.tp-hero__scroll {
    position:absolute; left:32px; bottom:32px; z-index:2;
    display:flex; align-items:center; gap:12px;
    color:rgba(255,255,255,0.6); font-size:11px;
    letter-spacing:2px; font-weight:500;
}
.tp-hero__scroll-line {
    width:2px; height:48px; background:rgba(255,255,255,0.3);
    position:relative; overflow:hidden;
}
.tp-hero__scroll-line::after {
    content:''; position:absolute; top:0; left:0; right:0;
    height:30%; background:#fff;
    animation:tpScroll 2s ease-in-out infinite;
}
@keyframes tpScroll {
    0% { transform:translateY(-100%); }
    100% { transform:translateY(400%); }
}
@media (max-width:768px) { .tp-hero__scroll { display:none; } }

/* =====================================================================
   3. ACADEMY INTRO
   ===================================================================== */
.tp-intro__head {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:clamp(32px, 5vw, 80px);
    align-items:flex-end;
    margin-bottom:clamp(48px, 6vw, 72px);
}
@media (max-width:768px) { .tp-intro__head { grid-template-columns:1fr; } }

.tp-intro__feature-row {
    display:grid; grid-template-columns:repeat(3, 1fr);
    gap:clamp(20px, 2.5vw, 32px);
    margin-top:clamp(48px, 6vw, 80px);
}
@media (max-width:768px) { .tp-intro__feature-row { grid-template-columns:1fr; } }

.tp-intro__feature {
    position:relative; overflow:hidden;
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:clamp(16px, 2.2vw, 28px);
    padding:clamp(22px, 3.2vw, 44px) clamp(18px, 2.8vw, 36px);
    transition:transform 0.3s, box-shadow 0.3s, border-color 0.3s;
}
.tp-intro__feature:hover {
    transform:translateY(-8px); border-color:transparent;
    box-shadow:0 28px 60px rgba(14,42,107,0.12);
}
/* 좌측 컬러 인디케이터 바 */
.tp-intro__feature::before {
    content:''; position:absolute; top:clamp(20px, 3vw, 32px); left:0;
    width:4px; height:clamp(32px, 4.5vw, 48px); border-radius:0 4px 4px 0;
    background:var(--tp-orange);
    transition:height 0.3s;
}
.tp-intro__feature:nth-child(2)::before { background:var(--tp-blue); }
.tp-intro__feature:nth-child(3)::before { background:#1e9971; }
.tp-intro__feature:hover::before { height:80px; }
/* 우상 큰 워터마크 넘버 */
.tp-intro__feature::after {
    content:attr(data-num); position:absolute; top:clamp(12px, 1.6vw, 18px); right:clamp(18px, 2.4vw, 30px);
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(48px, 7vw, 100px); font-weight:900;
    color:rgba(14,42,107,0.05); line-height:0.85;
    letter-spacing:-3px; pointer-events:none;
}
.tp-intro__feature-num {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(12px, 1.1vw, 14px); font-weight:700;
    color:var(--tp-orange); letter-spacing:1.5px;
    margin-bottom:clamp(14px, 2vw, 22px);
    display:inline-flex; align-items:center; gap:clamp(6px, 1vw, 10px);
}
.tp-intro__feature:nth-child(2) .tp-intro__feature-num { color:var(--tp-blue); }
.tp-intro__feature:nth-child(3) .tp-intro__feature-num { color:#1e9971; }
.tp-intro__feature-num strong {
    font-size:clamp(18px, 2vw, 24px); font-weight:900; color:inherit;
    letter-spacing:-0.5px;
}
.tp-intro__feature-num-divider {
    width:clamp(16px, 2vw, 24px); height:1px; background:currentColor; opacity:0.5;
}
.tp-intro__feature-icon {
    width:clamp(54px, 6vw, 72px); height:clamp(54px, 6vw, 72px); margin-bottom:clamp(16px, 2.2vw, 24px);
    display:flex; align-items:center; justify-content:center;
    background:linear-gradient(135deg, #fff, var(--tp-bg-soft));
    border-radius:clamp(14px, 1.6vw, 18px);
    box-shadow:0 8px 20px rgba(14,42,107,0.06);
    position:relative; z-index:1;
}
.tp-intro__feature-icon img { width:clamp(36px, 4vw, 50px); height:clamp(36px, 4vw, 50px); object-fit:contain; }
.tp-intro__feature-title {
    font-size:clamp(18px, 2vw, 26px);
    font-weight:800; color:var(--tp-navy);
    line-height:1.35; margin-bottom:clamp(10px, 1.5vw, 16px);
    letter-spacing:-0.6px;
    position:relative; z-index:1;
}
.tp-intro__feature-title em {
    font-style:normal; color:var(--tp-orange);
    position:relative; padding:0 2px;
}
.tp-intro__feature-title em::after {
    content:''; position:absolute; left:0; right:0; bottom:0.1em;
    height:0.3em; background:rgba(255,210,58,0.4);
    z-index:-1; border-radius:2px;
}
.tp-intro__feature-desc {
    font-size:clamp(15px, 1.2vw, 17px);
    color:var(--tp-text-2); line-height:1.85;
    position:relative; z-index:1;
}
/* 카드 하단에 KPI / 강조 라벨 */
.tp-intro__feature-kpi {
    margin-top:clamp(16px, 2.5vw, 24px); padding-top:clamp(14px, 2vw, 20px);
    border-top:1px dashed var(--tp-line-2);
    display:flex; align-items:center; gap:8px;
    font-size:clamp(11px, 1.1vw, 13px); font-weight:600; color:var(--tp-navy);
}
.tp-intro__feature-kpi-dot {
    width:8px; height:8px; border-radius:50%; background:var(--tp-orange);
    box-shadow:0 0 8px rgba(255,122,58,0.5);
}

.tp-intro__visual {
    position:relative; width:100%; overflow:hidden;
    border-radius:clamp(20px, 3vw, 28px);
    aspect-ratio:21/9; min-height:280px;
    box-shadow:0 30px 80px -20px rgba(14,42,107,0.25);
}
.tp-intro__visual img {
    position:absolute; inset:0;
    width:100%; height:100%; object-fit:cover;
}
.tp-intro__visual::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(135deg, rgba(10,20,48,0.65) 0%, rgba(10,20,48,0.3) 50%, rgba(10,20,48,0.6) 100%);
}
.tp-intro__visual-text {
    position:relative; z-index:1;
    width:100%; height:100%;
    display:flex; flex-direction:column; justify-content:flex-end;
    padding:clamp(28px, 4vw, 52px);
    color:#fff;
}
.tp-intro__visual-eyebrow {
    font-size:clamp(11px, 1.4vw, 13px);
    letter-spacing:2.5px; text-transform:uppercase;
    color:var(--tp-orange); font-weight:700;
    margin-bottom:14px;
}
.tp-intro__visual-headline {
    font-size:clamp(20px, 3.5vw, 36px);
    font-weight:800; line-height:1.3;
    letter-spacing:-1px;
    max-width:560px;
}

/* 인트로 본문 — features 위 (아이콘 + eyebrow + body 카드) */
.tp-intro__opening {
    position:relative;
    margin-top:clamp(36px, 4.6vw, 56px);
    max-width:920px; margin-left:auto; margin-right:auto;
    padding:clamp(26px, 3.6vw, 42px) clamp(26px, 3.6vw, 48px);
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:clamp(18px, 2.4vw, 26px);
    box-shadow:0 18px 40px -18px rgba(14,42,107,0.1);
    display:grid;
    grid-template-columns:auto 1fr;
    align-items:center;
    gap:clamp(20px, 2.8vw, 32px);
    overflow:hidden;
}
.tp-intro__opening::before {
    content:''; position:absolute; left:0; top:0; bottom:0;
    width:5px;
    background:linear-gradient(180deg, var(--tp-orange) 0%, var(--tp-blue) 100%);
}
.tp-intro__opening::after {
    content:''; position:absolute; right:-40px; top:-40px;
    width:180px; height:180px;
    background:radial-gradient(circle, rgba(255,122,58,0.07) 0%, transparent 70%);
    pointer-events:none;
}
.tp-intro__opening-icon {
    flex-shrink:0;
    width:clamp(54px, 6.2vw, 72px); height:clamp(54px, 6.2vw, 72px);
    display:flex; align-items:center; justify-content:center;
    border-radius:clamp(14px, 1.6vw, 18px);
    background:linear-gradient(135deg, var(--tp-navy) 0%, var(--tp-blue) 100%);
    color:#fff;
    box-shadow:0 14px 26px -10px rgba(14,42,107,0.4);
}
.tp-intro__opening-icon svg {
    width:50%; height:50%;
}
.tp-intro__opening-text { position:relative; z-index:1; min-width:0; }
.tp-intro__opening-eyebrow {
    display:inline-flex; align-items:center; gap:10px;
    font-size:clamp(10.5px, 1.05vw, 12.5px);
    font-weight:800; color:var(--tp-orange);
    letter-spacing:2.5px; text-transform:uppercase;
    margin-bottom:clamp(10px, 1.4vw, 14px);
}
.tp-intro__opening-eyebrow-bar {
    width:clamp(22px, 2.6vw, 30px); height:2px;
    background:var(--tp-orange); border-radius:2px;
}
.tp-intro__opening-body {
    font-size:clamp(13.5px, 1.45vw, 16px);
    color:var(--tp-text); line-height:1.85;
    word-break:keep-all; font-weight:500;
}
.tp-intro__opening-body strong {
    color:var(--tp-navy); font-weight:800;
    background:linear-gradient(transparent 65%, rgba(255,210,58,0.5) 65%);
    padding:0 2px;
}
.tp-intro__opening-tag {
    position:absolute; right:clamp(18px, 2.4vw, 26px); bottom:clamp(14px, 2vw, 22px);
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(10px, 1vw, 12px); font-weight:800;
    color:rgba(14,42,107,0.18); letter-spacing:1px;
    pointer-events:none;
}
@media (max-width:560px) {
    .tp-intro__opening { grid-template-columns:1fr; gap:18px; }
    .tp-intro__opening-tag { display:none; }
}

/* 마무리 본문 — 다크 미션 스테이트먼트 카드 */
.tp-intro__closing {
    position:relative; overflow:hidden;
    margin-top:clamp(40px, 5vw, 64px);
    max-width:920px; margin-left:auto; margin-right:auto;
    padding:clamp(34px, 4.6vw, 56px) clamp(28px, 4vw, 52px);
    background:linear-gradient(135deg, #0e2a6b 0%, #0a1430 100%);
    color:#fff;
    border-radius:clamp(18px, 2.4vw, 28px);
    box-shadow:0 28px 60px -20px rgba(14,42,107,0.45);
}
.tp-intro__closing::before {
    content:''; position:absolute; top:-100px; right:-100px;
    width:280px; height:280px;
    background:radial-gradient(circle, rgba(255,122,58,0.22) 0%, transparent 70%);
    pointer-events:none;
}
.tp-intro__closing::after {
    content:''; position:absolute; bottom:-80px; left:-80px;
    width:240px; height:240px;
    background:radial-gradient(circle, rgba(58,109,255,0.2) 0%, transparent 70%);
    pointer-events:none;
}
.tp-intro__closing-quote {
    position:absolute; top:clamp(22px, 3vw, 32px); left:clamp(22px, 3vw, 32px);
    font-family:'Paperlogy', serif;
    font-size:clamp(72px, 9vw, 120px);
    line-height:0.8; color:rgba(255,122,58,0.22);
    pointer-events:none; font-weight:900;
}
.tp-intro__closing > p {
    position:relative; z-index:1;
    font-size:clamp(13px, 1.42vw, 15.5px);
    color:rgba(255,255,255,0.84); line-height:1.9;
    word-break:keep-all;
    margin-bottom:clamp(14px, 1.7vw, 20px);
}
.tp-intro__closing > p:last-of-type { margin-bottom:0; }
.tp-intro__closing .tp-mark {
    background:rgba(255,210,58,0.3); color:#fff; font-weight:700;
    padding:0 4px; border-radius:3px;
}
.tp-intro__closing .tp-mark--blue {
    background:rgba(108,141,255,0.35); color:#fff;
}
.tp-intro__closing strong {
    color:var(--tp-yellow); font-weight:700;
}
.tp-intro__closing-sign {
    position:relative; z-index:1;
    margin-top:clamp(24px, 3vw, 36px);
    padding-top:clamp(22px, 2.6vw, 30px);
    border-top:1px solid rgba(255,255,255,0.16);
    display:flex; align-items:center; justify-content:flex-end; gap:14px;
    font-size:clamp(12px, 1.3vw, 14px);
    color:rgba(255,255,255,0.7);
    letter-spacing:0.5px;
}
.tp-intro__closing-sign-line {
    width:clamp(28px, 3vw, 40px); height:1px;
    background:linear-gradient(90deg, transparent 0%, var(--tp-orange) 100%);
}
.tp-intro__closing-sign strong {
    color:#fff; font-weight:800; font-size:1.05em;
    background:none;
}

/* =====================================================================
   4. JOSHUA FRAME — 좌측 사진 / 우측 카피
   ===================================================================== */
.tp-frame {
    display:grid; grid-template-columns:1fr 1fr;
    gap:clamp(28px, 4vw, 80px);
    align-items:center;
}
@media (max-width:900px) { .tp-frame { grid-template-columns:1fr; } }

.tp-frame__photo {
    position:relative; overflow:hidden;
    border-radius:clamp(20px, 3vw, 32px);
    aspect-ratio:1/1.05;
    box-shadow:0 30px 80px -20px rgba(14,42,107,0.3);
}
.tp-frame__photo img {
    width:100%; height:100%; object-fit:cover;
}
.tp-frame__photo-tag {
    position:absolute; top:clamp(14px, 2.2vw, 24px); left:clamp(14px, 2.2vw, 24px); z-index:2;
    display:inline-flex; align-items:center; gap:8px;
    padding:clamp(7px, 1.2vw, 10px) clamp(12px, 1.8vw, 18px);
    background:rgba(255,255,255,0.95);
    backdrop-filter:blur(8px);
    color:var(--tp-navy);
    border-radius:999px;
    font-size:clamp(11px, 1vw, 12px); font-weight:700;
    letter-spacing:1px;
}
.tp-frame__photo-tag-dot {
    width:6px; height:6px; border-radius:50%; background:var(--tp-orange);
    box-shadow:0 0 8px rgba(255,122,58,0.6);
}

/* 사진 하단 floating 정보 카드 */
.tp-frame__photo-info {
    position:absolute; left:clamp(14px, 2.2vw, 24px); right:clamp(14px, 2.2vw, 24px); bottom:clamp(14px, 2.2vw, 24px);
    padding:clamp(14px, 2vw, 20px) clamp(16px, 2.4vw, 24px);
    background:rgba(10,20,48,0.78);
    backdrop-filter:blur(16px);
    -webkit-backdrop-filter:blur(16px);
    border:1px solid rgba(255,255,255,0.1);
    border-radius:16px;
    color:#fff;
}
.tp-frame__photo-info-num {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(28px, 4vw, 40px); font-weight:800;
    line-height:1; letter-spacing:-1px;
    background:linear-gradient(120deg, var(--tp-yellow), var(--tp-orange));
    -webkit-background-clip:text; background-clip:text;
    -webkit-text-fill-color:transparent;
}
.tp-frame__photo-info-label {
    font-size:12px; color:rgba(255,255,255,0.7);
    margin-top:6px; font-weight:500; letter-spacing:0.5px;
}

.tp-frame__text-tag {
    margin-bottom:16px;
}
.tp-frame__text-title {
    font-size:clamp(22px, 4.4vw, 56px);
    font-weight:800; color:var(--tp-navy);
    line-height:1.2; letter-spacing:-1.4px;
    margin-bottom:clamp(16px, 2.6vw, 28px);
}
.tp-frame__text-title em {
    font-style:normal;
    color:var(--tp-orange);
}
.tp-frame__text-desc {
    font-size:clamp(14px, 1.3vw, 18px);
    color:var(--tp-text-2); line-height:1.9;
    margin-bottom:clamp(20px, 3.4vw, 36px);
}
.tp-frame__bullets {
    display:flex; flex-direction:column; gap:clamp(12px, 1.6vw, 16px);
    margin-bottom:clamp(20px, 3vw, 32px);
}
.tp-frame__bullets li {
    display:flex; align-items:flex-start; gap:14px;
    font-size:clamp(14px, 1.7vw, 15px);
    color:var(--tp-text); font-weight:500;
    line-height:1.6;
}
.tp-frame__bullets-icon {
    flex-shrink:0; width:24px; height:24px; border-radius:50%;
    background:var(--tp-orange-soft);
    display:flex; align-items:center; justify-content:center;
    color:var(--tp-orange);
}
.tp-frame__bullets-icon svg { width:12px; height:12px; }
.tp-frame__bullets li strong {
    font-weight:700; color:var(--tp-navy);
    display:block; margin-bottom:2px;
}
.tp-frame__bullets li span { color:var(--tp-text-2); font-size:13px; font-weight:400; }

/* JOSHUA FRAME — 2개 영역 태그 */
.tp-frame__tags {
    display:flex; flex-wrap:wrap; gap:clamp(10px, 1.4vw, 14px);
    margin-top:clamp(20px, 2.8vw, 28px);
}
.tp-frame__tags li {
    display:inline-flex; align-items:center; gap:10px;
    padding:clamp(10px, 1.4vw, 14px) clamp(16px, 2.2vw, 22px);
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:999px;
    font-size:clamp(13px, 1.3vw, 14.5px); font-weight:700;
    color:var(--tp-navy); letter-spacing:-0.3px;
    box-shadow:0 6px 14px -4px rgba(14,42,107,0.08);
}
.tp-frame__tags li:first-child .tp-frame__tag-no { background:var(--tp-blue); }
.tp-frame__tags li:last-child .tp-frame__tag-no { background:var(--tp-orange); }
.tp-frame__tag-no {
    width:24px; height:24px; border-radius:50%;
    background:var(--tp-navy); color:#fff;
    display:inline-flex; align-items:center; justify-content:center;
    font-size:12px; font-weight:800;
    font-family:'Paperlogy', sans-serif;
}

/* 학생/원장 듀얼 카드 */
.tp-dual {
    display:grid; grid-template-columns:1fr 1fr;
    gap:clamp(18px, 2.4vw, 32px);
    margin-top:clamp(48px, 6vw, 72px);
}
@media (max-width:900px) { .tp-dual { grid-template-columns:1fr; } }
.tp-dual__card {
    position:relative; overflow:hidden;
    padding:clamp(28px, 3.6vw, 44px) clamp(22px, 3vw, 36px);
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:clamp(18px, 2.4vw, 26px);
    box-shadow:0 20px 50px -22px rgba(14,42,107,0.18);
}
.tp-dual__card::before {
    content:''; position:absolute; top:0; left:0; right:0; height:4px;
    background:var(--c, var(--tp-navy));
}
.tp-dual__card--student { --c:linear-gradient(90deg, var(--tp-blue) 0%, #6c8dff 100%); }
.tp-dual__card--owner   { --c:linear-gradient(90deg, var(--tp-orange) 0%, #ff9533 100%); }
.tp-dual__card--student .tp-dual__no { color:var(--tp-blue); }
.tp-dual__card--owner   .tp-dual__no { color:var(--tp-orange); }
.tp-dual__eyebrow {
    font-size:clamp(11px, 1.1vw, 13px);
    color:var(--tp-text-soft);
    letter-spacing:2px; text-transform:uppercase;
    font-weight:700;
    margin-bottom:clamp(8px, 1vw, 10px);
}
.tp-dual__card--student .tp-dual__eyebrow { color:var(--tp-blue); }
.tp-dual__card--owner   .tp-dual__eyebrow { color:var(--tp-orange); }
.tp-dual__title {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(20px, 2.4vw, 26px);
    font-weight:800; color:var(--tp-navy);
    letter-spacing:-0.5px;
    margin-bottom:clamp(8px, 1vw, 10px);
}
.tp-dual__lead {
    font-size:clamp(13px, 1.3vw, 14.5px);
    color:var(--tp-text-soft); font-weight:600;
    padding-bottom:clamp(18px, 2.4vw, 24px);
    margin-bottom:clamp(20px, 2.6vw, 28px);
    border-bottom:1px solid var(--tp-line);
}
.tp-dual__list { display:flex; flex-direction:column; gap:clamp(16px, 2vw, 22px); }
.tp-dual__list li {
    display:grid; grid-template-columns:auto 1fr;
    gap:clamp(12px, 1.6vw, 16px);
    align-items:flex-start;
}
.tp-dual__no {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(18px, 2vw, 22px);
    font-weight:900; line-height:1;
    width:clamp(34px, 4vw, 40px); height:clamp(34px, 4vw, 40px);
    display:flex; align-items:center; justify-content:center;
    border-radius:50%;
    background:var(--tp-bg-soft);
    flex-shrink:0;
}
.tp-dual__list li strong {
    display:block; margin-bottom:4px;
    font-size:clamp(13.5px, 1.4vw, 15.5px); font-weight:700;
    color:var(--tp-navy); letter-spacing:-0.3px;
}
.tp-dual__list li p {
    font-size:clamp(12.5px, 1.25vw, 14px);
    color:var(--tp-text-2); line-height:1.65;
    word-break:keep-all;
}

/* =====================================================================
   5. 8대 영역
   ===================================================================== */
/* tp-octa-section 배경은 photo-dark / 색 모디파이어가 처리 */
.tp-octa__head {
    text-align:center; max-width:760px;
    margin:0 auto clamp(48px,6vw,72px);
}
.tp-octa__head .tp-headline { font-size:clamp(18px, 4.6vw, 48px); }

.tp-octa {
    position:relative; width:100%;
    max-width:820px; margin:0 auto;
    aspect-ratio:1/1;
}
.tp-octa__bg {
    position:absolute; inset:6%;
    background:
        radial-gradient(circle at 50% 50%, var(--tp-blue-soft) 0%, transparent 60%);
    border-radius:50%;
}
.tp-octa__rings {
    position:absolute; inset:0; pointer-events:none;
}
.tp-octa__rings::before,
.tp-octa__rings::after {
    content:''; position:absolute; border:1px dashed rgba(14,42,107,0.12);
    border-radius:50%; top:50%; left:50%; transform:translate(-50%, -50%);
}
.tp-octa__rings::before { width:80%; height:80%; }
.tp-octa__rings::after  { width:58%; height:58%; border-style:dotted; }

.tp-octa__center {
    position:absolute; inset:28%;
    background:
        radial-gradient(circle at 30% 25%, rgba(58,109,255,0.4) 0%, transparent 60%),
        linear-gradient(135deg, var(--tp-navy) 0%, var(--tp-navy-2) 100%);
    border-radius:50%;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    color:#fff; text-align:center; padding:6%;
    box-shadow:0 24px 60px rgba(14,42,107,0.3);
    z-index:2;
}
.tp-octa__center img {
    width:85%; max-width:200px; margin-bottom:10px;
}
.tp-octa__center-en {
    font-size:clamp(9px, 1.2vw, 11px);
    color:rgba(255,255,255,0.7); letter-spacing:2.5px;
    font-weight:600; text-transform:uppercase;
}
.tp-octa__item {
    position:absolute; transform:translate(-50%, -50%);
    width:clamp(96px, 16vw, 160px); aspect-ratio:1/1;
    border-radius:50%; background:#fff;
    border:1px solid var(--tp-line);
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    text-align:center; padding:10px 8px;
    box-shadow:0 14px 32px rgba(14,42,107,0.08);
    z-index:2;
    transition:transform 0.3s, box-shadow 0.3s, border-color 0.3s;
    --c:var(--tp-orange);
    --cbg:rgba(255,122,58,0.12);
}
.tp-octa__item:hover {
    transform:translate(-50%, -50%) scale(1.08);
    box-shadow:0 22px 44px rgba(14,42,107,0.18);
    border-color:var(--c);
}
.tp-octa__item-icon-wrap {
    width:clamp(44px, 6vw, 56px); aspect-ratio:1/1;
    border-radius:50%;
    background:var(--cbg);
    display:flex; align-items:center; justify-content:center;
    margin-bottom:6px;
}
.tp-octa__item-no {
    position:absolute; top:4px; right:10px;
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(18px, 2.3vw, 26px); font-weight:900;
    color:var(--c); letter-spacing:-0.5px; line-height:1;
    text-shadow:
        0 1px 0 #fff,
        0 0 6px rgba(255,255,255,0.95),
        0 4px 10px rgba(0,0,0,0.18);
}
.tp-octa__item-icon {
    width:clamp(22px, 3.5vw, 30px); height:clamp(22px, 3.5vw, 30px);
    color:var(--c);
}
.tp-octa__item-label {
    font-size:clamp(12px, 1.5vw, 15px);
    font-weight:800; color:var(--tp-navy); line-height:1.2;
    letter-spacing:-0.3px;
}
.tp-octa__item-label small {
    display:block; font-size:0.78em; font-weight:600;
    color:var(--tp-text-3); letter-spacing:0; margin-top:2px;
}

/* per-item 컬러 테마 — PPT 톤 참조 */
.tp-octa__item:nth-child(4)  { --c:#ff7a3a; --cbg:rgba(255,122,58,0.13); } /* Listening */
.tp-octa__item:nth-child(5)  { --c:#0bb5b5; --cbg:rgba(11,181,181,0.12); } /* Speaking */
.tp-octa__item:nth-child(6)  { --c:#ff9533; --cbg:rgba(255,149,51,0.13); } /* Reading */
.tp-octa__item:nth-child(7)  { --c:#e7595a; --cbg:rgba(231,89,90,0.12); } /* Writing */
.tp-octa__item:nth-child(8)  { --c:#3a6dff; --cbg:rgba(58,109,255,0.12); } /* Vocabulary */
.tp-octa__item:nth-child(9)  { --c:#1e9971; --cbg:rgba(30,153,113,0.12); } /* Grammar */
.tp-octa__item:nth-child(10) { --c:#ffb024; --cbg:rgba(255,176,36,0.15); } /* Essay */
.tp-octa__item:nth-child(11) { --c:#ff7a3a; --cbg:rgba(255,122,58,0.13); } /* 1등급 Maker */

/* center가 nth-child(3)이므로 8개 아이템은 4~11 */
.tp-octa__item:nth-child(4)  { top:6%;  left:50%; } /* 01 Listening */
.tp-octa__item:nth-child(5)  { top:21%; left:79%; } /* 02 Speaking */
.tp-octa__item:nth-child(6)  { top:50%; left:94%; } /* 03 Reading */
.tp-octa__item:nth-child(7)  { top:79%; left:79%; } /* 04 Writing */
.tp-octa__item:nth-child(8)  { top:94%; left:50%; } /* 05 Vocabulary */
.tp-octa__item:nth-child(9)  { top:79%; left:21%; } /* 06 Grammar */
.tp-octa__item:nth-child(10) { top:50%; left:6%;  } /* 07 Essay */
.tp-octa__item:nth-child(11) { top:21%; left:21%; } /* 08 1등급 Maker */

@media (max-width:480px) { .tp-octa { max-width:360px; } }
@media (max-width:320px) {
    .tp-octa { max-width:280px; }
    .tp-octa__item { width:62px; }
    .tp-octa__item-icon { width:16px; height:16px; }
    .tp-octa__item-label { font-size:9px; }
    .tp-octa__item-no { font-size:8px; }
}

.tp-octa__footer {
    text-align:center; max-width:680px; margin:clamp(40px, 6vw, 64px) auto 0;
    font-size:clamp(15px, 1.4vw, 18px); color:var(--tp-text-2);
    font-weight:500; line-height:1.85;
}
.tp-octa__footer strong { color:var(--tp-navy); font-weight:700; }

/* 8대 영역 상세 카드 그리드 */
.tp-octa-detail {
    display:grid; grid-template-columns:repeat(4, 1fr);
    gap:clamp(12px, 1.5vw, 20px);
    margin:clamp(40px, 5vw, 60px) auto 0;
    max-width:1100px;
}
@media (max-width:900px) { .tp-octa-detail { grid-template-columns:repeat(2, 1fr) !important; } }
@media (max-width:480px) { .tp-octa-detail { grid-template-columns:1fr !important; } }
.tp-octa-detail__item {
    position:relative;
    background:rgba(255,255,255,0.96);
    backdrop-filter:blur(8px);
    border:1px solid rgba(255,255,255,0.6);
    border-radius:clamp(14px, 1.8vw, 18px);
    padding:clamp(14px, 2vw, 20px) clamp(14px, 2.2vw, 22px) clamp(14px, 2.2vw, 22px);
    transition:transform 0.25s, box-shadow 0.25s;
}
.tp-octa-detail__item:hover {
    transform:translateY(-4px);
    box-shadow:0 18px 36px rgba(0,0,0,0.25);
}
.tp-octa-detail__item::before {
    content:''; position:absolute; top:0; left:clamp(14px, 2.2vw, 22px);
    width:clamp(28px, 3.6vw, 36px); height:4px; background:var(--c, var(--tp-orange));
    border-radius:0 0 4px 4px;
}
.tp-octa-detail__no {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(11px, 1.1vw, 13px); font-weight:800;
    color:var(--c, var(--tp-orange));
    letter-spacing:1.5px;
}
.tp-octa-detail__title {
    font-size:clamp(14px, 1.3vw, 17px);
    font-weight:800; color:var(--tp-navy);
    margin:6px 0 8px;
    letter-spacing:-0.3px;
}
.tp-octa-detail__desc {
    font-size:clamp(13px, 1.05vw, 14px);
    color:var(--tp-text-2); line-height:1.65;
}

/* =====================================================================
   6 & 7. SOLUTION / EDUCATION
   ===================================================================== */
.tp-sol__hero {
    position:relative; overflow:hidden;
    border-radius:clamp(20px, 3vw, 32px);
    aspect-ratio:21/9; min-height:240px;
    margin-bottom:clamp(48px, 6vw, 72px);
    box-shadow:0 30px 80px -20px rgba(14,42,107,0.3);
}
@media (max-width:480px) {
    .tp-sol__hero { aspect-ratio:auto; min-height:220px; }
}
.tp-sol__hero img {
    position:absolute; inset:0;
    width:100%; height:100%; object-fit:cover;
}
.tp-sol__hero::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(135deg, rgba(14,33,61,0.85) 0%, rgba(14,42,107,0.65) 100%);
}
.tp-sol__hero-text {
    position:relative; z-index:1; width:100%; height:100%;
    display:flex; flex-direction:column; justify-content:center;
    padding:clamp(20px, 4vw, 56px);
    color:#fff;
    max-width:680px;
}
.tp-sol__hero-eyebrow {
    display:inline-flex; align-items:center; gap:10px;
    width:fit-content;
    font-size:clamp(11px, 1.4vw, 13px); letter-spacing:2.5px;
    text-transform:uppercase; color:var(--tp-yellow);
    font-weight:700; margin-bottom:18px;
}
.tp-sol__hero-eyebrow::before {
    content:''; width:28px; height:1.5px; background:var(--tp-yellow);
}
.tp-sol__hero-title {
    font-size:clamp(18px, 3.8vw, 36px); font-weight:800;
    color:#fff; line-height:1.25; letter-spacing:-0.5px;
    margin-bottom:14px;
}
.tp-sol__hero-desc {
    font-size:clamp(13px, 1.7vw, 16px);
    color:rgba(255,255,255,0.78); line-height:1.7;
    max-width:520px;
}

.tp-pill-wrap { text-align:center; }
.tp-pill {
    display:inline-flex; align-items:center; gap:clamp(7px, 1.2vw, 10px);
    padding:clamp(8px, 1.4vw, 12px) clamp(14px, 2.4vw, 24px);
    background:var(--tp-navy); color:#fff;
    border-radius:999px;
    font-size:clamp(12px, 1.4vw, 15px); font-weight:700;
    margin-bottom:clamp(28px, 4.4vw, 48px);
    box-shadow:0 12px 28px rgba(14,42,107,0.25);
}
.tp-pill svg { width:14px; height:14px; color:var(--tp-yellow); }

.tp-3col {
    display:grid; grid-template-columns:repeat(3, 1fr);
    gap:clamp(20px, 2.5vw, 28px);
}
@media (max-width:900px) { .tp-3col { grid-template-columns:1fr; gap:16px; } }

.tp-3col__item {
    background:#fff; border:1px solid var(--tp-line);
    border-radius:clamp(14px, 2.2vw, 24px);
    padding:clamp(20px, 3.2vw, 40px) clamp(16px, 2.6vw, 32px);
    position:relative; overflow:hidden;
    transition:transform 0.3s, box-shadow 0.3s, border-color 0.3s;
}
.tp-3col__item:hover {
    transform:translateY(-6px); border-color:transparent;
    box-shadow:0 24px 50px rgba(14,42,107,0.1);
}
.tp-3col__item::after {
    content:attr(data-no);
    position:absolute; top:clamp(16px, 2.2vw, 24px); right:clamp(18px, 2.6vw, 32px);
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(40px, 6vw, 72px); font-weight:800;
    color:rgba(14,42,107,0.04); line-height:0.8;
    letter-spacing:-3px; pointer-events:none;
}
.tp-3col__icon-wrap {
    width:clamp(48px, 5.4vw, 64px); height:clamp(48px, 5.4vw, 64px); margin-bottom:clamp(16px, 2.2vw, 24px);
}
.tp-3col__icon-wrap img { width:100%; height:100%; object-fit:contain; }
.tp-3col__no {
    font-size:clamp(10px, 1vw, 11px); font-weight:700; color:var(--tp-orange);
    letter-spacing:2px; margin-bottom:8px;
}
.tp-3col__title {
    font-size:clamp(17px, 1.9vw, 25px); font-weight:700;
    color:var(--tp-navy); line-height:1.4; margin-bottom:clamp(10px, 1.4vw, 14px);
    letter-spacing:-0.5px;
}
.tp-3col__desc {
    font-size:clamp(14px, 1.2vw, 17px);
    color:var(--tp-text-2); line-height:1.8;
}

.tp-body-copy {
    max-width:920px; margin:clamp(40px, 5vw, 56px) auto 0;
    text-align:center;
    font-size:clamp(15px, 1.3vw, 18px);
    color:var(--tp-text-2); line-height:1.95;
    position:relative;
}
/* 본문 강조 — 형광펜 효과 */
.tp-mark {
    background:linear-gradient(180deg, transparent 55%, rgba(255,210,58,0.45) 55%, rgba(255,210,58,0.45) 95%, transparent 95%);
    padding:0 4px; font-weight:700; color:var(--tp-navy);
}
.tp-mark--blue {
    background:linear-gradient(180deg, transparent 55%, rgba(58,109,255,0.18) 55%, rgba(58,109,255,0.18) 95%, transparent 95%);
}

/* 인라인 라벨 / 배지 */
.tp-chip {
    display:inline-flex; align-items:center; gap:6px;
    padding:4px 12px; border-radius:999px;
    background:var(--tp-orange-soft); color:var(--tp-orange);
    font-size:13px; font-weight:700; letter-spacing:0.5px;
}
.tp-chip--blue { background:var(--tp-blue-soft); color:var(--tp-navy); }
.tp-chip svg { width:12px; height:12px; }

/* 강조 KPI 통계 그리드 */
.tp-stats {
    display:grid; grid-template-columns:repeat(4, 1fr);
    gap:clamp(12px, 1.5vw, 20px);
    margin:clamp(40px, 5vw, 56px) auto 0;
    max-width:960px;
}
@media (max-width:768px) { .tp-stats { grid-template-columns:repeat(2, 1fr); } }
.tp-stat {
    text-align:center;
    padding:clamp(16px, 2.6vw, 32px) clamp(12px, 1.8vw, 20px);
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:clamp(14px, 1.8vw, 18px);
    position:relative; overflow:hidden;
    transition:transform 0.25s, box-shadow 0.25s;
}
.tp-stat:hover { transform:translateY(-4px); box-shadow:0 18px 36px rgba(14,42,107,0.08); }
.tp-stat::before {
    content:''; position:absolute; top:0; left:50%; transform:translateX(-50%);
    width:40px; height:4px; background:var(--tp-orange);
    border-radius:0 0 6px 6px;
}
.tp-stat__num {
    font-family:'Paperlogy', sans-serif;
    font-size:clamp(28px, 3.5vw, 42px); font-weight:900;
    color:var(--tp-navy); line-height:1; letter-spacing:-1.5px;
    margin-bottom:8px;
}
.tp-stat__num em { font-style:normal; color:var(--tp-orange); }
.tp-stat__num small { font-size:0.55em; font-weight:700; }
.tp-stat__label {
    font-size:clamp(12px, 1.2vw, 14px); font-weight:600; color:var(--tp-text-2);
}
.tp-body-copy strong { color:var(--tp-navy); font-weight:700; }

/* =====================================================================
   8. INSIDE FRAMEWORK
   ===================================================================== */
.tp-inside__head {
    display:flex; align-items:flex-end; justify-content:space-between;
    gap:clamp(14px, 2.2vw, 24px); flex-wrap:wrap;
    margin-bottom:clamp(28px, 4.2vw, 48px);
}
.tp-inside__head .tp-headline { font-size:clamp(18px, 4.6vw, 42px); }
.tp-inside__head-right {
    display:flex; flex-direction:column; align-items:flex-end; gap:clamp(10px, 1.4vw, 14px);
}
.tp-inside__head-lead {
    font-size:clamp(12px, 1.3vw, 14.5px);
    color:var(--tp-text-soft); font-weight:500;
    text-align:right;
}
@media (max-width:560px) {
    .tp-inside__head-right { align-items:flex-start; }
    .tp-inside__head-lead { text-align:left; }
}
.tp-btn-link {
    display:inline-flex; align-items:center; gap:8px;
    padding:clamp(10px, 1.6vw, 14px) clamp(16px, 2.4vw, 26px); background:var(--tp-navy);
    border-radius:999px;
    font-size:clamp(11px, 1.1vw, 13px); font-weight:700; color:#fff;
    white-space:nowrap; transition:all 0.25s;
}
.tp-btn-link:hover { background:var(--tp-navy-deep); transform:translateY(-2px); }
.tp-btn-link svg { width:14px; height:14px; transition:transform 0.25s; }
.tp-btn-link:hover svg { transform:translateX(3px); }

.tp-inside__cards {
    display:grid; grid-template-columns:1fr 1fr;
    gap:clamp(20px, 2.5vw, 28px);
}
@media (max-width:768px) { .tp-inside__cards { grid-template-columns:1fr; } }

.tp-card-large {
    position:relative; overflow:hidden;
    aspect-ratio:16/9; min-height:220px;
    border-radius:clamp(16px, 2.2vw, 28px);
    padding:clamp(20px, 3.2vw, 40px);
    color:#fff;
    display:flex; flex-direction:column; justify-content:space-between;
    transition:transform 0.3s;
}
.tp-card-large:hover { transform:translateY(-6px); }
.tp-card-large__bg {
    position:absolute; inset:0;
    width:100%; height:100%; object-fit:cover;
}
.tp-card-large::after {
    content:''; position:absolute; inset:0;
}
.tp-card-large--a::after {
    background:linear-gradient(135deg, rgba(14,42,107,0.92) 0%, rgba(14,33,61,0.7) 100%);
}
.tp-card-large--b::after {
    background:linear-gradient(135deg, rgba(123,67,200,0.85) 0%, rgba(14,42,107,0.85) 100%);
}
.tp-card-large__content {
    position:relative; z-index:1;
    width:100%; height:100%;
    display:flex; flex-direction:column; justify-content:space-between;
}
.tp-card-large__eyebrow {
    font-size:11px; letter-spacing:2px; text-transform:uppercase;
    color:var(--tp-orange); font-weight:700;
}
.tp-card-large__title {
    position:relative; z-index:1;
    font-size:clamp(20px, 2vw, 28px); font-weight:700;
    line-height:1.4; color:#fff; margin-top:auto;
    letter-spacing:-0.6px;
}
.tp-card-large__btn {
    align-self:flex-start; margin-top:clamp(14px, 2vw, 20px);
    display:inline-flex; align-items:center; gap:8px;
    padding:clamp(8px, 1.2vw, 11px) clamp(14px, 2.2vw, 22px); background:#fff;
    color:var(--tp-navy); border-radius:999px;
    font-size:clamp(11px, 1vw, 12px); font-weight:700;
}
.tp-card-large__btn svg { width:14px; height:14px; }

/* =====================================================================
   9. CEO GREETING
   ===================================================================== */
.tp-ceo-section {
    background:linear-gradient(180deg, #fff 0%, var(--tp-bg-soft) 100%);
}
.tp-ceo {
    display:grid; grid-template-columns:1fr 1.3fr;
    gap:clamp(36px, 5.5vw, 80px);
    align-items:center;
}
@media (max-width:900px) { .tp-ceo { grid-template-columns:1fr; } }

.tp-ceo__photo-wrap {
    position:relative; max-width:420px; width:100%; margin:0 auto;
}
.tp-ceo__photo {
    position:relative; aspect-ratio:3/4;
    border-radius:clamp(16px, 2.4vw, 24px); overflow:hidden;
    background:#e8ecf3;
    box-shadow:0 30px 70px rgba(14,42,107,0.25);
}
.tp-ceo__photo img { width:100%; height:100%; object-fit:cover; }
.tp-ceo__photo-deco {
    position:absolute; top:clamp(-10px, -1.2vw, -14px); right:clamp(-10px, -1.2vw, -14px);
    width:64%; height:64%;
    border-radius:clamp(16px, 2.4vw, 24px);
    background:linear-gradient(135deg, var(--tp-orange), var(--tp-yellow));
    z-index:-1; opacity:0.95;
}
.tp-ceo__quote {
    position:absolute; bottom:clamp(14px, 2.2vw, 24px); left:clamp(14px, 2.2vw, 24px); right:clamp(14px, 2.2vw, 24px); z-index:2;
    padding:clamp(14px, 2vw, 20px) clamp(16px, 2.4vw, 24px);
    background:rgba(255,255,255,0.96);
    backdrop-filter:blur(8px);
    border-radius:clamp(10px, 1.4vw, 14px);
    color:var(--tp-navy);
    box-shadow:0 16px 40px rgba(14,42,107,0.15);
}
.tp-ceo__quote-icon {
    width:24px; height:24px; color:var(--tp-orange);
    margin-bottom:8px;
}
.tp-ceo__quote-text {
    font-size:13px; line-height:1.55; color:var(--tp-text);
    font-weight:500;
}
.tp-ceo__quote-author {
    margin-top:10px; font-size:11px; color:var(--tp-text-3);
    letter-spacing:1px; font-weight:600;
}

.tp-ceo__sub { color:var(--tp-text-3); font-size:14px; margin-bottom:6px; font-weight:500; }
.tp-ceo__title {
    font-size:clamp(22px, 4.2vw, 52px);
    font-weight:800; color:var(--tp-navy);
    line-height:1.25; letter-spacing:-1.2px; margin-bottom:clamp(18px, 3vw, 32px);
}
.tp-ceo__title em {
    font-style:normal; color:var(--tp-orange);
}
.tp-ceo__body {
    font-size:clamp(13px, 1.4vw, 15px);
    color:var(--tp-text-2); line-height:2;
}
.tp-ceo__body p + p { margin-top:clamp(10px, 1.5vw, 16px); }
.tp-ceo__body strong { color:var(--tp-navy); font-weight:700; }
.tp-ceo__sign {
    margin-top:clamp(22px, 3.5vw, 36px);
    display:flex; align-items:center; gap:clamp(10px, 1.4vw, 14px);
    font-size:clamp(12px, 1.2vw, 14px); color:var(--tp-text-2);
}
.tp-ceo__sign strong { font-weight:700; color:var(--tp-navy); font-size:clamp(14px, 1.5vw, 17px); }
.tp-ceo__sign-line { flex:0 0 60px; height:1px; background:var(--tp-navy); }

/* =====================================================================
   10. JOSHUA REVIEW
   ===================================================================== */
.tp-review__head {
    display:flex; align-items:flex-end; justify-content:space-between;
    gap:clamp(14px, 2.2vw, 24px); flex-wrap:wrap;
    margin-bottom:clamp(28px, 4.4vw, 56px);
}
.tp-review__title {
    font-size:clamp(22px, 4.4vw, 44px); font-weight:800;
    color:var(--tp-navy); letter-spacing:-0.8px; line-height:1.2;
}
.tp-review__title em {
    font-family:'Paperlogy', sans-serif;
    font-style:normal; color:var(--tp-orange);
}
.tp-review__title-sub {
    display:block; font-size:clamp(13px, 1.6vw, 15px);
    color:var(--tp-text-2); margin-top:10px;
    font-weight:500;
}
.tp-review__nav {
    display:flex; gap:8px;
}
.tp-review__nav button {
    width:clamp(38px, 4.4vw, 48px); height:clamp(38px, 4.4vw, 48px); border-radius:50%;
    background:#fff; border:1px solid var(--tp-line);
    color:var(--tp-navy);
    display:flex; align-items:center; justify-content:center;
    transition:all 0.2s;
}
.tp-review__nav button:hover { background:var(--tp-navy); color:#fff; border-color:var(--tp-navy); }
.tp-review__nav button svg { width:18px; height:18px; }

/* Swiper 컨테이너 — 좌우 카드 잘림 방지로 여백 확보 */
.tp-review__swiper {
    position:relative;
    overflow:hidden;
    /* 호버 그림자가 잘리지 않게 위/아래 안쪽 여백 */
    padding:6px 0 clamp(40px, 5vw, 56px);
}
.tp-review__list {
    /* Swiper가 flex 레이아웃과 인라인 transform을 부여 — display:flex 유지 */
    display:flex;
    align-items:stretch;
}
.tp-review__list > .swiper-slide {
    height:auto;        /* 카드 높이 균등 */
    display:flex;
}

.tp-review__card {
    background:#fff;
    border-radius:clamp(18px, 2.5vw, 22px);
    overflow:hidden; border:1px solid var(--tp-line);
    transition:transform 0.3s, box-shadow 0.3s, border-color 0.3s;
    display:flex; flex-direction:column;
    width:100%;
}
.tp-review__card:hover {
    transform:translateY(-6px); border-color:transparent;
    box-shadow:0 24px 50px rgba(14,42,107,0.1);
}
.tp-review__card-thumb {
    position:relative; aspect-ratio:5/3; overflow:hidden;
}
.tp-review__card-thumb img {
    width:100%; height:100%; object-fit:cover;
    transition:transform 0.5s;
}
.tp-review__card:hover .tp-review__card-thumb img { transform:scale(1.06); }
.tp-review__card-thumb::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(180deg, transparent 50%, rgba(14,42,107,0.4) 100%);
}
.tp-review__card-case {
    position:absolute; top:clamp(12px, 1.8vw, 18px); left:clamp(12px, 1.8vw, 18px); z-index:1;
    padding:clamp(5px, 0.8vw, 6px) clamp(10px, 1.4vw, 14px);
    background:rgba(14,42,107,0.85);
    backdrop-filter:blur(8px);
    border-radius:999px;
    color:#fff;
    font-size:clamp(10px, 1vw, 11px); font-weight:700; letter-spacing:1px;
}
.tp-review__card-body {
    padding:clamp(16px, 2.6vw, 28px);
    flex:1; display:flex; flex-direction:column;
}
.tp-review__quote {
    width:clamp(22px, 2.4vw, 28px); height:clamp(22px, 2.4vw, 28px); opacity:0.15;
    color:var(--tp-orange); margin-bottom:clamp(10px, 1.4vw, 14px);
}
.tp-review__card-title {
    font-size:clamp(15px, 1.5vw, 19px); font-weight:700;
    color:var(--tp-navy); line-height:1.55; margin-bottom:clamp(12px, 1.6vw, 16px);
    flex:1; letter-spacing:-0.4px;
}
.tp-review__card-meta {
    display:flex; align-items:center; gap:clamp(8px, 1.2vw, 12px);
    padding-top:clamp(12px, 1.8vw, 18px); border-top:1px solid var(--tp-line);
    font-size:clamp(12px, 1.2vw, 14px); color:var(--tp-text-2);
}
.tp-review__card-meta-avatar {
    width:clamp(30px, 3.4vw, 36px); height:clamp(30px, 3.4vw, 36px); border-radius:50%;
    background:linear-gradient(135deg, var(--tp-blue-soft), var(--tp-orange-soft));
    flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    font-weight:700; font-size:clamp(11px, 1.2vw, 13px); color:var(--tp-navy);
}
.tp-review__card-meta strong { color:var(--tp-text); font-weight:600; }

/* Swiper pagination 커스텀 — bullet 디자인 */
.tp-review__swiper .swiper-pagination {
    position:absolute; left:0; right:0; bottom:0;
    display:flex; justify-content:center; gap:8px;
}
.tp-review__swiper .swiper-pagination-bullet {
    width:8px; height:8px; border-radius:50%;
    background:var(--tp-line); opacity:1;
    transition:width 0.25s, background 0.25s, border-radius 0.25s;
    cursor:pointer;
}
.tp-review__swiper .swiper-pagination-bullet-active {
    width:32px; background:var(--tp-navy); border-radius:4px;
}

/* nav 비활성화 상태 */
.tp-review__nav button.swiper-button-disabled {
    opacity:0.35; cursor:default;
}
.tp-review__nav button.swiper-button-disabled:hover {
    background:#fff; color:var(--tp-text); border-color:var(--tp-line);
}

/* =====================================================================
   11. PARTNERSHIP
   ===================================================================== */
.tp-part__head { text-align:center; max-width:780px; margin:0 auto clamp(40px,5vw,56px); }

.tp-part__hero {
    position:relative; overflow:hidden;
    border-radius:clamp(16px, 2.6vw, 32px);
    aspect-ratio:21/8; min-height:240px;
    margin-bottom:clamp(40px, 6vw, 80px);
    box-shadow:0 30px 80px -20px rgba(14,42,107,0.3);
}
@media (max-width:900px) {
    .tp-part__hero { aspect-ratio:auto; min-height:0; }
}
.tp-part__hero-img {
    position:absolute; inset:0;
    width:100%; height:100%; object-fit:cover;
}
.tp-part__hero::after {
    content:''; position:absolute; inset:0;
    background:linear-gradient(135deg, rgba(14,42,107,0.92) 0%, rgba(58,109,255,0.4) 50%, rgba(14,33,61,0.85) 100%);
}
.tp-part__hero-content {
    position:relative; z-index:1; width:100%; height:100%; max-width:100%;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    padding:clamp(16px, 3vw, 32px); min-width:0;
}
.tp-part__hero-eyebrow {
    color:var(--tp-yellow); font-size:clamp(9px, 1.2vw, 12px);
    letter-spacing:clamp(0.5px, 0.6vw, 2.5px); font-weight:700;
    margin-bottom:clamp(8px, 1.4vw, 12px); text-transform:uppercase;
    max-width:100%; text-align:center;
    overflow-wrap:break-word;
}
.tp-part__hero-title {
    color:#fff; font-size:clamp(15px, 3vw, 32px);
    font-weight:800; letter-spacing:-0.5px;
    text-align:center; line-height:1.35;
    margin-bottom:clamp(12px, 2vw, 20px);
    max-width:100%;
}
.tp-part__hero-icons {
    display:flex; gap:clamp(6px, 1.4vw, 16px); flex-wrap:wrap;
    justify-content:center; max-width:100%;
}
.tp-part__hero-icon {
    width:clamp(34px, 5.2vw, 52px); aspect-ratio:1/1;
    border-radius:50%;
    background:rgba(255,255,255,0.1);
    border:1.5px solid rgba(255,255,255,0.25);
    display:flex; align-items:center; justify-content:center;
    color:#fff; flex-shrink:0;
    backdrop-filter:blur(8px);
}
.tp-part__hero-icon svg { width:48%; height:48%; }

.tp-part__block-title {
    font-size:clamp(18px, 3.4vw, 28px); font-weight:800;
    color:var(--tp-navy); text-align:center;
    margin-bottom:12px; letter-spacing:-0.4px;
}
.tp-part__block-desc {
    font-size:clamp(13px, 1.6vw, 15px);
    color:var(--tp-text-2); text-align:center;
    margin-bottom:clamp(36px, 5vw, 48px);
    max-width:680px; margin-left:auto; margin-right:auto;
}

.tp-steps {
    display:flex; flex-wrap:wrap; justify-content:center;
    gap:clamp(10px, 1.5vw, 16px);
    margin-bottom:clamp(64px, 9vw, 96px);
}
.tp-step {
    flex:1 1 180px; min-width:0;
    background:#fff; border:1px solid var(--tp-line);
    border-radius:clamp(16px, 2vw, 20px);
    padding:clamp(20px, 2.8vw, 28px) clamp(16px, 2vw, 20px);
    text-align:center; position:relative;
    transition:transform 0.25s, box-shadow 0.25s, border-color 0.25s;
}
.tp-step:hover { transform:translateY(-4px); border-color:var(--tp-orange); box-shadow:0 16px 32px rgba(14,42,107,0.08); }
.tp-step__no {
    display:inline-flex; align-items:baseline; gap:5px;
    color:var(--tp-text-3);
    font-size:10px; font-weight:600; letter-spacing:2px;
    margin-bottom:clamp(10px, 1.4vw, 14px); text-transform:uppercase;
}
.tp-step__no strong {
    font-family:'Paperlogy', sans-serif;
    color:var(--tp-orange); font-size:clamp(18px, 2.4vw, 24px);
    font-weight:800; letter-spacing:-1px;
}
.tp-step__text {
    font-size:clamp(15px, 1.3vw, 17px); font-weight:700;
    color:var(--tp-navy); line-height:1.5;
}

.tp-support {
    display:grid; grid-template-columns:repeat(4, 1fr);
    gap:clamp(12px, 1.8vw, 20px);
}
@media (max-width:768px) { .tp-support { grid-template-columns:repeat(2, 1fr); } }
@media (max-width:360px) { .tp-support { grid-template-columns:1fr; } }

.tp-support__item {
    position:relative; overflow:hidden;
    background:#fff;
    border:1px solid var(--tp-line);
    border-radius:clamp(14px, 2vw, 20px);
    padding:clamp(24px, 3vw, 32px) clamp(20px, 2.5vw, 26px);
    transition:transform 0.3s, box-shadow 0.3s;
}
.tp-support__item:hover {
    transform:translateY(-6px);
    box-shadow:0 24px 50px rgba(14,42,107,0.1);
}
.tp-support__item::before {
    content:''; position:absolute; top:0; left:0;
    width:48px; height:4px;
    background:var(--tp-orange);
    border-radius:0 0 4px 0;
}
.tp-support__icon {
    width:clamp(38px, 4.6vw, 48px); height:clamp(38px, 4.6vw, 48px); border-radius:clamp(10px, 1.4vw, 14px);
    background:var(--tp-orange-soft);
    color:var(--tp-orange);
    display:flex; align-items:center; justify-content:center;
    margin-bottom:clamp(12px, 1.8vw, 18px);
}
.tp-support__icon svg { width:clamp(18px, 2.2vw, 24px); height:clamp(18px, 2.2vw, 24px); }
.tp-support__title {
    font-size:clamp(15px, 1.5vw, 19px); font-weight:700;
    color:var(--tp-navy); margin-bottom:clamp(10px, 1.4vw, 14px);
    letter-spacing:-0.3px;
}
.tp-support__list { display:flex; flex-direction:column; gap:8px; }
.tp-support__list li {
    font-size:clamp(13px, 1.1vw, 16px);
    color:var(--tp-text-2); line-height:1.7;
    padding-left:clamp(10px, 1.4vw, 14px); position:relative;
}
.tp-support__list li::before {
    content:''; position:absolute; left:0; top:0.7em;
    width:6px; height:6px; border-radius:50%;
    background:var(--tp-navy); opacity:0.4;
}

/* =====================================================================
   12. CONSULT FORM
   ===================================================================== */
/* .tp-consult-section 색은 .tp-section--ice 모디파이어가 처리 */
.tp-consult__head { text-align:center; margin-bottom:clamp(40px, 5vw, 56px); }
.tp-consult__sub {
    display:inline-flex; align-items:center; gap:8px;
    font-size:clamp(11px, 1.4vw, 14px);
    color:var(--tp-orange); font-weight:700;
    padding:clamp(6px, 1vw, 8px) clamp(12px, 1.8vw, 18px); background:var(--tp-orange-soft);
    border-radius:999px; margin-bottom:clamp(10px, 1.5vw, 16px);
    letter-spacing:0.5px;
}
.tp-consult__title {
    font-size:clamp(26px, 4.6vw, 56px); font-weight:800;
    color:var(--tp-navy); line-height:1.25; letter-spacing:-1.4px;
}
.tp-consult__lead {
    margin-top:clamp(10px, 1.4vw, 14px);
    font-size:clamp(13px, 1.4vw, 15.5px);
    color:var(--tp-text-soft); font-weight:500;
}

/* 상담 채널 카드 */
.tp-consult__channels {
    max-width:920px; margin:0 auto clamp(28px, 4vw, 44px);
    display:grid; grid-template-columns:repeat(3, 1fr);
    gap:clamp(12px, 1.6vw, 18px);
}
@media (max-width:768px) { .tp-consult__channels { grid-template-columns:1fr; } }
.tp-consult__channels li {
    display:flex; align-items:flex-start; gap:clamp(12px, 1.6vw, 16px);
    padding:clamp(16px, 2.2vw, 22px) clamp(16px, 2.2vw, 22px);
    background:rgba(255,255,255,0.08);
    border:1px solid rgba(255,255,255,0.18);
    border-radius:clamp(14px, 1.8vw, 18px);
    backdrop-filter:blur(8px);
    transition:transform 0.25s, background 0.25s;
}
.tp-consult__channels li:hover {
    transform:translateY(-3px);
    background:rgba(255,255,255,0.12);
}
.tp-consult__channel-icon {
    width:clamp(36px, 4.2vw, 44px); height:clamp(36px, 4.2vw, 44px);
    display:flex; align-items:center; justify-content:center;
    border-radius:50%;
    background:var(--tp-orange); color:#fff;
    flex-shrink:0;
}
.tp-consult__channel-icon svg { width:50%; height:50%; }
.tp-consult__channels li strong {
    display:block; margin-bottom:4px;
    color:#fff; font-size:clamp(13px, 1.4vw, 15px); font-weight:700;
    letter-spacing:-0.3px;
}
.tp-consult__channels li p {
    color:rgba(255,255,255,0.7); font-size:clamp(11.5px, 1.2vw, 13px);
    line-height:1.55; word-break:keep-all;
}

.tp-form {
    max-width:920px; margin:0 auto;
    background:#fff;
    color:var(--tp-text);
    border:1px solid var(--tp-line);
    border-radius:clamp(16px, 2.4vw, 28px);
    padding:clamp(18px, 4vw, 56px);
    box-shadow:0 24px 60px rgba(14,42,107,0.05);
}
.tp-form__row {
    display:grid; grid-template-columns:clamp(96px, 13vw, 140px) 1fr;
    border-bottom:1px solid var(--tp-line);
    align-items:stretch;
}
.tp-form__row:last-of-type { border-bottom:0; }
@media (max-width:480px) { .tp-form__row { grid-template-columns:1fr; } }

.tp-form__label {
    padding:clamp(14px, 2vw, 20px) clamp(8px, 1.2vw, 16px);
    font-size:clamp(13px, 1.2vw, 16px); font-weight:700;
    color:var(--tp-navy);
    display:flex; align-items:center; gap:4px;
}
.tp-form__label::after { content:'*'; color:var(--tp-orange); font-size:12px; }
.tp-form__label.tp-form__label--optional::after { content:none; }
@media (max-width:480px) { .tp-form__label { padding:12px 0 6px; } }

.tp-form__field { padding:clamp(10px, 1.4vw, 14px) 0; display:flex; align-items:center; }
.tp-form__input, .tp-form__textarea, select.tp-form__input {
    width:100%; padding:clamp(11px, 1.6vw, 16px) clamp(13px, 1.8vw, 20px);
    border:1px solid var(--tp-line); border-radius:clamp(9px, 1.2vw, 12px);
    font-size:clamp(13px, 1.3vw, 15px); font-family:inherit;
    background:#fff; transition:border-color 0.2s, box-shadow 0.2s;
}
.tp-form__textarea { min-height:clamp(120px, 18vw, 180px); resize:vertical; }
.tp-form__input:focus, .tp-form__textarea:focus, select.tp-form__input:focus {
    outline:none; border-color:var(--tp-navy);
    box-shadow:0 0 0 4px rgba(14,42,107,0.08);
}

.tp-form__terms {
    margin-top:clamp(16px, 2.4vw, 24px); padding:clamp(14px, 2vw, 20px) clamp(14px, 2.2vw, 22px);
    background:var(--tp-bg-soft); border-radius:clamp(10px, 1.4vw, 14px);
    font-size:clamp(12px, 1.1vw, 13px); color:var(--tp-text-2);
    line-height:1.8; max-height:clamp(110px, 14vw, 140px); overflow-y:auto;
}
.tp-form__agree {
    margin-top:clamp(12px, 1.8vw, 18px); display:flex; gap:clamp(8px, 1.4vw, 12px); align-items:center;
    flex-wrap:wrap; justify-content:flex-end;
    font-size:clamp(12px, 1.2vw, 14px); color:var(--tp-text);
}
.tp-form__agree strong { color:var(--tp-orange); }
.tp-form__radio {
    display:inline-flex; gap:8px; align-items:center;
    padding:clamp(7px, 1.2vw, 10px) clamp(12px, 1.8vw, 18px); border:1px solid var(--tp-line);
    border-radius:999px; font-size:clamp(12px, 1.2vw, 14px); cursor:pointer;
    color:var(--tp-text);
    transition:all 0.15s;
}
.tp-form__radio input { accent-color:var(--tp-navy); }
.tp-form__radio:hover { border-color:var(--tp-navy); }
@media (max-width:480px) {
    .tp-form__agree { justify-content:flex-start; }
    .tp-form__agree > span { flex:0 0 100%; }
}
.tp-form__btns {
    display:flex; gap:clamp(8px, 1.2vw, 10px); justify-content:center;
    margin-top:clamp(22px, 3.6vw, 40px); flex-wrap:wrap;
}
.tp-form__btn {
    padding:clamp(12px, 1.8vw, 16px) clamp(22px, 4.4vw, 40px); border-radius:clamp(10px, 1.4vw, 14px);
    font-size:clamp(13px, 1.3vw, 15px); font-weight:700; min-width:clamp(120px, 16vw, 160px);
    transition:all 0.25s;
    border:0;
}
.tp-form__btn:hover { transform:translateY(-2px); }
.tp-page button.tp-form__btn--primary {
    background:var(--tp-navy); color:#fff;
    box-shadow:0 12px 28px rgba(14,42,107,0.25);
}
.tp-page button.tp-form__btn--primary:hover { box-shadow:0 16px 36px rgba(14,42,107,0.35); background:var(--tp-navy-deep); }
.tp-page button.tp-form__btn--ghost {
    background:#fff; border:1px solid var(--tp-line); color:var(--tp-text-2);
}

/* =====================================================================
   13. FOOTER
   ===================================================================== */
.tp-footer {
    background:#0a1430; color:rgba(255,255,255,0.65);
    padding:clamp(56px, 7vw, 80px) 0 clamp(32px, 4vw, 44px);
}
.tp-footer__top {
    display:flex; justify-content:space-between; align-items:flex-start;
    gap:clamp(14px, 2.2vw, 24px); flex-wrap:wrap;
    padding-bottom:clamp(20px, 3.2vw, 36px);
    border-bottom:1px solid rgba(255,255,255,0.1);
    margin-bottom:clamp(20px, 3.2vw, 36px);
}
.tp-footer__logo img {
    height:clamp(30px, 3.8vw, 42px); width:auto;
    opacity:1;
}
.tp-footer__menu {
    display:flex; gap:clamp(16px, 2.2vw, 32px); flex-wrap:wrap;
}
.tp-footer__menu a {
    font-size:clamp(12px, 1.4vw, 14px);
    color:rgba(255,255,255,0.85);
    font-weight:500; white-space:nowrap;
    transition:color 0.2s;
}
.tp-footer__menu a:hover { color:#fff; }
.tp-footer__menu a.on { color:#fff; font-weight:700; }
.tp-footer__info {
    font-size:clamp(13px, 1vw, 14px);
    line-height:2; color:rgba(255,255,255,0.62);
}
.tp-footer__info span { margin-right:clamp(8px, 1.4vw, 14px); display:inline-block; }
.tp-footer__info span + span::before {
    content:'|'; margin-right:clamp(8px, 1.4vw, 14px); color:rgba(255,255,255,0.18);
}
.tp-footer__bottom {
    margin-top:clamp(18px, 2vw, 24px);
    display:flex; justify-content:space-between; gap:16px;
    flex-wrap:wrap; font-size:12px; color:rgba(255,255,255,0.35);
}
.tp-footer__admin { display:flex; gap:14px; }
.tp-footer__admin a:hover { color:#fff; }

/* =====================================================================
   base.css 충돌 보정 — <a>에 클래스로 칠한 color가
   base.css의 a:link/:visited/:hover/:active { color:inherit } (0,1,1)에
   가려지는 문제 해결. a.classname (0,1,1) 동률 + cascade 후순위로 우선 적용.
   ===================================================================== */
a.tp-btn-login,
a.tp-btn-login:link,
a.tp-btn-login:visited,
a.tp-btn-login:hover,
a.tp-btn-login:active        { color:#fff; }
a.tp-btn-ghost,
a.tp-btn-ghost:link,
a.tp-btn-ghost:visited,
a.tp-btn-ghost:hover,
a.tp-btn-ghost:active        { color:#fff; }
a.tp-btn-link,
a.tp-btn-link:link,
a.tp-btn-link:visited,
a.tp-btn-link:hover,
a.tp-btn-link:active         { color:#fff; }
a.tp-card-large,
a.tp-card-large:link,
a.tp-card-large:visited,
a.tp-card-large:hover,
a.tp-card-large:active       { color:#fff; }
a.tp-fix__btn,
a.tp-fix__btn:link,
a.tp-fix__btn:visited,
a.tp-fix__btn:hover,
a.tp-fix__btn:active         { color:#fff; }
a.tp-btn-primary,
a.tp-btn-primary:link,
a.tp-btn-primary:visited,
a.tp-btn-primary:hover,
a.tp-btn-primary:active      { color:var(--tp-navy); }
a.tp-gnb__item,
a.tp-gnb__item:link,
a.tp-gnb__item:visited,
a.tp-gnb__item:active        { color:var(--tp-text); }
a.tp-gnb__item:hover         { color:var(--tp-navy); }
a.tp-mnav__tip-link,
a.tp-mnav__tip-link:link,
a.tp-mnav__tip-link:visited,
a.tp-mnav__tip-link:hover,
a.tp-mnav__tip-link:active   { color:var(--tp-navy); }

/* =====================================================================
   라디오/체크박스 가시성 복구 — base.css의 * { appearance:none; border:0 }로
   네이티브 라디오/체크박스가 안 보이는 문제 해결
   ===================================================================== */
.tp-page input[type="radio"],
.tp-page input[type="checkbox"] {
    appearance:auto; -webkit-appearance:auto;
    width:16px; height:16px; flex-shrink:0;
    accent-color:var(--tp-navy);
    cursor:pointer;
}

/* =====================================================================
   상담 예약 CTA 버튼 (consult 섹션 → 모달 트리거)
   ===================================================================== */
.tp-consult__cta-wrap {
    display:flex; justify-content:center;
    margin-top:clamp(28px, 4vw, 48px);
}
.tp-consult__cta {
    display:inline-flex; align-items:center; gap:clamp(8px, 1.2vw, 12px);
    padding:clamp(14px, 2vw, 20px) clamp(28px, 4vw, 52px);
    background:var(--tp-orange); color:#fff;
    font-size:clamp(15px, 1.4vw, 18px); font-weight:700;
    border-radius:999px;
    box-shadow:0 14px 32px rgba(255,122,58,0.4);
    cursor:pointer; transition:transform 0.2s, box-shadow 0.2s, background 0.2s;
}
.tp-consult__cta:hover {
    background:#e6651f; transform:translateY(-2px);
    box-shadow:0 18px 42px rgba(255,122,58,0.5);
}
.tp-consult__cta:active { transform:translateY(0); }
.tp-consult__cta svg { width:18px; height:18px; flex-shrink:0; transition:transform 0.2s; }
.tp-consult__cta:hover svg { transform:translateX(3px); }

/* =====================================================================
   모달 (tp-modal) — 공통 컴포넌트
   ===================================================================== */
.tp-modal {
    position:fixed; inset:0; z-index:1000;
    display:flex; align-items:center; justify-content:center;
    padding:clamp(12px, 3vw, 24px);
    opacity:0; pointer-events:none;
    transition:opacity 0.25s ease;
}
.tp-modal.is-open { opacity:1; pointer-events:auto; }
.tp-modal__dim {
    position:absolute; inset:0;
    background:rgba(10,20,48,0.7);
    -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px);
    cursor:pointer;
}
.tp-modal__box {
    position:relative;
    width:100%; max-width:720px; max-height:90vh;
    background:#fff; border-radius:clamp(16px, 2vw, 24px);
    box-shadow:0 24px 60px rgba(0,0,0,0.3);
    display:flex; flex-direction:column;
    overflow:hidden;
    transform:scale(0.94) translateY(24px);
    transition:transform 0.25s ease;
}
.tp-modal.is-open .tp-modal__box { transform:scale(1) translateY(0); }
.tp-modal__head {
    display:flex; align-items:center; justify-content:space-between; gap:12px;
    padding:clamp(16px, 2.4vw, 24px) clamp(20px, 2.8vw, 32px);
    border-bottom:1px solid var(--tp-line);
    flex-shrink:0;
}
.tp-modal__title {
    font-size:clamp(16px, 1.8vw, 20px); font-weight:700;
    color:var(--tp-navy); line-height:1.3;
}
.tp-modal__close {
    width:36px; height:36px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    color:var(--tp-text-2); background:transparent;
    cursor:pointer; flex-shrink:0;
    transition:background 0.15s, color 0.15s;
}
.tp-modal__close svg { width:20px; height:20px; }
.tp-modal__close:hover { background:var(--tp-bg-soft); color:var(--tp-text); }
.tp-modal__body {
    padding:clamp(18px, 3vw, 32px);
    overflow-y:auto;
    flex:1 1 auto;
}
/* 모달 안 form 컨테이너 스타일 정리 — 모달이 이미 카드 역할이므로 중복 제거 */
.tp-modal__body .tp-form {
    max-width:none; margin:0; padding:0;
    background:transparent; border:none; box-shadow:none;
    border-radius:0;
}

/* 와이드 모달 (오시는 길 등 지도/넓은 콘텐츠용) */
.tp-modal__box--wide { max-width:980px; }

/* 개인정보취급방침 본문 */
.tp-privacy { color:var(--tp-text); font-size:clamp(13px, 1.05vw, 14.5px); line-height:1.75; }
.tp-privacy__lead {
    padding:clamp(14px, 1.8vw, 18px) clamp(16px, 2vw, 20px);
    margin-bottom:clamp(18px, 2.4vw, 24px);
    background:var(--tp-bg-soft); border-left:3px solid var(--tp-navy);
    border-radius:8px; color:var(--tp-text-2);
}
.tp-privacy__h {
    font-size:clamp(14px, 1.2vw, 16px); font-weight:700;
    color:var(--tp-navy);
    margin:clamp(20px, 2.4vw, 26px) 0 clamp(8px, 1vw, 10px);
}
.tp-privacy h4.tp-privacy__h:first-of-type { margin-top:0; }
.tp-privacy p { margin:0 0 clamp(8px, 1vw, 10px); color:var(--tp-text-2); }
.tp-privacy ul { margin:0 0 clamp(8px, 1vw, 12px); padding-left:18px; color:var(--tp-text-2); }
.tp-privacy ul li { margin:4px 0; }
.tp-privacy__foot {
    margin-top:clamp(20px, 2.4vw, 26px);
    padding-top:clamp(14px, 1.8vw, 18px);
    border-top:1px solid var(--tp-line);
    font-size:12.5px; color:var(--tp-text-3);
}

/* 오시는 길 (지도) */
.tp-map__tit {
    display:flex; align-items:center; gap:clamp(10px, 1.6vw, 16px);
    padding:clamp(14px, 1.8vw, 18px) clamp(16px, 2vw, 20px);
    margin-bottom:clamp(14px, 1.8vw, 18px);
    background:linear-gradient(90deg, var(--tp-navy) 0%, var(--tp-navy-2) 100%);
    border-radius:10px;
    color:#fff;
    flex-wrap:wrap;
}
.tp-map__label {
    flex-shrink:0;
    display:inline-flex; align-items:center;
    padding:5px 12px;
    font-size:11px; font-weight:800; letter-spacing:2px;
    background:var(--tp-yellow); color:var(--tp-navy-deep);
    border-radius:999px;
}
.tp-map__addr { margin:0; font-size:clamp(14px, 1.3vw, 16px); font-weight:600; }
.tp-map__frame {
    position:relative;
    width:100%;
    aspect-ratio:961 / 528.55;
    background:var(--tp-bg-soft);
    border-radius:12px; overflow:hidden;
    border:1px solid var(--tp-line);
}
.tp-map__iframe {
    position:absolute; inset:0;
    width:100%; height:100%; border:0;
}
@media (max-width:640px) {
    .tp-map__tit { flex-direction:column; align-items:flex-start; gap:6px; }
    .tp-map__frame { aspect-ratio:4 / 5; }
}
