/*---------------------------------------------------------
    HEADER SWITCH POINT — and the second row that makes 1280 possible

    ## 원본이 실제로 하는 것

    The export disagrees with itself. `#header-desktop` is declared
    `min-width: 1600px` (header.css:35) but is only hidden at
    `max-width: 1400px` (header.css:112), so every viewport from 1401 to
    1599 paints a 1600px-wide bar into a narrower window. Measured on
    staging, horizontal overflow was exactly `1600 - viewport` at every
    width in that range: 199px at 1401, 160px at 1440, 50px at 1550, 1px
    at 1599, and 0 at 1600. That identity is what identifies the cause --
    nothing else in the skin is 1600px wide.

    **그래서 원본의 데스크톱 헤더는 1600 이상짜리 설계입니다.** ujubet 이
    1400 랩톱에 제대로 된 바를 준 적은 없습니다 — 199px 넘침을 주고 그 아래는
    햄버거였습니다. `min-width: 1600px` 은 저자가 이 구성의 값을 적어 둔 것이고,
    그 값은 **원본 자신의 구성**에서 나옵니다. 1920 로그인 실측
    (`#header-desktop` 에는 패딩이 없고 자식 셋이 바의 전부입니다):

        로고         223   (`img { height: 50px }` + `margin-left: 30px`)
        main-nav    1014   열 항목의 max-content
        member-info  485   보유머니 · 포인트 · 새로고침 · 닉네임
        합계        1722

    열 중 아홉이 side-nav.ejs 의 것이고, **돈 항목 넷도 거기 포함됩니다** —
    입금하기(102) · 출금하기(102) · 테더입출금(115) · 포인트전환(115) 은
    원본 데스크톱 나브의 `.nav-item` 입니다(side-nav.ejs:81-112). 지갑 옆
    회원 띠에 있던 것을 이 포트가 나브로 옮긴 것이 아닙니다. 열째는
    이벤트(106) 이고 원본에는 그 기능 자체가 없습니다. 이벤트를 도로 빼면
    원본의 바는 1616 — `min-width: 1600px` 이 그 숫자입니다.

    ## 여기 있던 1850 은 128px 의 과잉이었습니다

    앞의 주석은 모든 라벨이 한 줄이 되는 첫 폭이 1850 이고 우리 나브가 원본보다
    항목이 많다고 적었습니다. 둘 다 틀렸습니다. 바의 내용은 1722 이고 그 중
    어느 것도 뷰포트에 따라 변하지 않으므로, 한 줄이 끊기는 곳은 정확히
    `223 + 1014 + 485` 입니다. 1722~1850 에서 옛 규칙은 **들어가는 바를**
    숨기고 있었습니다.

    ## 1280 에는 줄이 하나 더 필요합니다 — 다이어트가 아니라

    1280 에서 한 줄이 나브에 줄 수 있는 폭은 `1280 - 223 - 485 = 572` 이고
    나브는 1014 를 원합니다. 항목마다 15px 패딩을 0 으로 깎으면 300 을
    되찾고, 아이콘을 전부 빼면 200 을 더 되찾습니다 — 둘 다 해도 514 가 572
    상자 안에서 서로 붙어 섭니다. 지갑을 통째로 없애도 나브와 로고만으로
    1237 이라 1280 의 거의 전부입니다. **한 줄짜리 1280 은 없습니다.**

    그래서 1722 아래에서는 바가 접힙니다: 로고와 지갑은 지금 쓰는 70px 줄을
    그대로 쓰고, 나브가 그 아래 줄을 통째로 씁니다. 줄어드는 것은 없습니다 —
    같은 15px 패딩, 같은 아이콘, 같은 열 라벨이 전부 한 줄로, 1280 에서
    266px 을 남기고 섭니다. **이 둘째 줄은 우리 것이고 원본에 대응물이
    없습니다.** 위의 숫자가 허락하는 유일한 배치이고, 1280~1721 에서 크롬을
    38px 늘리는 대신 같은 폭에서 60px 로비 띠와 그 여백을 걷어 냅니다.

    1280 아래는 컴팩트 바, 그대로입니다.

    Measure this signed in or it will look fine. The guest header shows three
    small buttons where the member header shows the balance strip, so it is far
    narrower, and a signed-out sweep reported 1600 as clean. Note also that the
    string 보유머니 is present in the signed-out off-canvas drawer, so it can
    never be a sign-in check — use `.btn-logout`.

    The blocks below the switch point are other subjects in the same file, and
    they are all here for one reason: the header's own sheet is the export's
    and stays byte-identical, so anything the chrome needs that the export did
    not write -- or wrote somewhere we cannot load -- has to be written here.
    Each block says which of the two it is. In order:

      · 래퍼가 둘이라 생기는 1px       -- our two header components against the
                                         export's single `#header_wrap`
      · 크롬이 물려받는 줄 높이        -- Tailwind's `line-height: 1.5` against
                                         the `normal` header.css assumes
      · app.css 의 `.btn-icon`         -- the sheet the export loads and we do
                                         not, restated four declarations deep
      · 드로어 카테고리 머리글의 상자  -- header.css's own `li[ng-bind]` rule,
                                         reachable again without the directive
      · 게스트 헤더의 로그인 · 회원가입 -- side-nav-public.ejs's inline `<style>`
      · 꺼진 아이콘 버튼               -- `:disabled`, which the export leaves
                                         at the same colour and cursor
      · 폰 드로어 맨 아래 단추         -- 35px raised to a 44px thumb target

    Every one of the first five was measured against `/ref/home-full.html` and
    `/ref/home-public-full.html` -- `scripts/hera-chrome-vs-ujubet.mjs` is the
    instrument and prints both sides of each number.

    This is a separate file because css/header.css is the export's own and
    is byte-identical to
    application-export-20260822/999/web-ujubet/views/static/1bet_v4/css/,
    which is worth keeping true so the tree can still be diffed against
    its source. Loaded immediately after it -- see apps/web/src/skins/assets.ts.
---------------------------------------------------------*/

