/* ==========================================================
   물타세 브랜드 테마
   - 부트스트랩 기본 색상(primary/success/warning 등) 대신
     사이트 고유 팔레트를 별도 유틸리티 클래스로 관리합니다.
   - 기존 페이지의 btn-outline-primary 등은 점진적으로
     아래 btn-brand / btn-outline-brand 로 교체해나갑니다.
   ========================================================== */

:root {
    --brand-navy: #16324F;       /* 헤더/푸터 다크 톤 */
    --brand-navy-dark: #0E1F33;  /* 네이비 hover/active */
    --brand-teal: #0E9594;       /* 메인 포인트 컬러 */
    --brand-teal-dark: #0B726E;  /* 틸 hover/active */
    --brand-teal-rgb: 14, 149, 148;
    --brand-amber: #F2A93B;      /* 강조/경고용 포인트 (가끔만 사용) */
    --brand-danger: #D64545;     /* 위험/숏 포지션 등 경고성 빨강 */
    --brand-danger-dark: #AF3939; /* 흰 배경 위 텍스트용 - danger는 대비 4.38:1로 AA(4.5) 미달이라 별도로 둠 */
    --brand-danger-rgb: 214, 69, 69;
    --brand-bg: #F7F9FB;         /* 페이지 배경 */
    --brand-text-muted: #5B6B7A;
    --header-height: 122px;      /* site.js 헤더 높이 측정(ResizeObserver)이 실제 높이로 덮어씀. IDE 경고 방지용 기본값 */
}

/* ---------- 레이아웃 공통 (기존 layout.html 인라인 style 이관) ---------- */
body {
    word-break: keep-all;
    -webkit-tap-highlight-color: transparent;
    padding-top: 107px; /* JS가 실제 높이 측정 후 정확한 값으로 즉시 덮어씁니다 (아래 fallback용) */
    background-color: var(--brand-bg) !important;
}

/* ---------- 상단 실시간 시세 티커 ---------- */
.market-ticker {
    position: fixed;
    top: 75px; /* JS가 네비바 실제 높이를 측정해서 정확한 값으로 덮어씁니다 (아래 fallback용) */
    left: 0;
    right: 0;
    z-index: 1025; /* 네비바(fixed-top, 1030)보다 아래 */
    height: 32px;
    line-height: 32px;
    background-color: var(--brand-navy-dark);
    overflow: hidden;
    white-space: nowrap;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.market-ticker-track {
    display: inline-flex;
    align-items: center;
    animation: market-ticker-rtl 90s linear infinite;
    will-change: transform;
}
@keyframes market-ticker-rtl {
    from { transform: translateX(0%); }
    to { transform: translateX(-50%); }
}
.ticker-item {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0 1.25rem;
    font-size: 0.78rem;
    color: #fff;
    white-space: nowrap;
}
.ticker-sparkline {
    display: inline-block;
    vertical-align: middle;
}
.ticker-up {
    color: #ff5c5c; /* 국내 관례: 상승 = 빨강 */
    font-weight: 700;
}
.ticker-down {
    color: #4d94ff; /* 하락 = 파랑 */
    font-weight: 700;
}

input, select, textarea {
    font-size: 16px !important;
}

.navbar-collapse {
    background-color: var(--brand-navy-dark);
    padding: 15px;
    border-radius: 1rem;
    margin-top: 10px;
    max-height: calc(100vh - var(--header-height, 122px) - 32px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;      /* Firefox */
    -ms-overflow-style: none;   /* 구형 Edge/IE */
}
.navbar-collapse::-webkit-scrollbar {
    display: none;              /* Chrome, Safari, 최신 Edge */
}

@media (max-width: 576px) {
    .container {
        padding-left: 20px !important;
        padding-right: 20px !important;
    }

    .navbar .btn-sm.rounded-pill {
        padding-left: 0.55rem !important;
        padding-right: 0.55rem !important;
        font-size: 0.78rem;
    }

    .navbar .d-flex.align-items-center.gap-2 {
        gap: 0.4rem !important;
    }

    /* 번역 페이지에서는 검색 옆에 언어 전환(🌐) 아이콘이 하나 더 붙어서 360px 폭에서 햄버거가
       둘째 줄로 밀린다. 정보·게임 버튼의 드롭다운 화살표(▾)를 숨기고 오른쪽 묶음 여백을 줄여 한 줄에 맞춘다. */
    .navbar .btn-sm.rounded-pill.dropdown-toggle::after {
        display: none;
    }

    .navbar .d-flex.align-items-center.gap-2.me-2 {
        margin-right: 0.25rem !important;
    }

    .navbar-brand {
        font-size: 1.05rem;
    }

    .btn-group {
        display: flex;
        flex-direction: column;
        gap: 10px;
    }

    .btn-group > .btn {
        border-radius: 0.5rem !important;
        width: 100% !important;
        margin: 0 !important;
    }

    .input-group-text {
        font-size: 0.9rem !important;
        padding: 0 10px !important;
    }
}

@media (max-width: 768px) {
    .card-body {
        padding: 1.25rem !important;
    }
}

.navbar-toggler {
    padding: 8px 10px;
    border: none;
}

.hover-bg-opacity-20:hover {
    background-color: rgba(255, 255, 255, 0.2) !important;
    transform: translateY(-1px);
}

/* ---------- 버튼 ---------- */
/* 흰 글자 + --brand-teal 배경은 대비 3.66:1로 AA 미달이라, 기본 상태부터 teal-dark(5.76:1)를
   쓴다. hover/active는 원래도 teal-dark였는데 기본색과 같아지면 hover 시 색이 안 바뀌므로,
   한 단계 더 어두운 navy로 넘어가게 해서 눌림 피드백을 유지한다. */
.btn-brand {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--brand-teal-dark);
    --bs-btn-border-color: var(--brand-teal-dark);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--brand-navy);
    --bs-btn-hover-border-color: var(--brand-navy);
    --bs-btn-focus-shadow-rgb: var(--brand-teal-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--brand-navy);
    --bs-btn-active-border-color: var(--brand-navy);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--brand-teal-dark);
    --bs-btn-disabled-border-color: var(--brand-teal-dark);
}