/* 컴팩트 바가 사는 곳. 이 블록은 원본의 `max-width: 1400px` 블록 **안쪽**이라
   (1279 < 1400) 컴팩트 바의 생김새는 전부 원본이 정합니다 — 예전에 여기 있던
   `#header-mobile` 선언 여섯 줄은 그 블록을 그대로 옮겨 적은 것이었고, 그때는
   전환점이 1849 라 원본이 닿지 않는 폭이 있어서 필요했습니다. 이제는 원본이
   같은 폭을 전부 덮으므로 사본을 지웠습니다. 남은 둘은 원본에 없는 것입니다. */
@media (max-width: 1279px) {
    #header-desktop { display: none; }

    /* 래퍼가 둘이라 생기는 1px.

       원본에는 `#header_wrap` 이 하나뿐이고 그 안에 데스크톱 바와 컴팩트 바가
       둘 다 들어 있습니다 (side-nav.ejs:9-187). 우리는 스킨 계약이 헤더를
       `Header` 와 `MobileHeader` 로 나누므로 래퍼도 둘인데, `header.css:37` 의
       `#header_wrap { border-bottom: 1px }` 은 **속이 빈 쪽에도** 그대로
       그어집니다. 컴팩트 폭에서 페이지 맨 위에 실선 1px 이 깔리고 컴팩트 바가
       y=1 로 밀려 있었습니다 — 원본은 y=0 입니다. (실측은 1280 에서 했습니다.
       그때는 이 블록이 1849 까지였고, 지금 1280 은 데스크톱 바 쪽입니다.)

       그래서 id 는 넓은 바 쪽에만 두고(chrome.tsx), 배경과 아래 선은 그 폭에서
       **실제로 바를 감싼 쪽**에만 줍니다. 어느 폭에서도 원본처럼 한 줄입니다. */
    #header_wrap {
        background-color: transparent;
        border-bottom: 0;
    }
    .hera-chrome-compact {
        background-color: var(--bg-header);
        border-bottom: 1px solid var(--border-color);
    }
}