/* 기본 상태의 글자/테두리 색을 --brand-teal(대비 3.66:1, WCAG AA 4.5:1 미달)이 아니라
   --brand-teal-dark(대비 5.76:1)로 쓴다 - PageSpeed 접근성 감사에서 흰 배경 위 저대비
   텍스트로 지적된 부분. hover/active의 배경색도 같은 이유로 teal-dark로 맞춰서, 그 위에
   올라가는 흰 글자와의 대비도 같이 개선한다. */
.btn-outline-brand {
    --bs-btn-color: var(--brand-teal-dark);
    --bs-btn-border-color: var(--brand-teal-dark);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--brand-teal-dark);
    --bs-btn-hover-border-color: var(--brand-teal-dark);
    --bs-btn-focus-shadow-rgb: var(--brand-teal-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--brand-teal-dark);
    --bs-btn-active-border-color: var(--brand-teal-dark);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: var(--brand-teal-dark);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--brand-teal-dark);
    --bs-gradient: none;
}

.btn-outline-brand-danger {
    --bs-btn-color: var(--brand-danger-dark);
    --bs-btn-border-color: var(--brand-danger-dark);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--brand-danger-dark);
    --bs-btn-hover-border-color: var(--brand-danger-dark);
    --bs-btn-focus-shadow-rgb: var(--brand-danger-rgb);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--brand-danger-dark);
    --bs-btn-active-border-color: var(--brand-danger-dark);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: var(--brand-danger-dark);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--brand-danger-dark);
    --bs-gradient: none;
}

/* btn-group 안에서 서로 다른 색상의 아웃라인 버튼(LONG/SHORT 등)이 인접할 때
   부트스트랩이 테두리를 -1px씩 겹쳐 이어붙이면서(margin-left: -1px) 서로 다른
   색끼리 경계가 어색해지는 것을 방지 */
.btn-group > .btn-check + .btn-outline-brand,
.btn-group > .btn-check + .btn-outline-brand-danger {
    position: relative;
}
.btn-group > .btn-check:checked + .btn-outline-brand,
.btn-group > .btn-check:checked + .btn-outline-brand-danger {
    z-index: 2;
}

/* ---------- 텍스트/배경/테두리 유틸리티 ---------- */
.text-brand {
    color: var(--brand-teal-dark) !important;
}

.text-brand-danger {
    color: var(--brand-danger-dark) !important;
}

.bg-brand {
    background-color: var(--brand-teal) !important;
}

.bg-brand-danger {
    background-color: var(--brand-danger) !important;
}

.border-brand {
    border-color: var(--brand-teal) !important;
}

.bg-brand-navy {
    background-color: var(--brand-navy) !important;
}

.bg-brand-subtle {
    background-color: rgba(var(--brand-teal-rgb), 0.08) !important;
}

.badge-brand {
    background-color: rgba(var(--brand-teal-rgb), 0.12);
    color: var(--brand-teal-dark);
}

/* ---------- 네비게이션 바 ---------- */
.navbar .btn-outline-light:hover {
    border-color: var(--brand-teal) !important;
    background-color: rgba(var(--brand-teal-rgb), 0.15) !important;
}

.calc-menu-heading {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.75);
    margin-bottom: 0.5rem;
    padding-left: 0.5rem;
}

.calc-menu-link.active {
    background-color: rgba(var(--brand-teal-rgb), 0.18) !important;
    color: #fff !important;
    font-weight: 600;
    position: relative;
}

.calc-menu-link.active::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.4rem;
    bottom: 0.4rem;
    width: 3px;
    border-radius: 2px;
    background-color: var(--brand-teal);
}

/* ---------- 푸터 ---------- */
footer a:hover {
    color: var(--brand-teal) !important;
}

/* ---------- 예시 값 채우기 버튼 ---------- */
/* 앰버 배경에 흰 글자는 대비 1.99:1로 심각하게 미달이라(WCAG AA 기준 4.5), 배경은
   그대로 두고 글자만 진한 네이비로 바꾼다(대비 6.56:1) - 앰버라는 브랜드 색 자체는
   유지하면서 가독성만 고친다. */
.btn-example {
    color: var(--brand-navy) !important;
    border: 1.5px solid var(--brand-amber) !important;
    background-color: var(--brand-amber) !important;
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(242, 169, 59, 0.35);
}
.btn-example:hover,
.btn-example:focus {
    background-color: #d9911f !important;
    border-color: #d9911f !important;
    color: var(--brand-navy) !important;
}

/* ---------- 최근 계산 기록 칩 ---------- */
.recent-calc-chip {
    font-size: 0.8rem;
    border: 1px solid #dee2e6;
    background-color: #fff;
    color: var(--brand-navy);
    border-radius: 999px;
    padding: 0.35rem 0.8rem;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
}
.recent-calc-chip:hover {
    border-color: var(--brand-teal);
    background-color: rgba(var(--brand-teal-rgb), 0.08);
    color: var(--brand-teal-dark);
}
.recent-calc-chip .recent-calc-time {
    color: var(--brand-text-muted);
    font-size: 0.72rem;
    margin-left: 0.35rem;
}
/* ---------- 모바일 하단 고정 계산 버튼 ---------- */
@media (max-width: 767.98px) {
    .calc-action-row {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1030;
        background-color: #fff;
        padding: 0.6rem 1rem calc(0.6rem + env(safe-area-inset-bottom));
        box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.12);
        margin: 0 !important;
        transition: transform 0.2s ease;
    }

    /* 푸터가 화면에 보이기 시작하면 버튼을 아래로 숨겨서 푸터를 가리지 않게 함 */
    .calc-action-row.calc-action-row-hidden {
        transform: translateY(120%);
    }

    /* 하단 고정 버튼에 콘텐츠가 가려지지 않도록 여유 공간 확보 */
    .calc-action-spacer {
        display: block;
        height: 64px;
    }

    /* 하단 고정 바 안의 버튼은 btn-lg/fs-5보다 작게 축소 */
    .calc-action-row .btn {
        font-size: 1rem !important;
        padding-top: 0.55rem !important;
        padding-bottom: 0.55rem !important;
    }
}

/* ---------- 가이드 목록 페이지네이션 ---------- */
.pagination .page-link {
    color: var(--brand-navy);
    border-color: #dee2e6;
}
.pagination .page-link:hover {
    color: var(--brand-teal-dark);
    background-color: rgba(var(--brand-teal-rgb), 0.08);
    border-color: var(--brand-teal);
}
.pagination .page-item.active .page-link {
    background-color: var(--brand-teal);
    border-color: var(--brand-teal);
    color: #fff;
}
.pagination .page-item.disabled .page-link {
    color: #adb5bd;
}