/*---------------------------------------------------------
    1280 ~ 1721 — 접힌 데스크톱 바

    맨 위 머리말의 1722 아래입니다. 한 줄로는 들어가지 않고, 무엇을 깎아도
    들어가지 않으므로 나브가 제 줄을 갖습니다. 여기 있는 것은 전부 **배치**
    이고, 글자 크기 · 패딩 · 아이콘 · 항목 수는 1722 위와 한 값도 다르지
    않습니다 — 그것이 이 접기를 고른 이유입니다.
---------------------------------------------------------*/
@media (min-width: 1280px) and (max-width: 1721px) {
    /* header.css:112 는 1400 아래에서 데스크톱 바를 숨기고 컴팩트 바를
       세웁니다. 우리 전환점이 그보다 아래로 내려왔으므로 1280~1400 에서는
       그 블록을 되돌려 놓아야 합니다. 1401 위에서는 이 두 줄이 원본의
       기본값을 다시 말할 뿐이라 아무것도 바꾸지 않습니다. */
    #header-desktop { display: flex; }
    #header-mobile { display: none; }

    #header-desktop {
        /* `min-width: 1600px` (header.css:35). 그대로 두면 1600 아래에서 바가
           창보다 넓어져 정확히 `1600 - 뷰포트` 만큼 넘칩니다 — 머리말이 1401
           부터 1599 까지 재어 둔 그 숫자입니다. */
        min-width: 0;
        flex-wrap: wrap;
        /* 원본은 `height: var(--header-height)` 로 한 줄을 전제합니다. */
        height: auto;
    }

    /* 첫 줄은 원본의 70px 그대로 — 로고와 지갑. `.member-info` 는
       `margin-left: auto`(header.css:57) 로 이미 오른쪽 끝에 붙습니다.
       높이를 못 박는 이유는 이 줄이 1722 위의 그 줄과 같은 줄이어야 하기
       때문입니다: 안 박으면 줄 높이를 `.member-info` 의 74 가 정해, 폭
       하나 넘었다고 크롬이 4px 움직입니다. */
    #header-desktop > .logo,
    #header-desktop > .member-info {
        height: var(--header-height);
    }

    /* `.logo` 에는 원본이 display 를 주지 않아 인라인입니다. 높이를 준
       이상 안의 이미지를 가운데 세울 것도 여기서 말해야 합니다. */
    #header-desktop > .logo {
        display: flex;
        align-items: center;
    }

    /* 둘째 줄. `flex-basis: 100%` 라 누구와도 한 줄을 나누지 않고,
       `order` 는 지갑 뒤로 보냅니다. 가운데 정렬은 원본의
       `.main-nav { justify-items: center }`(header.css:42) 가 이미 하고
       있습니다 — 1280 에서 ul 은 1014 라 좌우로 133px 씩 남습니다. */
    #header-desktop > .main-nav {
        order: 3;
        flex: 1 0 100%;
    }
}