/* ---------- 카테고리 필터 버튼 (투자 가이드 목록) ---------- */
.cat-filter-btn {
    border: 1.5px solid #dee2e6;
    background-color: #fff;
    color: var(--brand-navy);
    font-weight: 600;
}
.cat-filter-btn:hover {
    border-color: var(--brand-teal);
    background-color: rgba(var(--brand-teal-rgb), 0.08);
    color: var(--brand-teal-dark);
}
.cat-filter-btn.active {
    background-color: var(--brand-teal);
    border-color: var(--brand-teal);
    color: #fff;
}
/* ---------- 언어 전환 드롭다운 (한국어 layout.html / intl/layout.html 공통) ---------- */
.lang-switch .dropdown-item.active,
.lang-switch .dropdown-item:active {
    background-color: var(--brand-teal-dark);
}

/* ---------- 한국어 공통 레이아웃(layout.html) 전용: 시장 FAB, 오늘의 명언, 순위 탭, 시장 상태 배지 ----------
   예전엔 layout.html <head> 안의 인라인 <style>이라 페이지마다 HTML에 다시 실려 왔다. 여기로 옮겨서 캐시된다.
   intl/layout.html에는 이 요소들이 없어서 영향이 없다. */
#marketFabWrapper {
    position: fixed;
    right: 20px;
    bottom: 84px; /* 계산기 하단 고정바가 있으면 JS(adjustFabPosition)가 그 위로 다시 계산합니다 */
    z-index: 1040;
}
.market-fab {
    height: 48px;
    padding: 0 18px 0 16px;
    border-radius: 24px;
    background: var(--brand-navy, #12203c);
    color: #fff;
    border: none;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .25);
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: .95rem;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
    text-decoration: none;
}
.market-fab:hover {
    opacity: .92;
    color: #fff;
    text-decoration: none;
}
.market-fab-close {
    position: absolute;
    top: -8px;
    right: -8px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #fff;
    color: #333;
    border: 1px solid #ddd;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .8rem;
    cursor: pointer;
    box-shadow: 0 1px 4px rgba(0, 0, 0, .2);
    padding: 0;
}
/* ===== 오늘의 명언: 데스크톱은 좌측 하단 여백에, 모바일은 여백이 없어서 대신 푸터 안에 =====
   opacity로 전체를 흐리게 하면 글자 자체의 대비가 떨어져 가독성이 나빠지므로, 대신
   옅은 카드 배경(어떤 페이지 배경 위에서도 대비가 유지됨)으로 "튀지 않으면서도 읽기 쉽게"
   만든다. 높이는 우측 시장 FAB(bottom:84px)와 맞춘다. */
#dailyQuoteWidget {
    display: none; /* 992px 미만에서는 항상 숨김 - 아래 미디어쿼리에서 그 이상일 때만 보이게 함 */
    position: fixed;
    left: 20px;
    bottom: 84px;
    max-width: 260px;
    z-index: 5; /* 시세 티커(1025)/네비바(1030)/FAB(1040)보다 한참 아래 - 순수 배경 장식이라 */
    background: #fff;
    border: 1px solid rgba(0, 0, 0, .08);
    border-radius: 14px;
    padding: 12px 16px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .1);
}
@media (min-width: 992px) {
    #dailyQuoteWidget { display: block; }
}
/* X로 닫았을 때 쓰는 클래스. 부트스트랩 d-none을 그냥 쓰면 위 미디어쿼리의 display:block과
   똑같이 !important라서, 소스 순서상 미디어쿼리 쪽이 나중에 나와 이기는 바람에 X를 눌러도
   안 사라지는 버그가 있었다 - #dailyQuoteWidget보다 우선순위가 확실히 높은 전용 클래스로 해결. */
#dailyQuoteWidget.quote-dismissed { display: none !important; }
#dailyQuoteWidget .quote-label {
    font-size: .7rem; font-weight: 800; letter-spacing: .02em;
    color: var(--brand-teal-dark, #0B726E); margin-bottom: 6px;
}
#dailyQuoteWidget .quote-text { font-size: .82rem; line-height: 1.55; color: #334155; font-weight: 500; }
#dailyQuoteWidget .quote-author { font-size: .74rem; color: #64748b; margin-top: 6px; }
/* 모바일(<lg)에서 티커 바로 밑에 붙는 오늘의 명언 바. 고정(fixed)이 아니라 일반 흐름이라
   body의 paddingTop(site.js 헤더 높이 측정이 계산)만큼 자동으로 티커 아래에서 시작한다. */