/*---------------------------------------------------------
    1722 ~ 1904 — 파트너의 바는 한 항목 더 무겁습니다 (2026-09-12).

    위 블록의 1722 는 **파트너가 아닌 회원 바**의 폭입니다. 파트너에게는
    지갑 띠와 계정 메뉴 사이에 문이 하나 더 섭니다(`skins/hera/chrome.tsx`) —
    87px 에 좌우 여백 26px, 합쳐 113px.

    ── 안 접으면 무슨 일이 나는가 ────────────────────────────

    넘치지 않습니다. 포개지지도 않습니다. **나브 항목이 줄어들며 버팁니다** —
    그리고 그 안의 이름표가 두 줄이 됩니다. 1722 실측: 「입금하기」가
    입금하 / 기 로, 「보유머니」와 「포인트」도 같이 접혔습니다. 쪽 넘침은
    0 이고 문도 멀쩡하므로, **넘침을 재는 자에게도 겹침을 재는 자에게도 안
    보입니다.** `scripts/partner-door-probe.mjs` 가 글상자 수를 세는 것이
    그래서입니다(`Range.getClientRects().length`).

    ── 1905 는 어디서 온 숫자인가 — **말 여섯 중 제일 넓은 것** ──────

    1920 에서 잽니다. 그 폭에서는 아무것도 안 줄어드니 남은 틈이 곧 여유이고,
    「제 폭」은 1920 − 여유입니다.

        한국어   나브 1149 에서 끝 · 띠 1248 에서 시작 · 여유 99 → 제 폭 1821
        일본어   나브 1200 에서 끝 · 띠 1215 에서 시작 · 여유 15 → 제 폭 1905

    한국어만 재고 1820 으로 끊었다가 고쳤습니다. 일본어는 **두 군데**가 넓습니다 —
    문의 이름표(「パートナー」 121px, 한국어 「파트너」 87px)와 나브 열 항목
    자체. 그래서 여섯 중 제일 넓은 쪽으로 끊습니다. 1920 은 여전히 한 줄입니다.

    1760~1820 에서는 줄어들어도 한국어 이름표가 아직 안 접힙니다(실측). 그
    여유에 기대지 않습니다 — 그것이 바로 일본어에서 없어지는 여유입니다.

    ── 옆에 적어 두는 것: 이 줄 밖의 일 ──────────────────────

    **파트너가 아닌 일본어 회원의 바도 1722~1791 에서 같은 이유로 줄어듭니다**
    (제 폭 1905 − 문 113 = 1792). 위 블록의 1722 가 한국어에서 잰 숫자라서
    그렇고, 파트너와 상관없이 오늘도 그렇습니다. 여기서는 안 고칩니다 —
    이 회차의 일이 아닙니다.

    재는 자는 이제 있고, **찍기까지 합니다**: `scripts/partner-door-probe.mjs`
    가 폭마다 문을 들어낸 띠를 같이 재고(`already`), 그것이
    `check_partner_button.py` 의 「문이 없어도 이미 접히거나 겹치던 띠」 줄로
    나옵니다 (`--locales`). 2026-09-12 이전에는 그 수를 재 놓고 말 훑기에서
    **버리고 있었습니다** — 위 검사가 전부 「문 때문에 생긴 차이」라, 문과
    상관없이 접힌 띠는 뺄셈에서 0 이 되어 사라졌습니다.

    ── 폭 목록은 이것을 못 봅니다 ────────────────────────────

    `lib/table-cards.ts` 의 `SKIN_BREAKPOINTS.hera` 가 이 파일의 1279 · 1721 ·
    1904 를 적고 있고, `skin-screen-seam.spec.ts` 가 이 파일에 목록 밖의 폭이
    생기면 빨개집니다. 그것이 이 파일에 **새 경계가 생기는** 일은 잡습니다.

    하지만 1722~1791 의 고장은 경계가 아닙니다. 매체 질의가 하나도 안 걸린
    채로 나브가 줄어들며 버티는 것이라, 끊는 폭이 아예 생기지 않습니다.
    폭 목록은 원리상 이것을 못 보고, 위의 `already` 줄만 봅니다. 고칠 때
    생기는 수(1792 언저리)는 그때 목록에 같이 적어야 합니다.

    ── 왜 `:has()` 인가 ──────────────────────────────────────

    파트너가 아닌 회원의 바는 한 픽셀도 안 움직여야 합니다. 바로 아래
    「손님은 안 접습니다」가 같은 장치를 같은 까닭으로 씁니다.

    위 블록의 규칙을 그대로 다시 적습니다. 선택자가 달라서(`:has()`) 한
    블록으로 합칠 수가 없습니다 — 폭이 조건인 것과 상태가 조건인 것이
    섞이는 자리입니다. **위를 고치면 여기도 같이 고치십시오.**
---------------------------------------------------------*/
@media (min-width: 1722px) and (max-width: 1904px) {
    #header-desktop:has(.hera-partner) {
        min-width: 0;
        flex-wrap: wrap;
        height: auto;
    }

    #header-desktop:has(.hera-partner) > .logo,
    #header-desktop:has(.hera-partner) > .member-info {
        height: var(--header-height);
    }

    #header-desktop:has(.hera-partner) > .logo {
        display: flex;
        align-items: center;
    }

    #header-desktop:has(.hera-partner) > .main-nav {
        order: 3;
        flex: 1 0 100%;
    }
}

/*---------------------------------------------------------
    1320 ~ 1721 — 손님은 안 접습니다

    위 블록의 1722 는 **회원 바**의 폭입니다. 손님 바는 그보다 훨씬 좁습니다 —
    지갑 대신 로그인·회원가입 알약 둘이고, 나브에서 회원 전용 둘(테더입출금 ·
    포인트전환)이 빠지기 때문입니다. 배포본 실측(2026-09-05):

        로고         223   회원과 같음
        main-nav     801   여덟 항목 (회원은 열, 1014)
        member_info  276   알약 둘 (회원 지갑은 485)
        합계        1300

    그래서 1300~1721 에서 손님은 **들어가는 바를 접고 있었습니다.** 운영자가
    「조금만 창 크기 줄이면 헤더바가 두줄이 되는데 두줄로 안해도 될거같은데」
    라고 한 자리이고, 그때 화면은 손님 화면이었습니다.

    두 상태를 CSS 가 구별할 수 있습니다. 손님 쪽 껍데기는 export 의 게스트
    파샬에서 온 `.member_info`(언더바)이고 회원 쪽은 `.balance-wrap` 입니다 —
    이름이 갈라져 있는 것이 원본의 사실이라 여기서 그것을 씁니다.

    푸는 것은 `flex-basis: 100%` **하나**입니다. 그 한 줄이 나브를 제 줄로
    밀어내던 것이고, 나머지(높이 70, 로고 세로 가운데)는 한 줄일 때도 그대로
    맞습니다. `flex: 0 0 auto` 라 나브는 제 내용 폭 그대로 서고, 1320 아래로
    내려가면 위 블록이 다시 접습니다.
---------------------------------------------------------*/
@media (min-width: 1320px) and (max-width: 1721px) {
    #header-desktop:has(.member_info) > .main-nav {
        order: 0;
        flex: 0 0 auto;
    }
}

/*---------------------------------------------------------
    크롬이 물려받는 줄 높이

    원본은 여기에 아무 값도 주지 않습니다. app.css 에도 common.css 에도 body
    line-height 가 없어서 크롬 전체가 브라우저 기본값 `normal` 위에서
    그려지고, header.css 의 높이들은 전부 그 전제로 정해져 있습니다. 우리 쪽은
    Tailwind preflight 가 `html { line-height: 1.5 }` 를 깔아 두므로 15px 글자
    한 줄이 22.5px 줄상자가 되고, 그만큼씩 부풀었습니다.

        .main-nav .nav-link       38 → 43
        .dropdown-menu li > a     36 → 41   (스포츠 드롭다운 162 → 182)
        드로어 메뉴 행            42 → 47   (1280 기준. 열다섯 행이면 75px)

    **390px 에서는 안 보입니다.** common.css 의 폰 리셋(≤767px)이 양쪽 다
    `line-height: 100%` 로 눌러 버리기 때문입니다. 폰만 재면 맞아 보이고
    1280 · 1920 에서만 어긋나는 것이 이것입니다.
---------------------------------------------------------*/
.hera-chrome {
    line-height: normal;
}

/* 오른쪽 드로어의 로그인 상자는 우리 마크업이라 플랫폼 값을 그대로 씁니다.
   globals.css 는 767px 아래에서만 `.app-ui` 에 이 값을 다시 세우므로,
   드로어가 열리는 768~1849 구간에서는 여기가 유일한 자리입니다. */
.hera-chrome .app-ui {
    line-height: 1.5;
}