.mobile-quote-bar {
    background: var(--brand-navy-dark, #0d1b30);
    border-bottom: 1px solid rgba(255,255,255,.08);
    padding: 10px 0 12px;
}
.mobile-quote-bar .quote-label {
    font-size: .68rem; font-weight: 700; letter-spacing: .02em;
    color: var(--brand-teal, #0E9594); margin-bottom: 4px;
}
.mobile-quote-bar .quote-text { font-size: .8rem; line-height: 1.5; color: rgba(255,255,255,.85); }
.mobile-quote-bar .quote-author { font-size: .72rem; color: rgba(255,255,255,.55); margin-top: 4px; }

@media (max-width: 576px) {
    #marketFabWrapper {
        right: 14px;
        bottom: 74px;
    }
    .market-fab {
        height: 44px;
        padding: 0 14px 0 12px;
        font-size: .85rem;
    }

    /* theme.css의 "모바일에서 btn-group은 세로로 쌓기" 전역 규칙을
       국장/미장/업비트, 상승률/하락률/거래량 탭에서만 무효화하고 가로 배치를 유지합니다. */
    .ranking-tab-group {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        gap: 0 !important;
    }
    .ranking-tab-group > .btn {
        width: auto !important;
        flex: 1 1 0;
        font-size: .85rem;
        padding-top: .5rem !important;
        padding-bottom: .5rem !important;
        padding-left: .3rem !important;
        padding-right: .3rem !important;
        border-radius: 0 !important;
    }
    .ranking-tab-group > .btn:first-of-type {
        border-top-left-radius: .375rem !important;
        border-bottom-left-radius: .375rem !important;
    }
    .ranking-tab-group > .btn:last-of-type {
        border-top-right-radius: .375rem !important;
        border-bottom-right-radius: .375rem !important;
    }

    /* 계산 결과 헤더의 저장·공유·카톡 버튼 - 세로로 쌓이면 헤더가 버튼 3줄 높이로 커져서, 모바일에서는
       아이콘만 남기고 한 줄로 놓는다. 문구는 화면에서만 숨기고 스크린리더에는 그대로 읽힌다.
       번역 페이지의 링크 복사 버튼은 복사된 동안(.is-copied)만 문구를 다시 보여준다. */
    .result-share-group {
        flex-direction: row !important;
        flex-shrink: 0;
        gap: 6px !important;
    }
    .result-share-group > .btn {
        width: auto !important;
        padding: .35rem .6rem !important;
    }
    .result-share-group > .btn:not(.is-copied) > span {
        position: absolute !important;
        width: 1px !important;
        height: 1px !important;
        overflow: hidden !important;
        clip: rect(0, 0, 0, 0) !important;
        white-space: nowrap !important;
    }

    /* 물타기 계산기 "회차별 평단 변화" 표 - 14px이면 1,000만원대 단가나 원화 BTC(1억원대 × 소수 8자리)에서
       표가 본문 폭(255px)을 넘었다. 12px로 줄이면 맞고, 그보다 큰 극단값은 표 안에서만 가로 스크롤된다. */
    #stepBreakdown .table {
        font-size: .75rem;
    }
}

/* 오늘의 시장 상태 배지(홈 화면 위젯 + 이 FAB 모달 둘 다 공용) - 상태색으로 배지 전체를
   칠하던 것을, 어두운 배지 안에서 점(dot)만 상태에 따라 색이 바뀌도록 분리했다.
   점과 글자가 하나의 색 블록으로 뭉쳐 보이지 않고 서로 떨어져 보이게 하기 위함. */
.market-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background-color: var(--brand-navy, #16324F);
    color: rgba(255, 255, 255, .85);
    font-weight: 700;
    padding: .35em .75em;
}
.market-status-dot {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background-color: rgba(255, 255, 255, .3);
    transition: background-color .2s ease, box-shadow .2s ease;
}
.market-status-dot.is-live {
    background-color: var(--brand-teal, #0E9594);
    box-shadow: 0 0 5px 2px rgba(14, 149, 148, .65);
}