/*---------------------------------------------------------
    app.css 의 `.btn-icon`

    `header.css` 는 `.btn-icon` 에 색 · 배경 · 테두리 · 패딩만 줍니다.
    **크기와 가운데 정렬은 한 번도 주지 않습니다** — 원본 페이지가 그 앞에
    싣는 `1bet_v4/css/app.css`(431KB, Velzon 관리자 테마)에 있기 때문입니다.
    그 파일을 싣지 않는 결정은 그대로이고, 여기 옮기는 것은 크롬이 실제로
    기대고 있는 네 줄뿐입니다.

    옮기기 전 실측 (로그인 상태):
        #header-mobile .btn-icon   48×48 → 44×44,  글리프 35 → 24
        .menu-header .close-btn    39×39 → 46×42
        .btn-icon.refresh          높이 38 → 15,   그래서 지갑 알약 54 → 39

    70px 바 안에서 지갑 알약이 눈에 띄게 납작했던 것이 마지막 줄입니다.

    `:where()` 로 감싸 특이도를 app.css 와 **같은 (0,1,0)** 으로 맞춥니다.
    그러지 않으면 `.btn-icon.refresh { width: 5px }`(header.css:62) 와
    `#header-mobile .btn-icon { padding: 10px }`(114행) 을 우리가 이겨,
    원본에 없는 모양이 됩니다. `padding: 0` 은 아예 옮기지 않았습니다 —
    크롬의 `.btn-icon` 은 전부 header.css 에서 자기 패딩을 받고, 안 받는
    하나(refresh)는 우리 쪽 리셋이 이미 0 입니다.

    `white-space: nowrap` 는 app.css 에 없고 **우리 쪽에만 필요합니다.** 이
    상자는 39px 인데 패딩 10px 을 빼면 안쪽이 19px 이라, 글자가 있는 단추 —
    드로어의 닫기 — 는 어느 쪽이든 넘칩니다. 원본의 `CLOSE` 는 끊을 자리가
    없는 한 낱말이라 그냥 옆으로 넘쳤고, 「닫기」는 음절 사이에서 끊겨
    「닫 / 기」 두 줄이 됐습니다. 넘치는 쪽이 원본의 모습입니다.

    남는 차이 1px: refresh 단추의 높이가 39 로 나옵니다(원본 38). `1.5em` 의
    기준이 되는 단추 글자 크기가 원본은 UA 기본값 13.333px, 우리는 Tailwind
    preflight 의 `button { font: inherit }` 때문에 14px 이라서입니다. 글자가
    없는 단추라 눈에 걸리는 값이 아니고, 이것 하나 때문에 플랫폼 규칙을
    뒤집지는 않습니다.
---------------------------------------------------------*/
:where(#header_wrap, .hera-chrome) .btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: calc(1rem + 1.5em + 2px);
    height: calc(1rem + 1.5em + 2px);
    white-space: nowrap;
}

/*---------------------------------------------------------
    드로어 카테고리 머리글의 상자

    header.css 에 이 자리를 정하는 규칙이 둘 있습니다.

        .menu-nav .menu-category  { padding: 20px 25px 8px; … }        (89행)
        .menu-nav li[ng-bind]     { padding: 12px 25px;
                                    border-left: 3px solid transparent } (92행)

    **원본에서는 뒤엣것이 이깁니다.** side-nav.ejs 의 카테고리 `li` 는 셋 다
    `ng-bind` 로 글자를 받으므로 `li[ng-bind]` 에 걸리고, 특이도가 (0,2,1) 대
    (0,2,0) 입니다. 그래서 원본의 카테고리는 링크 행과 같은 12px/25px 리듬에
    3px 투명 왼쪽 테두리까지 있어 글자 시작점이 링크와 정확히 맞습니다.
    89행은 한 번도 이긴 적이 없습니다.

    우리 마크업에는 `ng-bind` 가 없습니다 — Angular 지시자를 React 가 흉내 낼
    이유가 없으니까요 — 그래서 89행이 이기고, 카테고리마다 위 8px 이 더 붙고
    글자가 왼쪽으로 3px 어긋났습니다. 390px 에서 스포츠 배팅 · 게임 · 이벤트 ·
    고객센터 넷을 지나며 32px 이 쌓입니다. header.css 는 export 원본이라
    여기서 고칩니다.
---------------------------------------------------------*/
.hera-chrome .menu-nav .menu-category {
    padding: 12px 25px;
    border-left: 3px solid transparent;
}

/*---------------------------------------------------------
    게스트 헤더의 로그인 · 회원가입

    `side-nav-public.ejs` 는 `side-nav.ejs` 에서 회원 영역만 뺀 파일이
    아닙니다. 컨테이너 이름이 `.member-info` 가 아니라 **`.member_info`** 이고,
    그 안의 두 단추와 사이의 가는 줄(`.btn_login` · `.txt_or` · `.btn_signup`)은
    `header.css` 가 아니라 **그 파일 맨 아래 인라인 `<style>`** 에 있습니다
    (side-nav-public.ejs:333-390). export 시트를 그대로 쓰는 우리 쪽에는 인라인
    블록이 올 자리가 없으므로 그대로 옮겨 적습니다.

    옮기기 전에는 게스트 헤더가 **회원용 지갑 알약(`.balance-wrap`) 안의
    `.btn-special` 두 개**였습니다. 36px · 48px 회색 슬래브에 글자가 잘려
    있었고, 크롬에서 가장 큰 차이였습니다.

    원본의 `@media (max-width: 520px)` 블록은 옮기지 않았습니다. 그 폭에서는
    양쪽 다 데스크톱 헤더가 통째로 숨어 있어(우리 1849 · 원본 1400) 원본에서도
    한 번도 걸린 적이 없는 규칙입니다.
---------------------------------------------------------*/
#header_wrap .member_info {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
}

#header_wrap .btn_login,
#header_wrap .btn_signup {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    font-weight: 600;
    min-width: 100px;
    height: 30px;
    border-radius: 10px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, box-shadow 0.15s;
    border: none;
    outline: none;
    user-select: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

#header_wrap .btn_login {
    background: #fff;
    color: var(--bg-card);
    border: 1.5px solid var(--primary-blue);
}

#header_wrap .btn_login:hover {
    background: var(--primary-blue);
    color: #fff;
}

#header_wrap .btn_signup {
    background: var(--primary-blue);
    color: var(--bg-dark);
    border: 1.5px solid var(--primary-blue);
}

#header_wrap .btn_signup:hover {
    background: #fff;
    color: var(--primary-blue);
    border-color: var(--primary-blue);
}

/* OR 구분선 */
#header_wrap .txt_or {
    width: 32px;
    height: 1.5px;
    background: linear-gradient(to right, #454c61 30%, #a1b4e6 50%, #454c61 70%);
    border-radius: 1.5px;
    margin: 0 3px;
    opacity: 0.22;
}

/* 꺼진 아이콘 버튼. 살아 있을 때는 --text-secondary(#8A9CB3) 이므로 그보다
   확실히 어두워야 「지금은 안 됨」으로 읽힙니다. 커서도 같이 바꿉니다 —
   `.btn-icon.refresh` 는 export 에서 cursor: pointer 를 고정으로 들고 있어
   막힌 채로도 손 모양이 떴습니다. 폰에는 커서가 없지만 이 상태는 몇 초짜리라
   상시 문장을 붙이면 소음입니다: 오래 가는 막힘(대기 중인 신청, 재신청 대기,
   답변 대기 문의)은 화면에 문장이 따로 나옵니다. */
.btn-icon:disabled {
    color: #4b5462;
    cursor: default;
}

/* 폰 드로어의 맨 아래 버튼들 — 로그아웃 · 게임머니 가져오기 · 로그인 ·
   회원가입. export 는 셋 다 height: 35px 로 그렸고 그대로 두면 손가락
   과녁으로는 얕습니다 (관례 44px). 이번 배치의 「조금씩 더 세련되게」
   면허로 드로어 안에서만 44px 로 올립니다. 메뉴 행(40px)은 export 값
   그대로 — 목록의 리듬은 export 의 것이고, 여기는 행이 아니라 단추라
   기준이 다릅니다. header.css 는 export 원본이라 여기서 고칩니다. */
@media (max-width: 767px) {
    .side-menu .menu-footer .btn {
        height: 44px;
    }
}

/* 서랍의 파트너 단추 (2026-11-05 드림존 「파트너 중앙정렬도 안맞고」). 두 칸 격자의 일곱째라 혼자 왼쪽 칸에 섰고,
   `a` 라서 옆의 `button` 들과 달리 아이콘과 글자가 왼쪽에 붙었습니다. 유저D~G 처럼 바로가기 아래 한 줄 전체로,
   아이콘과 이름을 가운데로. */
.side-menu .quick-actions .btn.hera-partner {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.side-menu .quick-actions .btn.hera-partner svg {
    width: 16px;
    height: 16px;
    flex: 0 0 auto;
}

/* 열린 서랍은 `translateX(0)` 이 아니라 `none` 입니다 (2026-11-05 드림존 모바일). `transform` 이
   남아 있는 상자는 그 안의 `position: fixed` 의 기준이 되어, 서랍 바닥에서 연 말 고르는 창이
   화면이 아니라 서랍(280px) 안에 갇혀 떴고 어둡게 덮는 판도 서랍만 덮었습니다. 밀려 들어오는
   움직임은 같습니다 — `none` 은 `translateX(0)` 과 같은 자리로 옮겨 갑니다. */
.side-menu.open {
    transform: none;
}
