/* LIFE-WALLET-REDESIGN-02 (owner-approved design, 2026-10-14). One set of tokens for the whole
   wallet: blue only for the one action that runs, green only for "done", orange only for "check
   this", red only for errors and deleting. Nothing under 14px. */
.wallet-root {
  --w-page: #f6f7f9; --w-card: #fff; --w-soft: #f2f4f7; --w-line: #e4e7ec; --w-strong: #c9ced6;
  --w-ink: #1e2228; --w-muted: #4e5663;
  --w-blue: #2563eb; --w-blue-press: #1d4ed8; --w-blue-ink: #1d4ed8; --w-tint: #eef4ff; --w-tint-line: #bfd3fe;
  --w-ok: #067647; --w-ok-bg: #ecfdf3; --w-ok-line: #abefc6;
  --w-warn: #b54708; --w-warn-bg: #fff6ed; --w-warn-line: #fddcab;
  --w-err: #b42318; --w-err-bg: #fef3f2; --w-err-line: #fecdca;
  --w-dis: #e4e7ec; --w-dis-ink: #6b7280; --w-read: #f5f8ff; --w-scrim: rgba(16, 20, 26, .45);
  --w-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 12px 32px rgba(16, 24, 40, .06);
  --wallet-accent: var(--w-blue); --wallet-accent-text: #fff;
  min-width: 0; color: var(--w-ink);
}
body[data-site-theme='dark'] .wallet-root,
html[data-site-theme-bootstrap='dark'] body:not([data-site-theme]) .wallet-root {
  --w-page: #131418; --w-card: #1c1f24; --w-soft: #24272d; --w-line: #34383f; --w-strong: #565b63;
  --w-ink: #f5f5f5; --w-muted: #c7c7c7;
  --w-blue: #3b82f6; --w-blue-press: #2563eb; --w-blue-ink: #8ab4ff; --w-tint: #1e2a44; --w-tint-line: #33477a;
  --w-ok: #86efac; --w-ok-bg: #12301f; --w-ok-line: #1f5a36;
  --w-warn: #f7b26a; --w-warn-bg: #3a2710; --w-warn-line: #6b4a1f;
  --w-err: #fca5a5; --w-err-bg: #3a1b1d; --w-err-line: #6e2e33;
  --w-dis: #3a3a3a; --w-dis-ink: #a3a3a3; --w-read: #22304a; --w-scrim: rgba(0, 0, 0, .6);
  --w-shadow: 0 1px 2px rgba(0, 0, 0, .4);
}
@media (prefers-color-scheme: dark) {
  body[data-site-theme='system'] .wallet-root,
  html[data-site-theme-bootstrap='system'] body:not([data-site-theme]) .wallet-root {
    --w-page: #131418; --w-card: #1c1f24; --w-soft: #24272d; --w-line: #34383f; --w-strong: #565b63;
    --w-ink: #f5f5f5; --w-muted: #c7c7c7;
    --w-blue: #3b82f6; --w-blue-press: #2563eb; --w-blue-ink: #8ab4ff; --w-tint: #1e2a44; --w-tint-line: #33477a;
    --w-ok: #86efac; --w-ok-bg: #12301f; --w-ok-line: #1f5a36;
    --w-warn: #f7b26a; --w-warn-bg: #3a2710; --w-warn-line: #6b4a1f;
    --w-err: #fca5a5; --w-err-bg: #3a1b1d; --w-err-line: #6e2e33;
    --w-dis: #3a3a3a; --w-dis-ink: #a3a3a3; --w-read: #22304a; --w-scrim: rgba(0, 0, 0, .6);
    --w-shadow: 0 1px 2px rgba(0, 0, 0, .4);
  }
}
/* Keep the wallet page canvas aligned with the approved light and dark web mockups. */
body.chat-home-page .consumer-workspace[data-workspace='wallet'] { background: var(--lotbi-wallet-page, #f6f7f9); }
body[data-site-theme='dark'], html[data-site-theme-bootstrap='dark'] body:not([data-site-theme]) { --lotbi-wallet-page: #131418; }
@media (prefers-color-scheme: dark) {
  body[data-site-theme='system'], html[data-site-theme-bootstrap='system'] body:not([data-site-theme]) { --lotbi-wallet-page: #131418; }
}
body.chat-home-page .consumer-workspace[data-workspace='wallet'] > .site-modal { max-width: 1120px; }
/* The shared rule sizes the wallet panel from the window width (100vw), so beside the side menu on a
   PC it ran past the right edge. The panel takes the room the workspace actually has. */
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] > .consumer-section-panel { width: min(100%, 1120px); }
.consumer-section-content[data-wallet-state='locked'] { overflow: hidden; }
.wallet-root [hidden], [class^='wallet-'][hidden], [class*=' wallet-'][hidden] { display: none !important; }

/* Buttons: one look per job, the same everywhere in the wallet. */
.wallet-root .consumer-action { min-height: 48px; padding: 0 20px; border: 1px solid var(--w-blue); border-radius: 12px; background: var(--w-blue); color: #fff; font-size: 16px; font-weight: 700; box-shadow: none; }
.wallet-root .consumer-action:not(:disabled):hover { background: var(--w-blue-press); border-color: var(--w-blue-press); filter: none; }
.wallet-root .consumer-action:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-root .consumer-action-secondary { border-color: var(--w-strong); background: var(--w-card); color: var(--w-ink); }
.wallet-root .consumer-action-secondary:not(:disabled):hover { border-color: var(--w-strong); background: var(--w-soft); }
.wallet-root .consumer-action:disabled { cursor: not-allowed; border-color: var(--w-dis); background: var(--w-dis); color: var(--w-dis-ink); opacity: 1; }
.wallet-root .consumer-action-secondary:disabled { background: var(--w-card); color: var(--w-dis-ink); }
.wallet-root .wallet-text-action { min-height: 44px; padding: 0 8px; border-color: transparent; background: transparent; color: var(--w-blue-ink); }
.wallet-root .wallet-text-action:not(:disabled):hover { border-color: transparent; background: var(--w-tint); }
.wallet-root .wallet-danger-action { border-color: var(--w-err-line); background: var(--w-card); color: var(--w-err); }
.wallet-root .wallet-danger-action:not(:disabled):hover { border-color: var(--w-err-line); background: var(--w-err-bg); }
.wallet-root .wallet-danger-confirm { border-color: #b42318; background: #b42318; color: #fff; }
.wallet-root .wallet-danger-confirm:not(:disabled):hover { border-color: #912018; background: #912018; }
.wallet-root .consumer-action svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-icon-button { min-width: 44px; padding: 0 14px !important; gap: 8px; }

/* Status lines. Errors are red; progress is plain; done is the green toast. */
.wallet-message { min-height: 0; margin: 0; color: var(--w-err); font-size: 15px; line-height: 1.55; text-align: left; }
.wallet-message:empty { display: none; }
.wallet-message[data-tone='progress'] { color: var(--w-muted); }
/* WALLET-TOAST-BOTTOM-01 (3번 2차 걷기 10-29): at the top it covered the back button for seconds; it shows at the bottom. */
.wallet-toast { position: fixed; z-index: 1200; bottom: calc(24px + env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); width: max-content; max-width: calc(100vw - 32px); box-sizing: border-box; display: flex; align-items: center; gap: 10px; margin: 0; padding: 12px 18px; border: 1px solid var(--w-ok-line); border-radius: 14px; background: var(--w-ok-bg); color: var(--w-ok); font-size: 16px; font-weight: 700; line-height: 1.45; box-shadow: 0 8px 24px rgba(16, 24, 40, .1); }
.wallet-toast::before { content: ''; flex: 0 0 auto; width: 18px; height: 10px; margin-top: -4px; border: solid currentColor; border-width: 0 0 2.5px 2.5px; transform: rotate(-45deg); }
.wallet-reason { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--w-warn); font-size: 15px; font-weight: 700; line-height: 1.45; }
.wallet-reason:empty { display: none; }
.wallet-security-note { max-width: 680px; margin: 4px auto 0; color: var(--w-muted); font-size: 14px; line-height: 1.6; text-align: center; }
.wallet-field { display: grid; gap: 8px; font-size: 16px; font-weight: 800; }
.wallet-field > span small, .wallet-field-hint { color: var(--w-muted); font-size: 14px; font-weight: 500; }
.wallet-field :is(input:not([type='checkbox']):not([type='radio']), select, textarea), .wallet-pin-input { box-sizing: border-box; width: 100%; min-height: 48px; padding: 11px 14px; border: 1px solid var(--w-strong); border-radius: 12px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 16px; font-weight: 500; }
.wallet-field textarea { resize: vertical; line-height: 1.55; }
.wallet-field :is(input, select, textarea):focus-visible, .wallet-pin-input:focus-visible { outline: none; border-color: var(--w-blue); box-shadow: 0 0 0 3px var(--w-tint-line); }
.wallet-pin-input { text-align: center; font-size: 22px; letter-spacing: .35em; -webkit-text-security: disc; }

/* ── 잠금 ───────────────────────────────────────────────────────────────── */
.wallet-gate { box-sizing: border-box; width: min(100%, 880px); margin: 8px auto 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--w-line); border-radius: 24px; background: var(--w-card); box-shadow: var(--w-shadow); text-align: left; }
.wallet-gate.wallet-notice { width: min(100%, 560px); grid-template-columns: minmax(0, 1fr); padding: 40px; justify-items: center; text-align: center; gap: 12px; }
/* LIFE-WALLET-DEVICE-01: one line over the wallet offering 내 기기 registration before it is required. */
.wallet-device-offer { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 12px; padding: 10px 14px; border-radius: 12px; background: var(--w-soft); color: var(--w-ink); font-size: 14px; line-height: 1.5; }
.wallet-device-offer svg { flex: 0 0 auto; width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-device-offer a { font-weight: 700; }
.wallet-notice > p { margin: 0; color: var(--w-muted); font-size: 16px; line-height: 1.6; }
.wallet-login-gate { box-sizing: border-box; min-height: min(640px, calc(100svh - 150px)); display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 42px; width: min(100%, 560px); margin: 0 auto; padding: 30px 20px; text-align: center; }
.wallet-login-content { display: grid; justify-items: center; width: 100%; }
.wallet-login-content h3 { margin: 0; color: var(--w-ink); font-size: 24px; font-weight: 800; line-height: 1.35; }
.wallet-login-content p { max-width: 310px; margin: 10px 0 0; color: var(--w-muted); font-size: 16px; line-height: 1.55; }
.wallet-login-art { position: relative; width: 220px; height: 160px; margin: 0 auto 30px; }
.wallet-login-card { position: absolute; box-sizing: border-box; display: block; width: 170px; height: 112px; border-radius: 7px; }
.wallet-login-identity { top: 4px; left: 0; transform: rotate(-7deg); background: linear-gradient(135deg, #e2effc, #b3cbe1); }
.wallet-login-photo { position: absolute; left: 15px; top: 29px; width: 38px; height: 51px; border-radius: 5px; background: #8394a6; }
.wallet-login-identity-line { position: absolute; left: 65px; top: 32px; width: 74px; height: 5px; border-radius: 3px; background: #9eacbd; }
.wallet-login-document { top: 30px; right: 0; transform: rotate(5deg); border: 1px solid #d8dde4; background: #fff; box-shadow: 0 2px 3px rgba(16,24,40,.07); }
.wallet-login-seal { position: absolute; left: 16px; top: 19px; width: 9px; height: 9px; border-radius: 50%; background: #234691; }
.wallet-login-document-line { position: absolute; left: 16px; bottom: 26px; width: 102px; height: 4px; border-radius: 3px; background: #aab0b8; }
.wallet-login-document-line:last-child { bottom: 18px; width: 100px; background: #d0d4d9; }
.wallet-login-badge { position: absolute; left: 50%; bottom: 0; display: grid; place-items: center; width: 52px; height: 52px; border: 5px solid var(--w-page); border-radius: 50%; transform: translateX(-50%); background: var(--w-ink); color: var(--w-card); }
.wallet-login-badge svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-root .wallet-login-action { box-sizing: border-box; display: flex; align-items: center; justify-content: center; width: min(100%, 420px); min-height: 54px; text-decoration: none; }
@media (max-width: 600px) {
  /* WALLET-LOGIN-FITS-01 (3번 걷기 10-29): at 375×812 the 로그인 button sat half below the screen (site head + 대화로 row
     are about 190px). */
  .wallet-login-gate { min-height: calc(100svh - 200px); justify-content: space-between; gap: 24px; padding: max(32px, 7vh) 2px calc(18px + env(safe-area-inset-bottom)); }
  .wallet-login-content h3 { font-size: 22px; }
  .wallet-login-content p { max-width: 290px; }
  .wallet-root .wallet-login-action { width: 100%; min-height: 56px; }
}
.wallet-lock-info { display: flex; flex-direction: column; gap: 20px; padding: 44px 40px; background: var(--w-tint); }
.wallet-lock-mark { width: 64px; height: 64px; display: grid; place-items: center; margin: 0; border-radius: 50%; background: var(--w-card); color: var(--w-blue-ink); }
.wallet-notice .wallet-lock-mark { background: var(--w-tint); }
.wallet-lock-mark svg { width: 30px; height: 30px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.wallet-gate h3 { margin: 0; font-size: 28px; line-height: 1.3; letter-spacing: -.02em; }
.wallet-lock-info > p { margin: -8px 0 0; font-size: 17px; line-height: 1.55; }
.wallet-lock-points { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
.wallet-lock-points li { display: flex; align-items: center; gap: 12px; font-size: 16px; line-height: 1.45; }
.wallet-lock-points li[data-tone='warn'] { color: var(--w-warn); font-weight: 700; }
.wallet-lock-points svg { flex: 0 0 auto; box-sizing: content-box; width: 18px; height: 18px; padding: 7px; border-radius: 10px; background: var(--w-card); fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-lock-help { margin-top: auto; }
.wallet-lock-help summary { min-height: 44px; display: flex; align-items: center; color: var(--w-blue-ink); font-size: 16px; font-weight: 700; cursor: pointer; list-style: none; }
.wallet-lock-help summary::-webkit-details-marker { display: none; }
.wallet-lock-help p { margin: 0; font-size: 15px; line-height: 1.6; }
.wallet-setup-why { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.6; }
.wallet-pin-form { position: relative; display: flex; flex-direction: column; gap: 16px; padding: 40px; }
.wallet-pin-head { display: flex; align-items: center; justify-content: space-between; font-size: 16px; font-weight: 700; }
.wallet-pin-step { color: var(--w-blue-ink); }
.wallet-pin-dots { display: flex; justify-content: center; align-items: center; gap: 18px; min-height: 28px; color: var(--w-ink); font-size: 0; letter-spacing: 0; line-height: 1; }
.wallet-pin-dot { box-sizing: border-box; width: 16px; height: 16px; border: 2px solid currentColor; border-radius: 50%; }
.wallet-pin-dot[data-filled='true'] { width: 18px; height: 18px; background: currentColor; }
.wallet-pin-form[data-state='error'] .wallet-pin-dots { color: var(--w-err); }
.wallet-pin-form[data-state='error'] .wallet-pin-dot { width: 18px; height: 18px; background: currentColor; }
.wallet-pin-form > .wallet-message { min-height: 48px; display: grid; align-content: center; text-align: center; }
.wallet-pin-form > .wallet-message:empty { display: grid; }
.wallet-pin-hint { margin: 0; color: var(--w-muted); font-size: 15px; text-align: center; }
.wallet-pin-tries { margin: 2px 0 0; color: var(--w-muted); font-size: 15px; font-weight: 500; text-align: center; }
.wallet-pin-tries:empty { display: none; }
.wallet-pin-form > .wallet-pin-input, .wallet-unlock-form > .wallet-pin-input { position: absolute; inline-size: 1px; block-size: 1px; min-height: 0; padding: 0; opacity: 0; pointer-events: none; }
.wallet-keypad { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.wallet-keypad[aria-disabled='true'] { opacity: .45; }
.wallet-root .wallet-keypad .consumer-action { min-height: 60px; padding: 0; border-color: var(--w-line); border-radius: 14px; background: var(--w-card); color: var(--w-ink); font-size: 22px; font-weight: 700; }
.wallet-root .wallet-keypad .consumer-action:not(:disabled):hover { background: var(--w-soft); border-color: var(--w-line); }
.wallet-root .wallet-keypad .wallet-key-erase { border-color: var(--w-soft); background: var(--w-soft); font-size: 15px; }
.wallet-keypad [data-key='0'] { grid-column: 2; grid-row: 4; }
.wallet-keypad [data-key='지움'] { grid-column: 3; grid-row: 4; }
.wallet-root .wallet-keypad .wallet-key-confirm { grid-column: 1 / -1; grid-row: 5; width: 100%; min-height: 52px; margin-top: 6px; border-color: var(--w-blue); background: var(--w-blue); color: #fff; font-size: 17px; }
.wallet-root .wallet-keypad .wallet-key-confirm:not(:disabled):hover { border-color: var(--w-blue-press); background: var(--w-blue-press); }
.wallet-root .wallet-keypad .wallet-key-confirm:disabled { border-color: var(--w-dis); background: var(--w-dis); color: var(--w-dis-ink); }
.wallet-pin-keyboard-hint { margin: -4px 0 0; color: var(--w-muted); font-size: 14px; text-align: center; }

/* ── Life Wallet 첫 화면 ────────────────────────────────────────────────── */
.wallet-shell { display: grid; gap: 20px; min-width: 0; }
.wallet-topbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; }
.wallet-tabs { display: inline-flex; gap: 4px; padding: 4px; border-radius: 14px; background: var(--w-soft); }
.wallet-tab { min-height: 44px; padding: 0 20px; border: 0; border-radius: 10px; background: transparent; color: var(--w-muted); font: inherit; font-size: 16px; font-weight: 700; cursor: pointer; }
.wallet-tab[aria-selected='true'] { background: var(--w-card); color: var(--w-ink); font-weight: 800; box-shadow: 0 1px 2px rgba(16, 24, 40, .08); }
.wallet-tab-count { margin-left: 4px; color: var(--w-muted); }
.wallet-tab:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-toolbar-actions { display: flex; align-items: center; gap: 8px; }
.wallet-storage-count { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.wallet-items { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.wallet-toolbar { display: flex; align-items: center; gap: 12px; }
.wallet-search { flex: 0 1 460px; min-width: 0; display: flex; align-items: center; gap: 10px; height: 48px; box-sizing: border-box; padding: 0 12px; border: 1px solid var(--w-strong); border-radius: 12px; background: var(--w-card); color: var(--w-muted); }
.wallet-search:focus-within { border-color: var(--w-blue); box-shadow: 0 0 0 3px var(--w-tint-line); }
.wallet-search svg { width: 20px; height: 20px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.wallet-search input { flex: 1 1 auto; min-width: 0; height: 44px; border: 0; outline: 0; background: transparent; color: var(--w-ink); font: inherit; font-size: 16px; }
.wallet-search input::-webkit-search-cancel-button { cursor: pointer; }
.wallet-toolbar .wallet-add-action { margin-left: auto; }
.wallet-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.wallet-filter { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 16px; border: 1px solid var(--w-line); border-radius: 999px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.wallet-filter[aria-pressed='true'] { border-color: var(--w-blue); background: var(--w-blue); color: #fff; }
.wallet-filter-count { opacity: .85; }
.wallet-filter:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-list-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; }
.wallet-list-count { margin: 0; font-size: 16px; font-weight: 800; }
.wallet-list-note { margin: 0 0 0 10px; color: var(--w-muted); font-size: 15px; font-weight: 500; }
.wallet-sort { display: inline-flex; align-items: center; gap: 8px; color: var(--w-ink); font-size: 15px; font-weight: 700; }
.wallet-sort select { min-height: 40px; padding: 0 10px; border: 1px solid var(--w-strong); border-radius: 10px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 15px; font-weight: 700; }
.wallet-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; margin: 0; padding: 0; list-style: none; }
.wallet-item { position: relative; min-width: 0; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); }
.wallet-item-thumb { position: relative; display: flex; align-items: center; justify-content: center; height: 156px; padding: 10px; overflow: hidden; border: 0; background: var(--w-soft); color: inherit; font: inherit; cursor: pointer; }
.wallet-item-photo { display: block; max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 6px; transition: filter .2s ease; user-select: none; -webkit-user-drag: none; }
.wallet-item-photo[data-masked='true'] { filter: blur(12px) saturate(.7); }
.wallet-item-veil { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; border-radius: 999px; background: rgba(22, 26, 32, .78); color: #fff; font-size: 14px; font-weight: 700; white-space: nowrap; pointer-events: none; }
.wallet-item-veil svg, .wallet-item-hide svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-item-hide { position: absolute; right: 10px; top: 10px; display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border: 1px solid var(--w-line); border-radius: 999px; background: var(--w-card); color: var(--w-ink); font-size: 14px; font-weight: 700; pointer-events: none; }
.wallet-item-format { position: absolute; left: 10px; top: 10px; display: inline-flex; align-items: center; height: 28px; padding: 0 9px; border: 1px solid var(--w-line); border-radius: 8px; background: var(--w-card); color: var(--w-ink); font-size: 14px; font-weight: 700; }
.wallet-item-open { display: grid; gap: 6px; padding: 14px 16px 16px; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.wallet-item-open:hover { background: var(--w-soft); }
.wallet-item-thumb:focus-visible, .wallet-item-open:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: -3px; }
.wallet-item-line { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; }
.wallet-item-title { min-width: 0; overflow: hidden; font-size: 17px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.wallet-item-meta { overflow: hidden; color: var(--w-muted); font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.wallet-kind-badge { flex: 0 0 auto; display: inline-flex; align-items: center; height: 26px; padding: 0 9px; border-radius: 999px; background: var(--w-tint); color: var(--w-blue-ink); font-size: 14px; font-weight: 700; white-space: nowrap; }
.wallet-item-chevron, .wallet-item-meta-kind { display: none; }
.wallet-item-text { min-width: 0; display: grid; gap: 6px; }

/* 빈 화면 */
.wallet-empty { display: flex; flex-direction: column; align-items: center; gap: 24px; padding: 40px 44px 36px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); text-align: center; }
.wallet-empty h3 { margin: 0; font-size: 26px; letter-spacing: -.02em; }
.wallet-empty > p, .wallet-empty-copy p { margin: 0; font-size: 17px; line-height: 1.6; }
.wallet-empty-copy { display: grid; gap: 10px; }
.wallet-kind-tiles { width: 100%; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.wallet-kind-tile { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 22px 20px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-page); color: var(--w-ink); font: inherit; text-align: left; cursor: pointer; }
.wallet-kind-tile:hover { border-color: var(--w-tint-line); background: var(--w-tint); }
.wallet-kind-tile:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-kind-icon { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 14px; background: var(--w-tint); color: var(--w-blue-ink); }
.wallet-kind-icon svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-kind-tile strong { font-size: 19px; }
.wallet-kind-tile span { color: var(--w-muted); font-size: 15px; line-height: 1.5; }
.wallet-kind-tile em { color: var(--w-blue-ink); font-size: 16px; font-style: normal; font-weight: 700; }
.wallet-empty-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; color: var(--w-muted); font-size: 15px; }
.wallet-empty-foot .wallet-text-action { min-height: 40px; font-size: 15px; }
.wallet-server-backup-notice { margin: 0; padding: 12px 14px; border: 1px solid var(--w-line); border-radius: 12px; background: var(--w-soft); color: var(--w-ink); font-size: 15px; line-height: 1.6; overflow-wrap: anywhere; }
.wallet-kind-empty { display: flex; flex-direction: column; align-items: center; gap: 18px; padding: 48px 40px 40px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); text-align: center; }
.wallet-kind-empty h3 { margin: 0; font-size: 24px; }
.wallet-kind-empty > p { margin: 0; font-size: 17px; line-height: 1.6; }
.wallet-kind-hint { box-sizing: border-box; width: min(100%, 640px); display: flex; align-items: center; gap: 16px; padding: 18px 20px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-page); text-align: left; }
.wallet-kind-hint div { flex: 1 1 auto; display: grid; gap: 4px; font-size: 15px; line-height: 1.5; }
.wallet-kind-hint strong { font-size: 16px; }
.wallet-kind-hint span { color: var(--w-muted); }
.wallet-search-note { margin: 0; color: var(--w-muted); font-size: 15px; }

/* 생활정보 탭 */
.wallet-life { display: grid; gap: 22px; }
.wallet-life-intro { margin: 0; font-size: 17px; }
.wallet-life-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.wallet-life-note { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); font-size: 15px; line-height: 1.5; }
.wallet-life-note svg { width: 20px; height: 20px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-life-note details { margin-left: auto; }
.wallet-life-note summary { min-height: 40px; display: flex; align-items: center; color: var(--w-blue-ink); font-weight: 700; cursor: pointer; }
.wallet-life-note details p { margin: 6px 0 0; color: var(--w-muted); }
.wallet-life-note:has(details[open]) { flex-wrap: wrap; }
.wallet-card-head { display: flex; align-items: center; gap: 14px; }
.wallet-card-head h3 { margin: 0; font-size: 20px; }
.wallet-card-head p { margin: 2px 0 0; color: var(--w-muted); font-size: 15px; }
.wallet-card-head > div { flex: 1 1 auto; min-width: 0; }
.wallet-card-icon { width: 48px; height: 48px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 14px; background: var(--w-tint); color: var(--w-blue-ink); }
.wallet-card-icon svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* 개인통관고유부호 */
.wallet-customs { box-sizing: border-box; width: 100%; margin: 0; display: grid; gap: 16px; padding: 26px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-customs-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.wallet-customs-title { margin: 0; font-size: 20px; letter-spacing: -.02em; }
.wallet-customs-body { display: grid; gap: 12px; }
.wallet-customs-number { display: flex; align-items: center; justify-content: center; min-height: 76px; margin: 0; border-radius: 14px; background: var(--w-page); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 28px; font-weight: 700; letter-spacing: .06em; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; user-select: none; -webkit-user-select: none; }
.wallet-customs-number[data-masked='false'] { user-select: all; -webkit-user-select: all; }
.wallet-customs-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.wallet-customs-actions .consumer-action { width: 100%; }
.wallet-customs-status { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.55; }
.wallet-customs-status:empty { display: none; }
.wallet-customs-status[data-outcome='copied'] { padding: 10px 12px; border: 1px solid var(--w-ok-line); border-radius: 12px; background: var(--w-ok-bg); color: var(--w-ok); font-weight: 700; }
.wallet-customs-status[data-outcome='manual'] { padding: 10px 12px; border: 1px solid var(--w-warn-line); border-radius: 12px; background: var(--w-warn-bg); color: var(--w-warn); font-weight: 700; }
.wallet-customs-manual { box-sizing: border-box; width: 100%; min-height: 48px; padding: 10px 12px; border: 2px solid var(--w-blue); border-radius: 12px; background: var(--w-card); color: inherit; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 18px; letter-spacing: .04em; user-select: all; -webkit-user-select: all; }
.wallet-customs-hint { margin: 0; color: var(--w-muted); font-size: 15px; font-weight: 500; line-height: 1.55; }
.wallet-customs-link { justify-self: start; display: inline-flex; align-items: center; min-height: 32px; color: var(--w-blue-ink); font-size: 15px; font-weight: 700; text-decoration: none; }
.wallet-customs-link::after { content: ' ↗'; white-space: pre; }
.wallet-customs-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.wallet-customs-renewal { display: grid; gap: 6px; margin: 0; padding: 14px 16px; border: 1px solid var(--w-warn-line); border-radius: 14px; background: var(--w-warn-bg); color: var(--w-warn); font-size: 15px; font-weight: 700; line-height: 1.55; }
.wallet-customs-renewal .wallet-customs-link { color: var(--w-blue-ink); }
.wallet-customs-expiry { margin: 0; color: var(--w-muted); font-size: 15px; }
.wallet-customs-detail .wallet-customs-body { width: min(100%, 520px); justify-self: center; }
.wallet-customs-facts { width: min(100%, 520px); justify-self: center; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0; margin: 0; font-size: 16px; line-height: 1.6; }
.wallet-customs-facts dt, .wallet-customs-facts dd { padding: 10px 0; border-bottom: 1px solid var(--w-soft); }
.wallet-customs-facts dt { padding-right: 16px; color: var(--w-muted); }
.wallet-customs-facts dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.wallet-customs-caution { margin: 0; padding: 14px 16px; border-radius: 14px; background: var(--w-soft); font-size: 15px; line-height: 1.6; }
.wallet-customs-official { display: grid; gap: 10px; }
.wallet-customs-official h4 { margin: 0; font-size: 17px; }
.wallet-customs-steps { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.wallet-customs-step { box-sizing: border-box; min-height: 56px; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; row-gap: 2px; align-items: center; padding: 10px 16px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); color: inherit; text-decoration: none; }
.wallet-customs-step strong { grid-column: 1; font-size: 16px; }
.wallet-customs-step span { grid-column: 1; color: var(--w-muted); font-size: 14px; line-height: 1.45; }
.wallet-customs-step::after { content: '관세청 ↗'; grid-column: 2; grid-row: 1 / 3; color: var(--w-blue-ink); font-size: 14px; font-weight: 700; white-space: nowrap; }
.wallet-customs-step:focus-visible, .wallet-customs-link:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-form-actions.wallet-customs-manage { justify-content: flex-start; }
.wallet-customs-removal { display: grid; gap: 10px; justify-items: start; }
.wallet-customs-removal > form { justify-self: stretch; }
.wallet-customs-pin .wallet-pin-input { max-width: 220px; }
.wallet-customs-relation { display: grid; gap: 8px; padding: 14px 16px; border-radius: 14px; background: var(--w-page); }
.wallet-customs-relation > div { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.wallet-customs-relation .wallet-customs-link { min-height: 40px; padding: 0 12px; border: 1px solid var(--w-line); border-radius: 10px; background: var(--w-card); white-space: nowrap; }
.wallet-customs-relation .wallet-customs-here { display: inline-flex; align-items: center; min-height: 40px; padding: 0 12px; border-radius: 10px; background: var(--w-tint); color: var(--w-blue-ink); font-size: 15px; font-weight: 700; white-space: nowrap; }
.wallet-customs-relation small { color: var(--w-muted); font-size: 14px; }
.wallet-customs-relation svg { width: 22px; height: 22px; flex: 0 0 auto; fill: none; stroke: var(--w-muted); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-steps { display: grid; gap: 26px; margin: 0; padding: 0; list-style: none; }
.wallet-step { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 14px; }
.wallet-step-number { box-sizing: border-box; width: 32px; height: 32px; display: grid; place-items: center; border: 2px solid var(--w-blue); border-radius: 50%; color: var(--w-blue-ink); font-size: 15px; font-weight: 800; }
.wallet-step:first-child .wallet-step-number { background: var(--w-blue); color: #fff; }
.wallet-step-body { min-width: 0; display: grid; gap: 10px; }
.wallet-step-title { font-size: 18px; font-weight: 800; }
.wallet-step-title small { margin-left: 6px; color: var(--w-muted); font-size: 15px; font-weight: 700; }
.wallet-customs-code-row { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: stretch; height: 56px; overflow: hidden; border: 1px solid var(--w-strong); border-radius: 12px; background: var(--w-card); }
.wallet-customs-code-row:focus-within { border: 2px solid var(--w-blue); }
.wallet-customs-code-row[data-format='invalid'] { border: 2px solid var(--w-err); }
.wallet-customs-prefix { display: grid; place-items: center; min-width: 0; min-height: 0; border: 0; border-right: 1px solid var(--w-line); border-radius: 0; background: var(--w-soft); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 22px; font-weight: 800; }
.wallet-root .wallet-field .wallet-customs-code-row .wallet-customs-input, .wallet-root .wallet-field .wallet-customs-code-row .wallet-customs-input:focus-visible { min-height: 0; height: 100%; border: 0; border-radius: 0; box-shadow: none; padding: 0 16px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 22px; font-weight: 700; letter-spacing: .06em; }
.wallet-customs-count { display: flex; align-items: center; padding: 0 16px; color: var(--w-muted); font-size: 15px; font-weight: 700; }
.wallet-customs-code-row[data-format='ok'] .wallet-customs-count { color: var(--w-ok); }
.wallet-customs-code-row[data-format='invalid'] .wallet-customs-count { color: var(--w-err); }
.wallet-customs-format { color: var(--w-muted); font-size: 15px; font-weight: 600; line-height: 1.55; }
.wallet-customs-format[data-format='ok'] { color: var(--w-ok); }
.wallet-customs-format[data-format='invalid'] { color: var(--w-err); }
.wallet-customs-consent { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 12px; min-height: 52px; padding: 10px 16px; border: 1px solid var(--w-line); border-radius: 12px; background: var(--w-page); font-size: 16px; font-weight: 700; line-height: 1.5; cursor: pointer; }
.wallet-customs-consent input { width: 22px; height: 22px; margin: 0; accent-color: var(--w-blue); }
.wallet-consent-more summary { min-height: 36px; display: flex; align-items: center; color: var(--w-blue-ink); font-size: 15px; font-weight: 700; cursor: pointer; }
.wallet-consent-more p { margin: 4px 0 0; color: var(--w-muted); font-size: 15px; line-height: 1.6; }
.wallet-customs-preview { display: grid; gap: 14px; padding: 24px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-customs-preview h4 { margin: 0; font-size: 18px; }
.wallet-customs-preview ol { display: grid; gap: 8px; margin: 0; padding-left: 20px; font-size: 15px; line-height: 1.5; }

/* ── 자료 추가·상세·설정 화면 ───────────────────────────────────────────── */
.wallet-page-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; }
.wallet-page-head h3 { margin: 0; font-size: 24px; letter-spacing: -.02em; }
.wallet-page-head .wallet-back { min-height: 44px; }
.wallet-steps-bar { display: flex; align-items: center; gap: 10px; margin: 0 0 0 auto; padding: 0; list-style: none; }
.wallet-steps-bar li { display: flex; align-items: center; gap: 8px; color: var(--w-muted); font-size: 15px; font-weight: 700; }
.wallet-steps-bar li[aria-current='step'] { color: var(--w-blue-ink); font-weight: 800; }
.wallet-steps-bar b { box-sizing: border-box; width: 28px; height: 28px; display: grid; place-items: center; border: 2px solid var(--w-strong); border-radius: 50%; font-size: 14px; }
.wallet-steps-bar li[aria-current='step'] b { border-color: var(--w-blue); background: var(--w-blue); color: #fff; }
.wallet-steps-bar li[data-done='true'] b { border-color: var(--w-tint); background: var(--w-tint); color: var(--w-blue-ink); }
.wallet-steps-bar i { width: 32px; height: 2px; background: var(--w-line); }
.wallet-editor { box-sizing: border-box; display: grid; gap: 20px; max-width: 760px; padding: 28px 32px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-editor h3 { margin: 0; font-size: 22px; letter-spacing: -.02em; }
.wallet-form-intro { margin: -8px 0 0; color: var(--w-muted); font-size: 15px; line-height: 1.6; }
.wallet-backup-warning { margin: 0; padding: 12px 14px; border-radius: 12px; background: var(--w-soft); color: var(--w-ink); font-size: 15px; line-height: 1.6; }
.wallet-form-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; padding-top: 4px; }
.wallet-form-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 16px; margin: 0 -32px -28px; padding: 16px 32px; border-top: 1px solid var(--w-line); background: var(--w-card); border-radius: 0 0 20px 20px; }
.wallet-form-bar .wallet-form-actions { margin-left: auto; padding: 0; }
.wallet-safe-line { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--w-muted); font-size: 15px; }
.wallet-safe-line svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-password-strength { margin: -10px 0 0; color: var(--w-muted); font-size: 15px; }
.wallet-password-strength[data-strength='weak'] { color: var(--w-err); }
.wallet-password-strength[data-strength='fair'] { color: var(--w-warn); }
.wallet-password-strength[data-strength='strong'] { color: var(--w-ok); }
.wallet-confirm-check { display: flex; align-items: flex-start; gap: 10px; color: var(--w-ink); font-size: 15px; line-height: 1.55; cursor: pointer; }
.wallet-confirm-check input { flex: 0 0 auto; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--w-blue); }

/* 자료 추가: 고르기 → 같은 틀에서 확인하고 저장 */
.wallet-add { max-width: none; }
.wallet-add-intro { display: grid; gap: 6px; }
.wallet-add-intro h4 { margin: 0; font-size: 22px; }
.wallet-add-intro p { margin: 0; color: var(--w-muted); font-size: 16px; }
.wallet-attach-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.wallet-attach-choice { display: flex; align-items: center; gap: 22px; padding: 28px; border: 1px solid var(--w-strong); border-radius: 18px; background: var(--w-card); color: var(--w-ink); font: inherit; text-align: left; cursor: pointer; }
.wallet-attach-choice:first-child { border: 2px solid var(--w-blue); background: var(--w-tint); }
.wallet-attach-choice:hover { border-color: var(--w-blue); }
.wallet-attach-choice:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-attach-choice > span:first-child { width: 68px; height: 68px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 20px; background: var(--w-soft); color: var(--w-ink); }
.wallet-attach-choice:first-child > span:first-child { background: var(--w-blue); color: #fff; }
.wallet-attach-choice svg { width: 32px; height: 32px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-attach-choice strong { display: block; font-size: 20px; }
.wallet-attach-choice small { display: block; margin-top: 6px; color: var(--w-muted); font-size: 15px; line-height: 1.5; }
.wallet-add-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.wallet-add-facts li { display: flex; gap: 12px; padding: 16px 18px; border-radius: 14px; background: var(--w-page); font-size: 15px; line-height: 1.5; }
.wallet-add-facts li b { display: block; font-size: 16px; }
.wallet-add-facts svg { width: 22px; height: 22px; flex: 0 0 auto; fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.wallet-add-facts li[data-tone='ok'] svg { stroke: var(--w-ok); }
.wallet-add-facts li[data-tone='no'] svg { stroke: var(--w-err); }
.wallet-add-facts li[data-tone='info'] svg { stroke: var(--w-ink); stroke-width: 2; }
.wallet-add-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 36px; align-items: start; }
.wallet-add[data-step='start'] .wallet-add-grid { grid-template-columns: minmax(0, 1fr); }
.wallet-add[data-step='start'] :is(.wallet-add-details, .wallet-form-bar .wallet-reason, .wallet-add-save) { display: none !important; }
.wallet-add[data-step='review'] :is(.wallet-add-intro, .wallet-add-facts) { display: none !important; }
.wallet-add-details { display: grid; gap: 22px; }
.wallet-kind-choice { display: grid; gap: 10px; margin: 0; padding: 0; border: 0; }
.wallet-kind-choice legend { margin-bottom: 4px; padding: 0; font-size: 17px; font-weight: 800; }
.wallet-kind-choice legend small { margin-left: 6px; color: var(--w-blue-ink); font-size: 15px; }
.wallet-kind-suggest { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.5; }
.wallet-kind-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.wallet-kind-option { position: relative; box-sizing: border-box; min-height: 64px; display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); cursor: pointer; }
.wallet-kind-option:has(input:checked) { border: 2px solid var(--w-blue); background: var(--w-tint); }
.wallet-kind-option:has(input:focus-visible) { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-kind-option input { width: 20px; height: 20px; margin: 0; flex: 0 0 auto; accent-color: var(--w-blue); }
.wallet-kind-option span { flex: 1 1 auto; display: grid; gap: 2px; }
.wallet-kind-option b { font-size: 16px; }
.wallet-kind-option small { color: var(--w-muted); font-size: 14px; }
.wallet-kind-rec { flex: 0 0 auto; display: inline-flex; align-items: center; height: 26px; padding: 0 9px; border-radius: 999px; background: var(--w-tint); color: var(--w-blue-ink); font-size: 14px; font-weight: 800; }
.wallet-kind-option:has(input:checked) .wallet-kind-rec { background: var(--w-card); }

/* 첨부: 파일 줄 + 미리보기 틀 (사진·PDF 같은 높이) */
.wallet-attach-field { min-width: 0; display: grid; gap: 12px; }
.wallet-attach-label { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.wallet-attach-help { color: var(--w-muted); font-size: 15px; font-weight: 500; line-height: 1.5; }
.wallet-attach { position: relative; min-width: 0; display: grid; gap: 8px; }
.wallet-photo-input { position: absolute; width: 1px !important; min-height: 1px !important; height: 1px; margin: -1px; padding: 0 !important; overflow: hidden; clip-path: inset(50%); border: 0 !important; white-space: nowrap; }
.wallet-attach-zone { box-sizing: border-box; width: 100%; min-width: 0; min-height: 52px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 4px 6px 4px 14px; border: 0; border-radius: 12px; background: var(--w-page); color: inherit; font: inherit; text-align: left; cursor: pointer; appearance: none; }
.wallet-attach-zone[data-state='empty'] { min-height: 80px; padding: 14px; border: 1px dashed var(--w-strong); }
.wallet-attach-zone:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-photo-mark { box-sizing: border-box; width: 52px; height: 44px; display: grid; place-items: center; border: 1px solid var(--w-line); border-radius: 10px; background: var(--w-card); color: var(--w-muted); font-size: 24px; }
.wallet-photo-preview { box-sizing: border-box; width: 52px; height: 40px; border-radius: 8px; object-fit: cover; background: var(--w-card); }
.wallet-photo-copy { min-width: 0; display: grid; gap: 2px; }
.wallet-photo-copy strong { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.wallet-photo-mark, .wallet-photo-preview { grid-column: 1; grid-row: 1; }
.wallet-photo-copy { grid-column: 2; grid-row: 1; }
.wallet-attach-zone:not(:has(> .wallet-photo-mark:not([hidden]), > .wallet-photo-preview:not([hidden]))) .wallet-photo-copy { grid-column: 1 / 3; }
.wallet-attach-change { grid-column: 3; grid-row: 1; display: inline-flex; align-items: center; min-height: 40px; padding: 0 12px; border-radius: 10px; color: var(--w-blue-ink); font-size: 15px; font-weight: 700; white-space: nowrap; }
.wallet-attach-menu { position: absolute; z-index: 5; top: calc(100% + 6px); right: 0; width: min(320px, 100%); display: grid; gap: 4px; padding: 6px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); box-shadow: 0 10px 28px rgba(15, 23, 42, .14); }
.wallet-attach-option { box-sizing: border-box; width: 100%; min-height: 56px; display: grid; gap: 2px; align-content: center; padding: 10px 14px; border: 0; border-radius: 10px; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; appearance: none; }
.wallet-attach-option:hover, .wallet-attach-option:focus-visible { background: var(--w-soft); outline: none; }
.wallet-attach-option strong { font-size: 16px; }
.wallet-attach-option span { color: var(--w-muted); font-size: 14px; font-weight: 400; line-height: 1.45; }
.wallet-attach-field[data-layout='start'] .wallet-attach { display: none; }
.wallet-attach-field[data-layout='review'] .wallet-attach-choices { display: none; }
.wallet-attach-field[data-layout] .wallet-attach-help { display: none; }
.wallet-photo-scanner-host { min-width: 0; }
.wallet-photo-scanner-host:empty { display: none; }

/* Scanner inside the add form: the result in one fixed-height frame, tools under it. */
.wallet-scan-editor { width: 100%; display: grid; gap: 12px; }
.wallet-scan-editor > h3 { margin: 0; color: var(--w-err); font-size: 18px; }
.wallet-scan-status { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.55; }
.wallet-scan-status:empty { display: none; }
.wallet-scan-editor[data-scan-state='review']:not([data-scan-glare='true']) > h3:not([hidden]) ~ .wallet-scan-status { color: var(--w-err); }
.wallet-scan-workspace { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; align-items: start; }
.wallet-scan-pane { min-width: 0; display: grid; gap: 8px; }
.wallet-scan-pane h4 { margin: 0; font-size: 15px; }
.wallet-scan-stage { position: relative; min-width: 0; overflow: hidden; border-radius: 16px; background: #111827; touch-action: none; user-select: none; }
.wallet-scan-source { width: 100%; height: auto; display: block; }
.wallet-scan-outline { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.wallet-scan-outline polygon { fill: rgba(255, 255, 255, .08); stroke: #fff; stroke-width: .8; vector-effect: non-scaling-stroke; }
.wallet-scan-handle { position: absolute; z-index: 2; width: 32px; height: 32px; padding: 0; border: 3px solid #fff; border-radius: 50%; background: #111827; box-shadow: 0 2px 10px rgba(0, 0, 0, .35); cursor: grab; touch-action: none; transform: translate(-50%, -50%); }
.wallet-scan-handle:active { cursor: grabbing; }
.wallet-scan-handle:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 3px; }
.wallet-scan-result-pane { position: relative; height: 400px; place-items: center; padding: 20px; box-sizing: border-box; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-soft); }
.wallet-scan-result-pane::before { content: attr(data-badge); position: absolute; left: 14px; top: 14px; display: inline-flex; align-items: center; height: 30px; padding: 0 10px; border: 1px solid var(--w-line); border-radius: 8px; background: var(--w-card); color: var(--w-ink); font-size: 14px; font-weight: 700; }
.wallet-scan-result-pane:not([data-badge])::before { display: none; }
.wallet-scan-result-image { box-sizing: border-box; display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: 8px; box-shadow: 0 8px 22px rgba(16, 24, 40, .12); background: #fff; }
.wallet-scan-warnings { display: grid; gap: 2px; padding: 12px 14px; border: 1px solid var(--w-warn-line); border-radius: 12px; background: var(--w-warn-bg); color: var(--w-warn); font-size: 15px; line-height: 1.5; }
.wallet-scan-warnings:empty { display: none; }
.wallet-scan-warnings p { margin: 0; color: var(--w-ink); }
.wallet-scan-choices, .wallet-scan-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.wallet-root .wallet-scan-choices .consumer-action { min-height: 44px; padding: 0 16px; border-color: var(--w-strong); background: var(--w-card); color: var(--w-ink); font-size: 15px; text-decoration: none; }
.wallet-root .wallet-scan-choices .consumer-action:not(:disabled):hover { background: var(--w-soft); }
.wallet-scan-choices [aria-pressed='true'] { border-color: var(--w-ink); background: var(--w-soft); }
.wallet-scan-actions { justify-content: flex-end; }
.wallet-scan-editor[data-scan-embedded='true'] .wallet-scan-actions { display: none; }
.wallet-pdf-note { display: flex; align-items: center; gap: 10px; margin: 0; padding: 12px 14px; border: 1px solid var(--w-warn-line); border-radius: 12px; background: var(--w-warn-bg); color: var(--w-warn); font-size: 15px; font-weight: 700; }

/* 상세 */
.wallet-detail { display: grid; gap: 20px; }
.wallet-detail-header { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }
.wallet-detail-header h3 { min-width: 0; margin: 0; font-size: 24px; overflow-wrap: anywhere; }
.wallet-detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 420px); gap: 24px; align-items: start; }
.wallet-detail-media { display: grid; gap: 14px; padding: 24px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-detail-images { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; min-height: 280px; padding: 16px; border-radius: 16px; background: var(--w-soft); align-items: center; }
.wallet-detail-images figure { margin: 0; display: grid; justify-items: center; gap: 8px; }
.wallet-detail-images img { display: block; width: auto; max-width: 100%; height: auto; max-height: max(420px, min(70vh, 760px)); object-fit: contain; border-radius: 10px; transition: filter .2s ease; }
.wallet-detail-images[data-masked='true'] img { filter: blur(14px) saturate(.7); }
.wallet-detail-images figcaption { color: var(--w-muted); font-size: 14px; text-align: center; }
.wallet-detail-zoomed { max-height: 80vh; overflow: auto; justify-items: start; }
.wallet-detail-zoomed figure { justify-items: start; }
.wallet-detail-zoomed img { max-width: none; max-height: none; }
.wallet-detail-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.wallet-detail-tools small { margin-left: auto; color: var(--w-muted); font-size: 14px; }
.wallet-detail-info { display: grid; gap: 16px; padding: 24px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-detail-info h4 { margin: 0; font-size: 20px; }
.wallet-detail-facts { display: grid; grid-template-columns: 88px minmax(0, 1fr); margin: 0; font-size: 16px; }
.wallet-detail-facts dt, .wallet-detail-facts dd { padding: 12px 0; border-bottom: 1px solid var(--w-soft); }
.wallet-detail-facts dt { color: var(--w-muted); }
.wallet-detail-facts dd { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-weight: 700; overflow-wrap: anywhere; white-space: pre-wrap; }
.wallet-detail-facts .wallet-text-action { min-height: 32px; padding: 0 6px; font-size: 15px; }
.wallet-detail-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.wallet-detail-actions .consumer-action { width: 100%; }
.wallet-detail-danger { padding-top: 16px; border-top: 1px solid var(--w-line); }
.wallet-detail-shape-status { margin: 0; color: var(--w-ok); font-size: 15px; font-weight: 700; }
.wallet-detail-shape-status:empty { display: none; }
.wallet-card-note { margin: 0; white-space: pre-wrap; }
.wallet-edit-photo { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.wallet-edit-photo img { width: 96px; height: 64px; object-fit: contain; border-radius: 8px; background: var(--w-soft); }

/* 대화상자: PC는 가운데, 휴대폰은 아래에서 */
.wallet-dialog-backdrop { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: 16px; background: var(--w-scrim); }
.wallet-dialog { box-sizing: border-box; width: min(520px, 100%); max-height: calc(100svh - 32px); overflow: auto; display: grid; gap: 18px; padding: 28px; border-radius: 20px; background: var(--w-card); color: var(--w-ink); box-shadow: 0 24px 60px rgba(0, 0, 0, .25); }
.wallet-dialog h3 { margin: 0; font-size: 22px; }
.wallet-dialog > p { margin: -6px 0 0; color: var(--w-muted); font-size: 16px; line-height: 1.55; }
.wallet-kind-list { display: grid; gap: 8px; }
.wallet-kind-list .wallet-kind-option { min-height: 56px; }
.wallet-kind-now { color: var(--w-muted); font-size: 14px; font-weight: 700; }
.wallet-delete-confirm { display: grid; gap: 14px; }
.wallet-delete-confirm > p { margin: 0; font-size: 16px; line-height: 1.6; }
.wallet-delete-confirm .wallet-form-actions { padding-top: 0; }

/* 설정 */
.wallet-settings-page { display: grid; gap: 20px; }
.wallet-settings-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
.wallet-settings-columns > div { display: grid; gap: 24px; }
.wallet-settings-group { display: grid; overflow: hidden; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-settings-group > h4 { margin: 0; padding: 20px 24px 8px; font-size: 18px; }
.wallet-settings-row { box-sizing: border-box; width: 100%; min-height: 64px; display: flex; align-items: center; gap: 14px; padding: 10px 24px; border: 0; border-top: 1px solid var(--w-soft); background: transparent; color: var(--w-ink); font: inherit; text-align: left; cursor: pointer; }
.wallet-settings-row:not(:disabled):hover { background: var(--w-soft); }
.wallet-settings-row:disabled { cursor: not-allowed; color: var(--w-dis-ink); }
.wallet-settings-row:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: -3px; }
.wallet-settings-row[data-tone='danger'] { color: var(--w-err); }
.wallet-settings-row > span:first-child { width: 40px; height: 40px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 12px; background: var(--w-soft); }
.wallet-settings-row[data-tone='danger'] > span:first-child { background: var(--w-err-bg); }
.wallet-settings-row svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-settings-row > span:nth-child(2) { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; }
.wallet-settings-row b { font-size: 16px; }
.wallet-settings-row small { color: var(--w-muted); font-size: 15px; line-height: 1.45; }
.wallet-settings-row[data-static='true'] { cursor: default; }
.wallet-settings-row[data-static='true']:hover { background: transparent; }
.wallet-settings-row .wallet-share-count { flex: 0 0 auto; display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 999px; background: var(--w-blue); color: #fff; font-size: 14px; font-weight: 800; }
.wallet-settings-row .wallet-share-count:empty { display: none; }
.wallet-settings-help { margin: 4px 16px 16px; padding: 14px 16px; border-radius: 14px; background: var(--w-page); color: var(--w-ink); font-size: 15px; line-height: 1.6; }
.wallet-settings-help b { display: block; margin-bottom: 4px; font-size: 16px; }
.wallet-storage-reassurance { display: grid; gap: 4px; }
.wallet-storage-reassurance strong { font-size: 15px; }
.wallet-storage-reassurance span { color: var(--w-muted); font-size: 15px; line-height: 1.55; }
.wallet-matrix { display: grid; gap: 12px; padding: 20px 24px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-matrix h4 { margin: 0; font-size: 18px; }
.wallet-matrix [role='row'] { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); padding: 10px 0; border-top: 1px solid var(--w-soft); font-size: 15px; }
.wallet-matrix [role='row']:first-of-type { border-top: 0; color: var(--w-muted); font-weight: 700; }
.wallet-matrix [role='cell'], .wallet-matrix [role='columnheader'] { text-align: center; }
.wallet-matrix [role='rowheader'] { font-weight: 700; }
.wallet-matrix [data-in='true'] { color: var(--w-ok); font-weight: 800; }
.wallet-matrix [data-in='false'] { color: var(--w-muted); font-weight: 700; }

@media (max-width: 1100px) {
  .wallet-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .wallet-kind-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .wallet-gate { grid-template-columns: minmax(0, 1fr); width: min(100%, 520px); }
  .wallet-lock-info { padding: 32px 28px 24px; }
  .wallet-lock-points, .wallet-lock-help { display: none; }
  .wallet-pin-form { padding: 24px 28px 32px; }
  .wallet-add-grid, .wallet-detail-layout, .wallet-life-grid, .wallet-settings-columns { grid-template-columns: minmax(0, 1fr); }
  .wallet-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wallet-add-facts { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  .wallet-gate { width: 100%; margin: 0; border: 0; border-radius: 0; box-shadow: none; background: transparent; }
  .wallet-lock-info { align-items: center; gap: 10px; padding: 8px 0 0; background: transparent; text-align: center; }
  .wallet-lock-mark { width: 56px; height: 56px; background: var(--w-tint); }
  .wallet-lock-mark svg { width: 28px; height: 28px; }
  .wallet-gate h3 { font-size: 22px; }
  .wallet-lock-info > p { margin: 0; font-size: 16px; }
  .wallet-pin-form { gap: 14px; padding: 16px 0 8px; }
  .wallet-keypad { gap: 8px; }
  .wallet-pin-keyboard-hint { display: none; }
  .wallet-topbar { flex-wrap: nowrap; gap: 6px; }
  .wallet-tabs { flex: 1 1 auto; min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wallet-tab { padding: 0 8px; }
  .wallet-topbar .wallet-toolbar-actions { gap: 2px; }
  .wallet-topbar .wallet-toolbar-actions .wallet-action-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .wallet-root .wallet-topbar .wallet-toolbar-actions .consumer-action { min-width: 44px; min-height: 44px; padding: 0 !important; border-color: transparent; background: transparent; }
  .wallet-shell { gap: 14px; }
  .wallet-filters { flex-wrap: nowrap; overflow-x: auto; margin-right: -20px; padding-right: 20px; scrollbar-width: none; }
  .wallet-filters::-webkit-scrollbar { display: none; }
  .wallet-items { gap: 12px; }
  .wallet-toolbar { order: 10; position: sticky; bottom: 0; z-index: 4; margin: 0 -20px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); border-top: 1px solid var(--w-line); background: var(--w-card); }
  .wallet-search { flex: 1 1 auto; }
  .wallet-toolbar .wallet-add-action { padding: 0 16px; }
  .wallet-add-label-desktop { display: none; }
  .wallet-grid { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .wallet-item { flex-direction: row; align-items: center; gap: 12px; padding: 10px 12px 10px 10px; }
  .wallet-item-thumb { flex: 0 0 96px; height: 64px; padding: 4px; border-radius: 10px; }
  .wallet-item-photo[data-masked='true'] { filter: blur(5px) saturate(.7); }
  .wallet-item-veil { left: auto; top: auto; right: 4px; bottom: 4px; transform: none; width: 26px; height: 26px; padding: 0; justify-content: center; }
  .wallet-item-veil .wallet-veil-text, .wallet-item-format, .wallet-item-hide { display: none; }
  .wallet-item-open { flex: 1 1 auto; min-width: 0; padding: 4px 0; grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .wallet-item-open:hover { background: transparent; }
  .wallet-item-line { display: grid; grid-template-columns: minmax(0, 1fr); justify-content: stretch; gap: 4px; }
  .wallet-item-meta { display: flex; align-items: center; gap: 6px; font-size: 14px; }
  .wallet-item-meta .wallet-kind-badge { height: 22px; padding: 0 7px; }
  .wallet-item-line .wallet-kind-badge { display: none; }
  .wallet-item-meta-kind { display: inline-flex !important; }
  .wallet-item-chevron { display: block; width: 18px; height: 18px; fill: none; stroke: var(--w-muted); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
  .wallet-empty, .wallet-kind-empty { padding: 28px 18px 22px; gap: 16px; }
  .wallet-empty h3 { font-size: 22px; }
  .wallet-kind-tiles { gap: 10px; }
  .wallet-kind-tile { gap: 8px; padding: 16px; background: var(--w-card); }
  .wallet-kind-tile strong { font-size: 17px; }
  .wallet-kind-tile span { font-size: 14px; }
  .wallet-kind-hint { flex-direction: column; align-items: stretch; }
  .wallet-editor { padding: 18px 16px; border-radius: 16px; }
  .wallet-form-bar { position: sticky; bottom: 0; z-index: 4; margin: 0 -16px -18px; padding: 10px 12px calc(12px + env(safe-area-inset-bottom)); border-radius: 0; }
  .wallet-form-bar .wallet-safe-line { display: none; }
  .wallet-form-bar .wallet-form-actions { width: 100%; flex-wrap: nowrap; }
  .wallet-form-bar .wallet-form-actions .consumer-action:last-child { flex: 1 1 auto; }
  .wallet-form-actions { flex-direction: column-reverse; align-items: stretch; }
  .wallet-form-bar .wallet-form-actions { flex-direction: row; }
  .wallet-steps-bar { display: none; }
  .wallet-attach-choices { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .wallet-attach-choice { gap: 16px; padding: 20px 18px; }
  .wallet-attach-choice > span:first-child { width: 56px; height: 56px; }
  .wallet-scan-result-pane { height: 236px; padding: 14px; }
  .wallet-detail-images { min-height: 200px; }
  .wallet-customs, .wallet-detail-media, .wallet-detail-info { padding: 16px; }
  .wallet-customs-number { min-height: 60px; font-size: 22px; }
  .wallet-customs-code-row { grid-template-columns: 48px minmax(0, 1fr) auto; }
  .wallet-root .wallet-field .wallet-customs-code-row .wallet-customs-input { padding: 0 10px; font-size: 19px; }
  .wallet-customs-count { padding: 0 10px; font-size: 14px; }
  .wallet-dialog-backdrop { place-items: end stretch; padding: 0; }
  .wallet-dialog { width: 100%; max-height: 90svh; padding: 20px 16px calc(16px + env(safe-area-inset-bottom)); border-radius: 22px 22px 0 0; }
  .wallet-settings-row { padding: 8px 16px; }
  .wallet-settings-group > h4 { padding: 14px 16px 6px; font-size: 16px; }
  .wallet-matrix { padding: 14px 16px; }
}
@media (prefers-reduced-motion: reduce) { .wallet-item-photo, .wallet-detail-images img { transition: none; } }

/* LIFE-WALLET-SHARE-01: 공유 · 받은 공유 · 보낸 공유 · 내 QR · 자료 공유하기 */
.wallet-share-header { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.wallet-share-header h3 { margin: 0; }
.wallet-share-tabs { display: flex; gap: 8px; flex-wrap: wrap; }
.wallet-share-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.wallet-share-item { display: grid; gap: 6px; padding: 14px 16px; border: 1px solid var(--w-line); border-radius: 14px; }
.wallet-share-item strong { font-size: 16px; overflow-wrap: anywhere; }
.wallet-share-meta { color: var(--w-muted); font-size: 15px; overflow-wrap: anywhere; }
.wallet-share-status { justify-self: start; padding: 2px 10px; border-radius: 999px; font-size: 14px; border: 1px solid var(--w-line); }
.wallet-share-status-pending { font-weight: 700; }
.wallet-share-note, .wallet-share-help, .wallet-share-empty, .wallet-share-loading { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.6; }
.wallet-share-methods, .wallet-share-form { display: grid; gap: 10px; }
.wallet-share-input { width: 100%; min-height: 48px; box-sizing: border-box; font-size: 16px; }
.wallet-share-qr { display: grid; justify-items: center; gap: 8px; }
.wallet-share-qr-image { width: min(260px, 70vw); height: auto; padding: 8px; border-radius: 12px; background: #fff; }
.wallet-share-qr-expired { opacity: .25; }
.wallet-share-camera { width: 100%; max-height: 60vh; border-radius: 14px; background: #000; object-fit: cover; }
.wallet-share-recipient { margin: 0; font-size: 18px; font-weight: 700; overflow-wrap: anywhere; }
.wallet-share-originals { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.wallet-share-original { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; padding-top: 8px; border-top: 1px solid var(--w-line); }
.wallet-share-original-title { font-weight: 600; overflow-wrap: anywhere; }
.wallet-share-safety { display: grid; gap: 2px; margin: 0; padding: 10px 12px; border-radius: 12px; border: 1px solid var(--w-line); font-size: 15px; line-height: 1.55; }
.wallet-share-safety strong { font-size: 16px; letter-spacing: .04em; font-variant-numeric: tabular-nums; }
.wallet-share-safety span { color: var(--w-muted); }
.wallet-share-warning { margin: 0; font-size: 15px; line-height: 1.6; font-weight: 600; }
.wallet-share-confirm { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; line-height: 1.5; min-height: 44px; }
.wallet-share-confirm input { width: 20px; height: 20px; margin: 2px 0 0; flex: none; }

/* LIFE-WALLET-WIFI-CARD-01 — saved Wi-Fi (site-life-wallet-wifi.js) */
.wallet-wifi { box-sizing: border-box; max-width: none; margin: 0; display: grid; gap: 14px; min-width: 0; padding: 26px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-wifi-section-head { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; justify-content: space-between; }
.wallet-wifi-section-head h3 { margin: 0; font-size: 20px; }
.wallet-wifi-card { display: grid; gap: 12px; min-width: 0; padding: 16px 18px; border: 0; border-radius: 16px; background: var(--w-page); }
.wallet-wifi-card-head { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; min-width: 0; }
.wallet-wifi-label { font-size: 18px; color: var(--w-ink); }
.wallet-wifi-ssid { margin: 0; color: var(--w-muted); font-size: 15px; overflow-wrap: anywhere; }
.wallet-wifi-password { margin: 0; color: var(--w-ink); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 17px; letter-spacing: .04em; overflow-wrap: anywhere; }
.wallet-wifi-secret-line { display: grid; gap: 10px; min-width: 0; }
.wallet-wifi-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.wallet-root .wallet-wifi-actions .consumer-action, .wallet-root .wallet-wifi-chips .consumer-action { min-height: 44px; padding: 0 14px; font-size: 15px; }
.wallet-wifi-status, .wallet-wifi-hint { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.6; }
.wallet-wifi-status[data-outcome='copied'] { color: var(--w-ok); font-weight: 700; }
.wallet-wifi-status[data-outcome='manual'], .wallet-wifi-status[data-read='none'] { color: var(--w-warn); font-weight: 700; }
.wallet-wifi-status[data-read='qr'], .wallet-wifi-status[data-read='text'] { padding: 10px 12px; border-radius: 12px; background: var(--w-tint); color: var(--w-ink); font-weight: 700; }
.wallet-wifi-manual { box-sizing: border-box; width: 100%; min-height: 48px; padding: 10px 12px; border: 2px solid var(--w-blue); border-radius: 12px; background: var(--w-card); color: inherit; font: inherit; font-size: 16px; }
.wallet-wifi-screen { max-width: 980px; }
.wallet-wifi-header { display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center; }
.wallet-wifi-header h3 { margin: 0; }
.wallet-wifi-form { display: grid; gap: 18px; min-width: 0; }
.wallet-wifi-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: -8px; }
.wallet-root .wallet-wifi-chips .consumer-action { border-radius: 999px; }
.wallet-root .wallet-wifi-chips .consumer-action[aria-pressed='true'] { border-color: var(--w-blue); background: var(--w-blue); color: #fff; }
.wallet-wifi-password-row { display: flex; gap: 8px; align-items: center; min-width: 0; }
.wallet-wifi-password-row input { flex: 1 1 auto; min-width: 0; }
.wallet-wifi-secret[data-masked='true'] { -webkit-text-security: disc; }
.wallet-wifi-form input[data-read='true'] { background: var(--w-read); }
.wallet-wifi-check { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; line-height: 1.5; }
.wallet-wifi-check input { width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--w-blue); }
.wallet-wifi-advanced { border: 1px solid var(--w-line); border-radius: 12px; padding: 0 14px; }
.wallet-wifi-advanced summary { min-height: 48px; display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 700; cursor: pointer; }
.wallet-wifi-advanced summary small { color: var(--w-muted); font-size: 15px; font-weight: 500; }
.wallet-wifi-advanced[open] { display: grid; gap: 14px; padding-bottom: 14px; }
.wallet-wifi-photo img { display: block; max-width: 100%; max-height: 320px; border: 1px solid var(--w-line); border-radius: 10px; }
.wallet-wifi-methods { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.wallet-wifi-method { display: flex; align-items: center; gap: 18px; padding: 22px; border: 1px solid var(--w-strong); border-radius: 18px; background: var(--w-card); color: var(--w-ink); font: inherit; text-align: left; cursor: pointer; }
.wallet-wifi-method:hover { border-color: var(--w-blue); }
.wallet-wifi-method:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-wifi-method > span:first-child { width: 56px; height: 56px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 16px; background: var(--w-tint); color: var(--w-blue-ink); }
.wallet-wifi-method svg { width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-wifi-method strong { display: block; font-size: 19px; }
.wallet-wifi-method small { display: block; margin-top: 4px; color: var(--w-muted); font-size: 15px; line-height: 1.5; }
.wallet-wifi-qr { justify-self: center; box-sizing: border-box; width: min(78vw, 300px); padding: 16px; border: 1px solid #e4e7ec; border-radius: 18px; background: #fff; }
.wallet-wifi-qr svg { display: block; width: 100%; height: auto; }
.wallet-wifi-qr-ssid { text-align: center; font-size: 16px; font-weight: 700; color: var(--w-ink); }
.wallet-wifi [hidden], .wallet-wifi-screen [hidden] { display: none !important; }
@media (max-width: 600px) {
  .wallet-wifi { padding: 16px; }
  .wallet-wifi-methods { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .wallet-wifi-method { padding: 18px 16px; }
}

/* LIFE-WALLET-REDESIGN-02: 생활정보 카드 머리, 통관부호 등록(① 번호 ② 만료일 ③ 동의)·상세, 와이파이 목록·추가·QR */
.wallet-visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.wallet-life-mark { width: 44px; height: 44px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 12px; background: var(--w-tint); color: var(--w-blue-ink); }
.wallet-life-mark svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-customs-head { justify-content: flex-start; gap: 14px; }
.wallet-customs-head .wallet-text-action, .wallet-wifi-card-head .wallet-text-action { margin-left: auto; }
.wallet-customs-name, .wallet-wifi-name { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; }
.wallet-customs-name small, .wallet-wifi-name small { color: var(--w-muted); font-size: 15px; font-weight: 500; }
.wallet-customs-renewal { display: block; }
.wallet-customs-renewal .wallet-customs-link { margin-left: 4px; }
.wallet-customs-renewal svg, .wallet-customs-expiry svg { width: 18px; height: 18px; margin: 0 6px -3px 0; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-customs-expiry { display: flex; align-items: center; }
.wallet-customs-detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; align-items: start; }
.wallet-customs-panel, .wallet-customs-detail .wallet-customs-official { box-sizing: border-box; display: grid; gap: 16px; padding: 24px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
.wallet-customs-detail .wallet-customs-body, .wallet-customs-detail .wallet-customs-facts { width: 100%; }
.wallet-customs-editor { max-width: none; }
.wallet-customs-form-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.wallet-customs-form-main { min-width: 0; display: grid; gap: 22px; }
.wallet-customs-relation { display: flex; align-items: flex-start; gap: 12px; }
.wallet-customs-relation > div { display: grid; gap: 6px; }
.wallet-customs-relation p { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; font-size: 15px; font-weight: 700; }
.wallet-customs-parts { display: grid; gap: 24px; }
.wallet-customs-part { min-width: 0; display: grid; gap: 10px; }
.wallet-customs-part-head { display: flex; align-items: center; gap: 12px; }
.wallet-customs-part-head b { width: 30px; height: 30px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; background: var(--w-blue); color: #fff; font-size: 15px; font-weight: 800; }
.wallet-customs-part-head > div { display: grid; gap: 2px; }
.wallet-customs-part-head strong { font-size: 17px; }
.wallet-customs-part-head small { color: var(--w-muted); font-size: 14px; font-weight: 500; }
.wallet-customs-part > input[type='date'] { box-sizing: border-box; width: min(100%, 280px); min-height: 48px; padding: 10px 14px; border: 1px solid var(--w-strong); border-radius: 12px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 16px; }
.wallet-customs-part > input[type='date']:focus-visible { outline: none; border-color: var(--w-blue); box-shadow: 0 0 0 3px var(--w-tint-line); }
.wallet-customs-preview-card { display: grid; gap: 6px; padding: 18px; border-radius: 16px; background: var(--w-page); }
.wallet-customs-preview-card small { color: var(--w-muted); font-size: 14px; font-weight: 700; }
.wallet-customs-preview-number { margin: 0; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 22px; font-weight: 700; letter-spacing: .06em; }
.wallet-add-media { min-width: 0; display: grid; gap: 12px; align-content: start; }
.wallet-add-media > .wallet-field { font-size: 16px; font-weight: 800; }
.wallet-edit-replace:empty { display: none; }
.wallet-storage-share-note { color: var(--w-muted); font-size: 15px; line-height: 1.55; }
.wallet-wifi-section-head { flex-wrap: nowrap; justify-content: flex-start; gap: 14px; }
.wallet-wifi-section-head h3 { display: flex; align-items: center; gap: 6px; }
.wallet-root .wallet-wifi-section-head > .consumer-action { margin-left: auto; min-height: 44px; padding: 0 14px; font-size: 15px; white-space: nowrap; }
.wallet-wifi-list { display: grid; gap: 12px; }
.wallet-wifi-card-head { flex-wrap: nowrap; align-items: center; gap: 12px; }
.wallet-wifi-card .wallet-life-mark { width: 40px; height: 40px; background: var(--w-card); }
.wallet-wifi-name .wallet-wifi-ssid { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wallet-wifi-secret-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0; font-size: 15px; }
.wallet-wifi-secret-label { color: var(--w-muted); }
.wallet-root .wallet-wifi-secret-row .wallet-text-action { min-height: 36px; padding: 0 8px; font-size: 15px; }
.wallet-root .wallet-wifi-card > .wallet-wifi-actions .consumer-action { flex: 1 1 0; }
.wallet-wifi-countdown { margin: 0; color: var(--w-muted); font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; text-align: center; }
.wallet-wifi-qr-layout { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 32px; align-items: start; }
.wallet-wifi-qr-side { display: grid; gap: 10px; justify-items: center; }
.wallet-wifi-qr-info { min-width: 0; display: grid; gap: 14px; }
.wallet-wifi-qr-info .wallet-wifi-qr-ssid { text-align: left; font-size: 22px; }
.wallet-wifi-facts { display: grid; grid-template-columns: auto minmax(0, 1fr); margin: 0; font-size: 16px; }
.wallet-wifi-facts dt, .wallet-wifi-facts dd { padding: 10px 0; border-bottom: 1px solid var(--w-soft); }
.wallet-wifi-facts dt { padding-right: 16px; color: var(--w-muted); }
.wallet-wifi-facts dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.wallet-wifi-manage { display: grid; gap: 16px; }
.wallet-wifi-form-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; align-items: start; max-width: 640px; }
.wallet-wifi-form-grid[data-photo='true'] { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); max-width: none; }
.wallet-root .wallet-wifi-password-row .consumer-action { flex: 0 0 auto; min-height: 48px; padding: 0 16px; white-space: nowrap; }
.wallet-wifi-fields { min-width: 0; display: grid; gap: 18px; }
.wallet-wifi-name-field { display: grid; gap: 8px; }
.wallet-wifi-name-field .wallet-wifi-chips { margin-top: 0; }
.wallet-wifi-photo-field { min-width: 0; align-content: start; }
.wallet-wifi-scanner:empty { display: none; }
.wallet-wifi-method[aria-pressed='true'] { border: 2px solid var(--w-blue); background: var(--w-tint); }
.wallet-wifi-form .wallet-field[data-read='true'] input { border-color: var(--w-tint-line); background: var(--w-read); }
.wallet-wifi-form .wallet-field[data-read='true'] > span::after { content: '읽은 값'; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: var(--w-tint); color: var(--w-blue-ink); font-size: 14px; font-weight: 700; }
.wallet-wifi-photo small { display: block; margin-bottom: 6px; color: var(--w-muted); font-size: 14px; font-weight: 700; }
@media (max-width: 900px) {
  .wallet-customs-detail-layout, .wallet-customs-form-grid, .wallet-wifi-form-grid, .wallet-wifi-form-grid[data-photo='true'], .wallet-wifi-qr-layout { grid-template-columns: minmax(0, 1fr); }
  .wallet-wifi-qr-info .wallet-wifi-qr-ssid { text-align: center; }
}
@media (max-width: 600px) {
  .wallet-customs-preview { display: none; }
  .wallet-customs-panel, .wallet-customs-detail .wallet-customs-official { padding: 16px; }
  .wallet-customs-parts { gap: 20px; }
  .wallet-wifi-section-head .wallet-life-mark { display: none; }
}
.wallet-reason svg, .wallet-pdf-note svg, .wallet-steps-bar b svg, .wallet-sort svg, .wallet-kind-hint svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-steps-bar b svg { width: 14px; height: 14px; stroke-width: 3; }
.wallet-edit-replace .wallet-attach-choices { grid-template-columns: minmax(0, 1fr); gap: 10px; }
.wallet-edit-replace .wallet-attach-choice { gap: 14px; padding: 14px 16px; }
.wallet-edit-replace .wallet-attach-choice > span:first-child { width: 48px; height: 48px; border-radius: 14px; }
.wallet-edit-replace .wallet-attach-choice svg { width: 24px; height: 24px; }
.wallet-edit-replace .wallet-attach-choice strong { font-size: 17px; }
@media (prefers-reduced-motion: no-preference) {
  .wallet-toast { animation: wallet-toast-in .18s ease-out; }
  @keyframes wallet-toast-in { from { opacity: 0; transform: translate(-50%, 6px); } to { opacity: 1; transform: translateX(-50%); } }
}

/* LIFE-WALLET-DESIGN-03 (owner-approved design 03, 2026-10-16): the vertical card deck again,
   생활정보 rows under it, 공유 on the wallet, one add button, the safety line in green, no camera on a
   computer, pictures shown as they are. */
.wallet-safe-line, .wallet-form-bar .wallet-safe-line { display: flex; justify-content: center; color: var(--w-ok); font-size: 14px; font-weight: 700; text-align: center; }
.wallet-shell > .wallet-safe-line { margin-top: 4px; }
.wallet-topbar { flex-wrap: nowrap; }
.wallet-topbar-title { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: -.02em; }
.wallet-toolbar-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.wallet-root .wallet-toolbar-share { position: relative; }
.wallet-toolbar-share .wallet-share-count { min-width: 20px; height: 20px; padding: 0 6px; box-sizing: border-box; border-radius: 999px; background: var(--w-err); color: #fff; font-size: 12px; line-height: 20px; }

/* The home: kinds, deck, 생활정보 and the add button (one column on a phone; three on a computer). */
.wallet-home { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: 'filters' 'deck' 'life' 'side'; gap: 18px; }
.wallet-home > .wallet-deck-filters { grid-area: filters; }
.wallet-home > .wallet-deck-shell { grid-area: deck; }
.wallet-home > .wallet-life-box { grid-area: life; }
.wallet-home > .wallet-home-side { grid-area: side; display: grid; gap: 16px; align-content: start; }
.wallet-home-side .wallet-privacy-card { display: none; }
.wallet-root .wallet-add-action { min-height: 54px; width: 100%; font-size: 17px; }
@media (min-width: 1024px) {
  /* LIFE-WALLET-DECK-PHOTO-FACE-01 (owner 10-22 "왜 좌측에 카테고리를 고정시켜서 자리를 차지하게 만들어?", "위로 올리면 되잖아 작게"):
     one column — small kind tabs in a row above the deck, as on a phone; no column of its own. */
  .wallet-home { grid-template-columns: minmax(0, 520px); grid-template-areas: 'filters' 'deck' 'life'; justify-content: center; align-items: start; row-gap: 14px; }
  .wallet-home > .wallet-safe-line { grid-area: life; justify-content: center; }
  .wallet-home > .wallet-home-side { display: none; }
  .wallet-home > .wallet-deck-filters { flex-wrap: wrap; gap: 6px; }
  .wallet-home > .wallet-deck-filters .wallet-deck-filter { min-height: 32px; padding: 0 12px; font-size: 14px; }
  .wallet-home-side .wallet-privacy-card { display: block; }
}
@media (max-width: 1023px) {
  .wallet-shell[data-wallet-layout='deck'] { padding-bottom: 8px; }
  .wallet-home > .wallet-home-side { position: sticky; bottom: 0; z-index: 6; padding: 10px 0 12px; background: var(--w-page); }
}

/* Kind chips (with counts) and the deck. */
.wallet-deck-shell { width: min(460px, 100%); min-width: 0; margin: 0 auto; display: grid; gap: 14px; }
.wallet-deck-filters { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
/* LIFE-WALLET-AUDIT-01: on a phone the five kind chips stay in sight (기타 ran off a 390 px screen
   with no scroll bar to tell): a little smaller, and onto a second row when they still do not fit. */
@media (max-width: 600px) { .wallet-deck-filters { flex-wrap: wrap; gap: 6px; overflow-x: visible; } .wallet-deck-filter { min-height: 36px; padding: 0 11px; font-size: 14px; } }
.wallet-deck-filters::-webkit-scrollbar { display: none; }
.wallet-deck-filter { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; min-height: 40px; padding: 0 14px; border: 1px solid var(--w-line); border-radius: 999px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; }
.wallet-deck-filter[aria-pressed='true'] { border-color: var(--w-blue); background: var(--w-blue); color: #fff; }
.wallet-deck-filter:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-deck { position: relative; width: 100%; aspect-ratio: 85.6 / 53.98; margin-top: 126px; outline: none; touch-action: pan-x; }
.wallet-deck-shell[data-deck-depth='0'] .wallet-deck { margin-top: 4px; }
.wallet-deck-shell[data-deck-depth='1'] .wallet-deck { margin-top: 40px; }
.wallet-deck-shell[data-deck-depth='2'] .wallet-deck { margin-top: 70px; }
.wallet-deck-shell[data-deck-depth='3'] .wallet-deck { margin-top: 98px; }
.wallet-deck:focus-visible { border-radius: 20px; box-shadow: 0 0 0 3px var(--w-tint-line); }
.wallet-deck-card { position: absolute; inset: 0; box-sizing: border-box; display: block; padding: 0; overflow: hidden; border: 1px solid var(--w-line); border-radius: 18px; background: var(--w-soft); color: inherit; font: inherit; cursor: pointer; transform-origin: 50% 0; transition: transform .28s ease, opacity .22s ease, translate .28s ease, scale .28s ease; box-shadow: 0 10px 24px rgba(15, 23, 42, .16); appearance: none; }
.wallet-deck-card[data-depth='0'] { z-index: 5; }
.wallet-deck-card[data-depth='1'] { z-index: 4; translate: 0 -32px; scale: .98; }
.wallet-deck-card[data-depth='2'] { z-index: 3; translate: 0 -62px; scale: .96; }
.wallet-deck-card[data-depth='3'] { z-index: 2; translate: 0 -92px; scale: .94; }
.wallet-deck-card[data-depth='4'] { z-index: 1; translate: 0 -122px; scale: .92; }
.wallet-deck-card[data-depth='5'] { z-index: 0; translate: 0 -122px; scale: .92; opacity: 0; pointer-events: none; }
.wallet-deck[data-dragging='true'] .wallet-deck-card[data-depth='0'] { transition: none; cursor: grabbing; }
.wallet-deck-card[data-category='identity']:not([data-depth='0']) { background: #173e75; color: #fff; }
.wallet-deck-card[data-category='business-card']:not([data-depth='0']) { background: #e9eff9; color: #31405a; }
.wallet-deck-card[data-category='document']:not([data-depth='0']) { background: #e5f4ef; color: #24493c; }
.wallet-deck-card[data-category='other']:not([data-depth='0']) { background: #fff1d4; color: #5a4513; }
.wallet-deck-face { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; overflow: hidden; border-radius: inherit; background: var(--w-soft); }
.wallet-deck-peek-label { position: absolute; z-index: 2; inset: 0 0 auto; box-sizing: border-box; min-height: 34px; display: flex; align-items: center; padding: 8px 18px; background: inherit; font-size: 14px; font-weight: 800; text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; pointer-events: none; }
.wallet-deck-card[data-depth='0'] .wallet-deck-peek-label { opacity: 0; }
.wallet-deck-photo { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; user-select: none; -webkit-user-drag: none; }
.wallet-deck-doc-text { min-width: 0; display: grid; gap: 6px; align-content: center; }
.wallet-deck-doc-text strong { font-size: 17px; line-height: 1.35; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.wallet-deck-doc-text span { color: var(--w-muted); font-size: 14px; }
.wallet-deck-doc-kind { justify-self: start; padding: 2px 10px; border-radius: 999px; border: 1px solid var(--w-line); }
.wallet-deck-doc-thumb { flex: 0 0 auto; height: 92%; max-width: 46%; object-fit: contain; border-radius: 6px; background: #fff; box-shadow: 0 2px 8px rgba(15, 23, 42, .14); user-select: none; -webkit-user-drag: none; }
.wallet-deck-info { display: grid; justify-items: center; gap: 4px; text-align: center; }
.wallet-deck-gesture-hint, .wallet-card-position { color: var(--w-muted); font-size: 14px; }
.wallet-deck-title { font-size: 22px; font-weight: 800; letter-spacing: -.02em; overflow-wrap: anywhere; }
.wallet-root .wallet-deck-open { width: min(240px, 100%); margin-top: 8px; }
.wallet-deck-filter-empty { min-height: 180px; display: grid; place-items: center; margin: 0; color: var(--w-muted); text-align: center; }
@media (prefers-reduced-motion: reduce) { .wallet-deck-card { transition: none; } }

/* 생활정보 rows. */
.wallet-life-box { padding: 14px 16px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); }
.wallet-life-box h3 { margin: 0 0 4px; font-size: 16px; font-weight: 800; }
.wallet-life-box-note { margin: 0 0 4px; color: var(--w-muted); font-size: 14px; }
.wallet-life-rows { display: grid; }
.wallet-life-row { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 0; border: 0; border-top: 1px solid var(--w-line); background: transparent; color: var(--w-ink); font: inherit; font-size: 15px; text-align: left; cursor: pointer; }
.wallet-life-row:first-child { border-top: 0; }
.wallet-life-row-label { flex: 1 1 auto; min-width: 0; }
.wallet-life-row-value { color: var(--w-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
.wallet-life-row[data-tone='add'] .wallet-life-row-value { color: var(--w-blue-ink); font-weight: 700; }
.wallet-life-row[data-tone='error'] .wallet-life-row-value { color: var(--w-err); }
.wallet-life-row svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: var(--w-muted); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-life-row:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; border-radius: 8px; }

/* The promise card (empty wallet; beside the deck on a computer). */
.wallet-privacy-card { padding: 18px; border: 2px solid var(--w-ok-line); border-radius: 18px; background: var(--w-ok-bg); text-align: left; }
.wallet-privacy-card h3 { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--w-ok); font-size: 18px; font-weight: 800; }
.wallet-privacy-card ul { display: grid; gap: 10px; margin: 12px 0 0; padding: 0; list-style: none; }
.wallet-privacy-card li { display: flex; align-items: flex-start; gap: 10px; color: var(--w-ink); font-size: 15px; line-height: 1.5; }
.wallet-privacy-card svg { width: 20px; height: 20px; flex: 0 0 auto; fill: none; stroke: var(--w-ok); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.wallet-empty { align-items: stretch; text-align: left; }
.wallet-empty .wallet-add-first { min-height: 58px; font-size: 18px; }
.wallet-root .wallet-restore-link { align-self: center; font-size: 15px; }
.wallet-empty > .wallet-life-box { margin-top: 4px; }

/* 크게 보기: the picture alone on a dark screen. */
.wallet-fullview { position: fixed; inset: 0; z-index: 1300; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; background: #0b0d10; color: #fff; }
.wallet-fullview-head { display: flex; align-items: center; gap: 8px; padding: 8px 12px; font-size: 18px; }
.wallet-root .wallet-fullview-x { min-width: 44px; min-height: 44px; padding: 0 !important; border-color: transparent; background: transparent; color: #fff; }
.wallet-fullview-stage { display: grid; place-items: center; padding: 8px 12px; overflow: auto; touch-action: pinch-zoom; min-height: 0; }
.wallet-fullview-image { display: block; max-width: 100%; max-height: calc(100vh - 180px); object-fit: contain; border-radius: 12px; }
.wallet-fullview-foot { display: grid; gap: 12px; justify-items: center; padding: 12px 16px 24px; color: #9aa3b0; font-size: 14px; }
.wallet-root .wallet-fullview-close { width: min(420px, 100%); border-color: #3a414c; background: #1b1f25; color: #fff; }

/* Item page. */
.wallet-detail-images { width: 100%; border: 0; cursor: zoom-in; justify-items: center; }
.wallet-detail-media-hint { color: var(--w-muted); font-size: 14px; text-align: center; }
.wallet-detail-media { display: grid; gap: 8px; }
.wallet-root .wallet-detail-zoom { width: 100%; }
.wallet-delete-warning { color: var(--w-err) !important; font-weight: 700; }
.wallet-detail > .wallet-safe-line { margin-top: 16px; }

/* 자료 추가: the kind decided from the picture, the picture kept inside its frame, files dropped. */
.wallet-kind-auto { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 16px; }
.wallet-kind-auto-label { font-weight: 800; }
/* PHOTO-RECOGNIZING-01: the shared spinner under the kind while its words are read (its own display: flex beats [hidden]). */
.wallet-kind-reading { flex-basis: 100%; }
.wallet-kind-reading[hidden] { display: none; }
.wallet-kind-auto-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: var(--w-tint); color: var(--w-blue-ink); font-weight: 800; }
.wallet-kind-auto-chip svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.wallet-kind-auto small { color: var(--w-muted); font-size: 14px; }
.wallet-scan-result-image { max-height: 360px; }
.wallet-attach-choices[data-device='desktop'] { grid-template-columns: minmax(0, 1fr); }
.wallet-attach-choices[data-device='desktop'] .wallet-attach-choice { justify-content: center; padding: 44px 24px; border: 2px dashed var(--w-tint-line); }
.wallet-attach-field[data-drop='over'] .wallet-attach-choice { border-color: var(--w-blue); background: var(--w-tint); }
@media (max-width: 600px) {
  .wallet-scan-result-image { max-height: 208px; }
  .wallet-form-bar .wallet-safe-line { display: flex; }
}

/* Moving screens (파일·맡기기·되살리기) and the 통관번호 form. */
.wallet-move-title { margin: 0; font-size: 22px; font-weight: 800; }
.wallet-move-summary { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); }
.wallet-move-summary > span:first-child { width: 44px; height: 44px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 12px; background: var(--w-tint); color: var(--w-blue); }
.wallet-move-summary svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-move-summary b { display: block; font-size: 16px; }
.wallet-move-summary small { display: block; color: var(--w-muted); font-size: 14px; }
.wallet-move-note { margin: 0; padding: 12px 14px; border-radius: 12px; background: var(--w-warn-bg); color: var(--w-ink); font-size: 15px; line-height: 1.5; }
.wallet-import-pick { display: grid; justify-items: center; gap: 10px; width: 100%; padding: 28px 16px; box-sizing: border-box; border: 2px dashed var(--w-tint-line); border-radius: 18px; background: var(--w-tint); color: var(--w-ink); font: inherit; cursor: pointer; }
.wallet-import-pick:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-import-pick-mark { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 16px; background: var(--w-blue); color: #fff; }
.wallet-import-pick-mark svg { width: 28px; height: 28px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-import-pick strong { font-size: 18px; }
.wallet-import-pick small { color: var(--w-muted); font-size: 14px; }
.wallet-import-chosen { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); font-size: 15px; overflow-wrap: anywhere; }
.wallet-import-chosen > svg { width: 22px; height: 22px; flex: 0 0 auto; fill: none; stroke: var(--w-ok); stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.wallet-import-chosen b { flex: 1 1 auto; min-width: 0; }
.wallet-customs-parts { display: grid; gap: 10px; max-width: 560px; }
.wallet-customs-field-label { font-size: 16px; font-weight: 800; }
.wallet-customs-parts > .wallet-field { margin-top: 12px; }
.wallet-customs-parts > .wallet-customs-consent { display: flex; align-items: center; gap: 10px; margin-top: 12px; font-size: 16px; }
.wallet-settings-help ul { display: grid; gap: 8px; margin: 8px 0 0; padding-left: 18px; font-size: 15px; line-height: 1.55; }
.wallet-storage-reassurance { border: 2px solid var(--w-ok-line); background: var(--w-ok-bg); }
.wallet-storage-reassurance h4 { margin: 0; color: var(--w-ok); font-size: 16px; }
@media (min-width: 1024px) {
  .wallet-home .wallet-life-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: 'label icon' 'value icon'; row-gap: 2px; padding: 10px 0; }
  .wallet-home .wallet-life-row-label { grid-area: label; }
  .wallet-home .wallet-life-row-value { grid-area: value; max-width: none; }
  .wallet-home .wallet-life-row svg { grid-area: icon; align-self: center; }
}
@media (max-width: 600px) { .wallet-safe-line, .wallet-form-bar .wallet-safe-line { font-size: 13px; gap: 6px; } }
.wallet-safe-line-desktop { display: none !important; }
@media (min-width: 1024px) {
  .wallet-safe-line-desktop { display: flex !important; }
  .wallet-home-side > .wallet-safe-line { display: none; }
}
/* 통관번호 꺼내 쓰기 (A11): the number on a dark card, 번호 복사 full width, 번호 바꾸기 and 지우기 side by side. */
.wallet-customs-detail .wallet-customs-panel { display: grid; gap: 14px; max-width: 560px; }
.wallet-customs-detail .wallet-customs-number { margin: 0; padding: 26px 20px; border-radius: 20px; background: #173e75; color: #fff; font-size: 26px; font-weight: 800; letter-spacing: 2px; text-align: left; }
.wallet-customs-detail .wallet-customs-actions { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 10px; }
.wallet-root .wallet-customs-detail .wallet-customs-copy { min-height: 56px; font-size: 17px; }
.wallet-customs-detail .wallet-customs-manage { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; align-items: start; }
.wallet-customs-detail .wallet-customs-manage .wallet-customs-removal { display: contents; }
.wallet-root .wallet-customs-detail .wallet-customs-manage > .consumer-action, .wallet-root .wallet-customs-detail .wallet-customs-manage .wallet-customs-removal > .consumer-action { width: 100%; }
.wallet-customs-detail .wallet-customs-manage .wallet-delete-confirm { grid-column: 1 / -1; }
.wallet-life-row-value { min-width: 0; flex: 0 1 auto; }
.wallet-life-row-label { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wallet-shell { grid-template-columns: minmax(0, 1fr); }
.wallet-empty, .wallet-life-box, .wallet-life-rows, .wallet-life-row { min-width: 0; }
.wallet-customs-detail .wallet-customs-actions { grid-template-columns: minmax(0, 1fr) auto; }
.wallet-customs-detail .wallet-customs-actions .consumer-action { white-space: nowrap; }

/* ── LIFE-WALLET-DESIGN-03-MATCH (2026-10-16): 시안 03과 차이 0 ─────────────── */
/* A01b·A01c·D00 잠금·PIN 만들기: one column, no buttons under the pad. */
.wallet-gate { width: min(100%, 440px); margin: 8px auto 0; grid-template-columns: minmax(0, 1fr); gap: 0; overflow: visible; border: 0; border-radius: 0; box-shadow: none; background: transparent; text-align: center; }
.wallet-gate-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 0 12px; border-bottom: 1px solid var(--w-line); text-align: left; }
.wallet-gate-head h3 { margin: 0; font-size: 20px; line-height: 1.3; letter-spacing: -.02em; }
.wallet-gate-head .wallet-pin-step { color: var(--w-muted); font-size: 16px; font-weight: 700; }
.wallet-gate .wallet-pin-form { padding: 28px 0 0; gap: 14px; }
.wallet-gate .wallet-lock-mark { align-self: center; width: 64px; height: 64px; background: var(--w-tint); }
.wallet-gate-title { margin: 6px 0 0; color: var(--w-ink); font-size: 24px; font-weight: 800; line-height: 1.35; letter-spacing: -.02em; text-align: center; }
.wallet-gate-sub { margin: -6px 0 6px; color: var(--w-muted); font-size: 16px; line-height: 1.5; text-align: center; }
.wallet-gate .wallet-pin-dots { gap: 22px; color: var(--w-blue); }
.wallet-gate .wallet-pin-dot { width: 18px; height: 18px; border-color: var(--w-dis-ink); }
.wallet-gate .wallet-pin-dot[data-filled='true'] { border-color: var(--w-blue); background: var(--w-blue); }
.wallet-gate .wallet-pin-form > .wallet-message { min-height: 24px; }
.wallet-gate .wallet-keypad { gap: 10px; }
.wallet-root .wallet-gate .wallet-keypad .consumer-action { min-height: 64px; border-color: transparent; border-radius: 16px; background: var(--w-card); font-size: 26px; }
.wallet-root .wallet-gate .wallet-keypad .consumer-action:not(:disabled):hover { border-color: transparent; background: var(--w-soft); }
.wallet-root .wallet-gate .wallet-keypad .wallet-key-erase { border-color: transparent; background: transparent; }
.wallet-root .wallet-gate .wallet-keypad .wallet-key-erase svg { width: 28px; height: 28px; }
.wallet-pin-warn { margin: 6px 0 0; color: var(--w-warn); font-size: 16px; font-weight: 800; text-align: center; }
.wallet-gate .wallet-lock-help { display: block; margin: 4px 0 0; text-align: center; }
.wallet-gate .wallet-lock-help summary { justify-content: center; text-decoration: underline; }
.wallet-gate > .wallet-safe-line { justify-content: center; margin: 28px 0 0; padding-top: 14px; border-top: 1px solid var(--w-line); }
@media (pointer: coarse) { .wallet-gate .wallet-pin-keyboard-hint { display: none; } }
@media (min-width: 720px) {
  .wallet-gate .wallet-pin-form { padding: 28px 32px 24px; border: 1px solid var(--w-line); border-radius: 20px; background: var(--w-card); }
  .wallet-root .wallet-gate .wallet-keypad .consumer-action { background: var(--w-soft); min-height: 52px; font-size: 22px; }
  .wallet-root .wallet-gate .wallet-keypad .wallet-key-erase { background: transparent; }
  .wallet-gate-head { border-bottom: 0; }
  .wallet-gate > .wallet-safe-line { border-top: 0; }
}
/* Sub-screens: ‹ + title only, no outer card (the page itself is the screen). */
.wallet-back .wallet-back-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.wallet-root .wallet-back { min-width: 40px; padding: 0 6px; }
.wallet-page-head, .wallet-detail-header { gap: 4px 8px; padding-bottom: 12px; border-bottom: 1px solid var(--w-line); }
.wallet-page-head h3, .wallet-detail-header h3 { font-size: 20px; }
.wallet-editor { max-width: none; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.wallet-form-bar { margin: 0; padding: 16px 0 0; background: transparent; }
.wallet-empty { align-items: stretch; padding: 0; border: 0; border-radius: 0; background: transparent; text-align: left; }
.wallet-empty .wallet-restore-link { align-self: center; }
/* A06·D04 상세 */
.wallet-detail-side { display: grid; gap: 14px; align-content: start; }
.wallet-detail-info { gap: 0; padding: 4px 20px; border-radius: 16px; }
.wallet-detail-facts { grid-template-columns: auto minmax(0, 1fr); }
.wallet-detail-facts dt, .wallet-detail-facts dd { padding: 14px 0; border-bottom: 1px solid var(--w-line); }
.wallet-detail-facts dt:nth-last-of-type(1), .wallet-detail-facts dd:last-of-type { border-bottom: 0; }
.wallet-detail-facts dd { justify-content: flex-end; text-align: right; }
.wallet-detail-facts .wallet-text-action { min-height: 28px; padding: 0 2px; color: var(--w-blue-ink); text-decoration: underline; text-underline-offset: 3px; }
.wallet-detail-buttons { display: grid; gap: 12px; }
.wallet-detail-zoom[hidden] { display: none !important; }
.wallet-detail-danger { display: grid; justify-items: center; padding-top: 4px; border-top: 0; }
.wallet-root .wallet-detail-danger .wallet-danger-action { border-color: transparent; background: transparent; color: var(--w-err); font-weight: 800; }
.wallet-detail-media { padding: 0; border: 0; background: transparent; }
.wallet-detail-images { border-radius: 20px; background: var(--w-soft); }
/* A02 약속 카드: green round checks; A03 공유 with its own outline. */
.wallet-privacy-card li > svg { box-sizing: border-box; width: 24px; height: 24px; padding: 4px; border-radius: 50%; background: var(--w-ok); stroke: var(--w-card); stroke-width: 3; }
.wallet-privacy-card li { align-items: flex-start; }
.wallet-root .wallet-toolbar-share { min-height: 40px; padding: 0 12px; border: 1px solid var(--w-strong); border-radius: 10px; }
@media (min-width: 720px) { .wallet-detail-media-hint { display: none; } }
/* A04·A05·A05b·A05c·D02·D03 자료 추가 */
.wallet-page-head > .wallet-pin-step { margin-left: auto; color: var(--w-muted); font-size: 16px; font-weight: 700; }
.wallet-add[data-step='review'] .wallet-add-side .wallet-add-intro { display: grid !important; }
.wallet-add .wallet-add-intro h4 { font-size: 24px; }
.wallet-add[data-step='review'] .wallet-attach-zone, .wallet-add[data-step='review'] .wallet-add-media > .wallet-field > span:first-child { display: none; }
.wallet-add .wallet-scan-result-pane::before, .wallet-add .wallet-scan-warnings { display: none !important; }
.wallet-add[data-quality='blurry'] .wallet-scan-result-pane { outline: 2px solid var(--w-warn); outline-offset: -2px; border-radius: 18px; }
/* 사진이 흐려요: the 종류·제목 column is hidden then, so the picture takes the whole width (no empty half). */
.wallet-add[data-quality='blurry'] .wallet-add-grid { grid-template-columns: minmax(0, 1fr) !important; }
.wallet-blur-note { display: flex; align-items: center; gap: 8px; margin: 0; color: var(--w-warn); font-size: 15px; font-weight: 700; }
.wallet-blur-note svg { width: 18px; height: 18px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-add-side { display: grid; gap: 18px; align-content: start; }
.wallet-deck-new { position: absolute; right: 14px; top: 46px; z-index: 2; padding: 3px 10px; border-radius: 999px; background: var(--w-blue); color: #fff; font-size: 13px; font-weight: 800; }
.wallet-deck-card[data-new='true'] { box-shadow: 0 0 0 2px var(--w-blue); }
.wallet-shell > .wallet-toast { position: static; transform: none; width: auto; max-width: none; justify-self: stretch; border-radius: 14px; background: var(--w-ink); color: var(--w-card); border-color: transparent; }
@media (max-width: 719px) {
  .wallet-add-grid { grid-template-columns: minmax(0, 1fr) !important; gap: 18px; }
  .wallet-add-side { display: contents; }
  .wallet-add .wallet-add-intro { order: -1; }
  .wallet-add[data-step='start'] .wallet-form-actions { width: 100%; }
  .wallet-add[data-step='start'] .wallet-form-actions .consumer-action { flex: 1; width: 100%; }
  .wallet-add .wallet-form-bar { flex-direction: column; align-items: stretch; }
  .wallet-add .wallet-form-actions { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; }
  .wallet-add[data-step='start'] .wallet-form-actions { grid-template-columns: minmax(0, 1fr); }
}
.wallet-shell > .wallet-toast { background: #1F2328; color: #fff; }
@media (min-width: 720px) {
  .wallet-add[data-step='start'] .wallet-add-grid { max-width: 560px; margin: 8px auto 0; }
  .wallet-add[data-step='start'] .wallet-add-side { order: -1; }
  .wallet-attach-choices[data-device='desktop'] .wallet-attach-choice { flex-direction: column; justify-content: center; gap: 12px; min-height: 260px; padding: 32px; border: 2px dashed var(--w-blue-line, var(--w-strong)); background: var(--w-tint); text-align: center; }
  .wallet-attach-choices[data-device='desktop'] .wallet-attach-choice > span:last-child { display: grid; justify-items: center; gap: 8px; }
  .wallet-attach-or { color: var(--w-muted); font-size: 14px; }
  .wallet-attach-pick { display: inline-flex; align-items: center; min-height: 44px; padding: 0 20px; border-radius: 10px; background: var(--w-blue); color: #fff; font-size: 16px; font-weight: 800; }
  .wallet-add .wallet-add-side .wallet-form-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 10px; max-width: 420px; }
}
/* A10·A11·D05 통관번호 */
.wallet-customs-card { display: grid; gap: 10px; padding: 22px; border-radius: 20px; background: #173E75; color: #fff; }
.wallet-customs-card-label { color: #BFD3F5; font-size: 14px; font-weight: 700; }
.wallet-customs-number-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.wallet-customs-card .wallet-customs-number { margin: 0; color: #fff; font-size: 26px; font-weight: 800; letter-spacing: .06em; white-space: nowrap; }
.wallet-root .wallet-customs-eye { flex: 0 0 auto; width: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 12px; background: rgba(255, 255, 255, .14); color: #fff; }
.wallet-customs-eye svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-customs-card .wallet-customs-expiry { margin: 0; color: #BFD3F5; font-size: 14px; }
.wallet-customs-card .wallet-customs-expiry[data-renewal] { color: #FDE68A; }
.wallet-customs-detail .wallet-customs-body > .wallet-customs-actions { display: grid; grid-template-columns: minmax(0, 1fr); margin-top: 14px; }
.wallet-customs-detail [data-wallet-customs-action='reveal'] { display: none; }
.wallet-customs-detail .wallet-customs-copy svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-customs-panel { display: grid; gap: 12px; padding: 0; border: 0; background: transparent; }
.wallet-customs-manage { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.wallet-customs-manage .wallet-customs-removal, .wallet-customs-manage .wallet-customs-removal > .consumer-action { width: 100%; }
.wallet-customs-status[data-outcome='copied'] { position: sticky; bottom: 12px; margin: 16px 0 0; padding: 14px 16px; border-radius: 14px; background: #1F2328; color: #fff; font-weight: 700; }
.wallet-customs-status[data-outcome='copied']::before { content: '✓  '; color: #4ADE80; }
.wallet-customs-code-row { grid-template-columns: 40px minmax(0, 1fr); border-width: 2px; border-color: var(--w-blue); }
.wallet-customs-prefix { background: transparent !important; border: 0 !important; color: var(--w-blue-ink); font-weight: 800; }
.wallet-customs-format:empty { display: none; }
.wallet-customs-editor .wallet-customs-portal-inline { text-decoration: underline; }
@media (min-width: 720px) {
  .wallet-customs-editor .wallet-customs-parts, .wallet-customs-editor > .wallet-move-title, .wallet-customs-editor > .wallet-form-intro { width: min(100%, 460px); margin-inline: auto; }
  .wallet-customs-editor .wallet-customs-parts > .wallet-form-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 10px; }
}
@media (max-width: 719px) { .wallet-customs-editor .wallet-form-bar .wallet-form-actions, .wallet-customs-editor .wallet-form-bar .wallet-form-actions .consumer-action { width: 100%; } .wallet-customs-editor .wallet-form-bar { flex-direction: column; align-items: stretch; } }
.wallet-customs-detail, .wallet-customs-panel, .wallet-customs-body, .wallet-customs-card, .wallet-customs-number-row { min-width: 0; }
.wallet-customs-card .wallet-customs-number { min-width: 0; padding: 0; border: 0; background: transparent; font-size: clamp(19px, 6.4vw, 28px); letter-spacing: .04em; }
.wallet-customs-code-row .wallet-customs-input { border: 0 !important; box-shadow: none !important; background: transparent; font-size: 18px; font-weight: 700; letter-spacing: .04em; }
.wallet-customs-editor .wallet-customs-consent { padding: 0; border: 0; background: transparent; font-weight: 500; }
/* A12·A13·D06 와이파이 */
.wallet-wifi-form-grid[data-layout] { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
.wallet-wifi-form-grid[data-layout='desktop'] { grid-template-columns: minmax(0, 260px) minmax(0, 1fr); gap: 32px; align-items: start; max-width: 760px; margin: 8px auto 0; }
.wallet-wifi-left { display: grid; gap: 12px; align-content: start; }
.wallet-wifi-right { display: grid; gap: 14px; align-content: start; }
.wallet-wifi-or { margin: 0; font-size: 20px; }
.wallet-root .wallet-wifi-sticker { display: flex; align-items: center; gap: 16px; width: 100%; min-height: 96px; padding: 18px; border: 2px solid var(--w-blue); border-radius: 18px; background: var(--w-card); color: var(--w-ink); font: inherit; text-align: left; cursor: pointer; }
.wallet-wifi-sticker > span:last-child { display: grid; gap: 4px; }
.wallet-wifi-sticker strong { font-size: 18px; }
.wallet-wifi-sticker small { color: var(--w-muted); font-size: 15px; }
.wallet-wifi-sticker .wallet-life-mark { width: 52px; height: 52px; border-radius: 14px; background: var(--w-blue); color: #fff; }
.wallet-wifi-form-grid[data-layout='desktop'] .wallet-wifi-sticker { flex-direction: column; justify-content: center; min-height: 240px; border-style: dashed; border-color: var(--w-blue); background: var(--w-tint); text-align: center; }
.wallet-wifi-form-grid[data-layout='desktop'] .wallet-wifi-sticker .wallet-life-mark { background: var(--w-card); color: var(--w-blue-ink); }
.wallet-wifi-sticker[data-drag='true'] { box-shadow: 0 0 0 3px var(--w-blue); }
.wallet-wifi-read { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border-radius: 14px; background: var(--w-ok-bg, #ECFDF3); }
.wallet-wifi-read[hidden] { display: none; }
.wallet-wifi-read-thumb { width: 56px; height: 40px; object-fit: cover; border-radius: 8px; }
.wallet-wifi-read strong { flex: 1; font-size: 15px; }
.wallet-wifi-read .wallet-text-action { text-decoration: underline; }
.wallet-wifi-fields { display: grid; gap: 14px; }
.wallet-wifi-form-grid[data-layout='desktop'] .wallet-wifi-right .wallet-form-actions { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 10px; }
.wallet-wifi-form .wallet-form-bar .wallet-form-actions, .wallet-wifi-form .wallet-form-bar .wallet-form-actions .consumer-action { width: 100%; }
.wallet-wifi-form .wallet-form-bar { flex-direction: column; align-items: stretch; }
.wallet-wifi-qr-card { display: grid; justify-items: center; gap: 14px; padding: 20px; border: 1px solid var(--w-line); border-radius: 18px; background: var(--w-card); }
.wallet-wifi-qr-card .wallet-wifi-qr { width: min(64vw, 240px); padding: 12px; }
.wallet-wifi-qr-caption { margin: 0; font-size: 16px; font-weight: 800; text-align: center; }
.wallet-wifi-screen > .wallet-wifi-facts { display: grid; grid-template-columns: auto minmax(0, 1fr); margin: 0; padding: 4px 18px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); }
.wallet-wifi-screen > .wallet-wifi-facts dt, .wallet-wifi-screen > .wallet-wifi-facts dd { margin: 0; padding: 14px 0; border-bottom: 1px solid var(--w-line); }
.wallet-wifi-screen > .wallet-wifi-facts dt:last-of-type, .wallet-wifi-screen > .wallet-wifi-facts dd:last-of-type { border-bottom: 0; }
.wallet-wifi-screen > .wallet-wifi-facts dt { color: var(--w-muted); }
.wallet-wifi-screen > .wallet-wifi-facts dd { display: flex; flex-wrap: wrap; min-width: 0; align-items: center; justify-content: flex-end; gap: 10px; font-weight: 800; text-align: right; }
.wallet-wifi-screen > .wallet-wifi-facts dd > span { min-width: 0; overflow-wrap: anywhere; }
.wallet-root .wallet-wifi-copy { min-height: 34px; padding: 0 12px; border: 0; border-radius: 10px; background: var(--w-tint); color: var(--w-blue-ink); font-size: 15px; }
.wallet-wifi-manage { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.wallet-wifi-screen { width: 100%; min-width: 0; gap: 14px; }
.wallet-wifi-screen > *, .wallet-wifi-screen .wallet-page-head h3 { min-width: 0; }
.wallet-wifi-screen .wallet-page-head h3 { overflow-wrap: anywhere; }
.wallet-wifi-screen > .wallet-safe-line { justify-content: center; margin-top: 12px; }
.wallet-wifi-status[data-outcome='copied'] { padding: 12px 14px; border-radius: 14px; background: #1F2328; color: #fff; font-weight: 700; }
@media (min-width: 720px) { .wallet-wifi-screen > :is(.wallet-wifi-qr-card, .wallet-wifi-facts, .wallet-wifi-manage, .wallet-wifi-status) { width: min(100%, 440px); justify-self: center; box-sizing: border-box; } }
.wallet-wifi-password-row { position: relative; display: block !important; }
.wallet-wifi-password-row input { padding-right: 52px !important; }
.wallet-root .wallet-wifi-eye { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); width: 44px; min-height: 40px; padding: 0; border: 0; background: transparent; color: var(--w-muted); }
.wallet-wifi-eye svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; }
/* A08 설정 */
.wallet-settings-block { display: grid; gap: 8px; margin-bottom: 18px; }
.wallet-settings-label { margin: 0 4px; color: var(--w-muted); font-size: 15px; font-weight: 800; }
.wallet-settings-group { border-radius: 16px; }
.wallet-settings-row { min-height: 56px; padding: 10px 18px; }
.wallet-settings-group > :first-child { border-top: 0; }
.wallet-settings-row > span:first-child { width: auto; height: auto; flex: 1 1 auto; display: grid; gap: 2px; place-items: start; border-radius: 0; background: transparent !important; }
.wallet-settings-row .wallet-settings-title { font-size: 17px; font-weight: 500; }
.wallet-settings-row b.wallet-settings-title { font-weight: 800; }
.wallet-settings-row[data-tone='danger'] .wallet-settings-title { font-weight: 800; }
.wallet-settings-inline { color: var(--w-muted); font-size: 14px; }
.wallet-settings-info { margin: 0; padding: 14px 18px; border-top: 1px solid var(--w-soft); color: var(--w-muted); font-size: 15px; line-height: 1.6; white-space: pre-line; }
.wallet-settings-help.wallet-storage-reassurance { margin: 0; padding: 18px 20px; border: 2px solid var(--w-ok-line, #A6F4C5); border-radius: 18px; background: var(--w-ok-bg, #ECFDF3); }
.wallet-storage-reassurance h4 { margin: 0; color: var(--w-ok); font-size: 17px; }
.wallet-storage-reassurance ul b { display: inline; margin: 0; font-size: inherit; }
/* A08b·A08c·A08d·A09 */
.wallet-move { gap: 16px; }
.wallet-move-title { margin: 6px 0 0; font-size: 24px; }
.wallet-move .wallet-form-intro { margin: -8px 0 0; color: var(--w-muted); font-size: 16px; line-height: 1.6; }
.wallet-move-warn { margin: 0; color: var(--w-warn); font-size: 15px; font-weight: 800; }
.wallet-move-note { white-space: pre-line; }
.wallet-field-hint-inline { color: var(--w-muted); font-size: 15px; font-weight: 500; }
.wallet-move-bar { flex-direction: column; align-items: stretch; margin-top: 8px; }
.wallet-move-bar .wallet-safe-line { justify-content: center; }
.wallet-move-actions { display: grid !important; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 10px; width: 100%; }
.wallet-move-actions .consumer-action { width: 100%; min-height: 52px; }
.wallet-import-chosen > span { flex: 1; display: grid; gap: 2px; }
.wallet-import-chosen small { color: var(--w-muted); }
.wallet-import-chosen .wallet-text-action { text-decoration: underline; }
.wallet-restore-options { display: grid; gap: 0; margin: 0; padding: 0; border: 0; }
.wallet-restore-options legend { margin: 0 0 12px; padding: 0; color: var(--w-muted); font-size: 15px; font-weight: 800; }
.wallet-restore-option { display: flex; min-height: 68px; align-items: center; gap: 12px; padding: 10px 16px; border: 1px solid var(--w-line); background: var(--w-card); cursor: pointer; }
.wallet-restore-option:nth-of-type(1) { border-radius: 16px 16px 0 0; }
.wallet-restore-option:nth-of-type(2) { border-top: 0; border-radius: 0 0 16px 16px; }
.wallet-restore-option-icon { width: 30px; display: grid; place-items: center; color: var(--w-muted); }
.wallet-restore-option-icon svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-restore-option-text { flex: 1; display: grid; gap: 2px; min-width: 0; }
.wallet-restore-option-text b { font-size: 17px; }
.wallet-restore-option-text small { color: var(--w-muted); font-size: 14px; }
.wallet-restore-option input[type='radio'] { width: 22px; height: 22px; margin: 0; accent-color: var(--w-blue); }
.wallet-restore-password-field { position: relative; }
.wallet-restore-password-field .wallet-field input { width: 100%; padding-right: 52px; }
.wallet-root .wallet-restore-reveal { position: absolute; right: 5px; bottom: 3px; width: 44px; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--w-muted); }
.wallet-restore-reveal svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-restore-hint { margin: -10px 0 0; color: var(--w-muted); font-size: 14px; }
.wallet-server-restore .wallet-move-note { color: var(--w-muted); font-size: 14px; }
@media (max-width: 719px) {
  .wallet-server-restore .wallet-move-actions { grid-auto-flow: row; grid-auto-rows: auto; }
  .wallet-server-restore .wallet-move-actions > .consumer-action:first-child:not(:last-child) { min-height: 32px; border: 0; background: transparent; color: var(--w-muted); }
}
@media (min-width: 720px) { .wallet-move > :not(.wallet-page-head) { width: min(100%, 520px); justify-self: center; box-sizing: border-box; } .wallet-move { justify-items: stretch; } }
/* A06c 지우기 PIN */
.wallet-delete-sheet { position: relative; gap: 12px; text-align: center; }
.wallet-delete-sheet h3 { margin: 0; font-size: 22px; }
/* LIFE-WALLET-WIFI-PAD-WIDTH-01 (live s17, 10-22, owner "이게 디자인이야?" … "이렇게 만들으라고" pointing at the unlock pad):
   the Wi-Fi delete PIN sits on the wide Wi-Fi screen, not in a dialog, so the dialog's see-through keys floated across
   the page. It is the unlock pad itself: white keys, and on a computer the 280 px pad in the middle. */
.wallet-wifi-screen .wallet-delete-sheet { box-sizing: border-box; width: min(100%, 520px); margin-inline: auto; }
.wallet-root .wallet-wifi-screen .wallet-delete-sheet .wallet-keypad .consumer-action { min-height: 64px; border-color: transparent; border-radius: 16px; background: var(--w-card); font-size: 26px; }
.wallet-root .wallet-wifi-screen .wallet-delete-sheet .wallet-keypad .consumer-action:not(:disabled):hover { border-color: transparent; background: var(--w-soft); }
@media (min-width: 720px) {
  .wallet-wifi-screen .wallet-delete-sheet .wallet-keypad { width: min(100%, 280px); margin-inline: auto; gap: 8px; }
  .wallet-root .wallet-wifi-screen .wallet-delete-sheet .wallet-keypad .consumer-action { min-height: 52px; font-size: 22px; }
  .wallet-wifi-screen .wallet-delete-sheet .wallet-delete-cancel { width: min(100%, 280px); justify-self: center; }
}
.wallet-delete-sheet .wallet-delete-warning { margin: -6px 0 0; color: var(--w-muted) !important; font-weight: 500; }
.wallet-delete-pin-label { margin: 6px 0 0; color: var(--w-muted); font-size: 16px; }
.wallet-delete-sheet > .wallet-pin-input { position: absolute; inline-size: 1px; block-size: 1px; min-height: 0; padding: 0; opacity: 0; pointer-events: none; }
.wallet-delete-sheet .wallet-pin-dots { gap: 22px; color: var(--w-ink); }
.wallet-delete-sheet .wallet-pin-dot { width: 18px; height: 18px; border-color: var(--w-dis-ink); }
.wallet-delete-sheet .wallet-pin-dot[data-filled='true'] { border-color: var(--w-ink); background: var(--w-ink); }
.wallet-delete-sheet .wallet-keypad { gap: 10px; margin-top: 6px; }
.wallet-root .wallet-delete-sheet .wallet-keypad .consumer-action { min-height: 56px; border-color: transparent; background: transparent; font-size: 24px; }
.wallet-root .wallet-delete-sheet .wallet-keypad .wallet-key-erase { background: transparent; }
.wallet-root .wallet-delete-sheet .wallet-keypad .wallet-key-erase svg { width: 26px; height: 26px; }
.wallet-delete-sheet .wallet-delete-cancel { width: 100%; margin-top: 6px; }
.wallet-wifi-edit-pin { width: min(100%, 520px); margin: 8px auto 0; padding: 0; }
.wallet-wifi-edit-pin .wallet-wifi-hint { margin: 0 0 4px; text-align: center; }
.wallet-root .wallet-wifi-edit-pin .wallet-keypad .consumer-action { min-height: 64px; border-color: transparent; border-radius: 16px; background: var(--w-card); font-size: 26px; }
.wallet-root .wallet-wifi-edit-pin .wallet-keypad .consumer-action:not(:disabled):hover { border-color: transparent; background: var(--w-soft); }
@media (min-width: 720px) {
  .wallet-wifi-edit-pin .wallet-keypad { width: min(100%, 280px); margin-inline: auto; gap: 8px; }
  .wallet-root .wallet-wifi-edit-pin .wallet-keypad .consumer-action { min-height: 52px; font-size: 22px; }
}
@media (max-width: 719px) {
  .wallet-dialog-backdrop:has(.wallet-delete-sheet) { align-items: end; padding: 0; }
  .wallet-delete-sheet { width: 100%; border-radius: 24px 24px 0 0; padding: 14px 18px 28px; }
  .wallet-delete-sheet::before { content: ''; justify-self: center; width: 44px; height: 5px; border-radius: 3px; background: var(--w-line); }
  .wallet-root .wallet-delete-sheet .wallet-delete-cancel { position: absolute; top: 8px; right: 12px; width: auto; min-height: 32px; padding: 0 6px; border: 0; background: transparent; color: var(--w-muted); font-size: 14px; }
}
/* A06b 크게 보기 */
.wallet-root .wallet-fullview-bright { margin-left: auto; min-height: 36px; padding: 0 10px; border: 0; background: transparent; color: #E5E7EB; font-size: 14px; }
.wallet-fullview-bright svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-fullview[data-bright='true'] .wallet-fullview-stage { background: #fff; }
.wallet-fullview-image { border-radius: 16px; }
@media (max-width: 719px) {
  .wallet-fullview { background: #000; }
  .wallet-fullview-head { padding: 12px 16px; }
  .wallet-root .wallet-fullview-x { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-width: 84px; margin-left: auto; padding: 0 12px !important; border-radius: 999px; background: #252525; font-size: 15px; }
  .wallet-fullview-stage { grid-template-columns: minmax(0, 1fr); min-width: 0; overflow: hidden; }
  .wallet-fullview[data-shape='card'] .wallet-fullview-image { justify-self: center; width: min(calc(100svh - 210px), calc((100vw - 40px) * 1.5)); max-width: none; max-height: none; transform: rotate(90deg); }
  .wallet-fullview-foot { gap: 4px; padding-bottom: 28px; color: #aeb4bf; }
  .wallet-root .wallet-fullview-bright { margin: 0; color: #aeb4bf; }
  .wallet-root .wallet-fullview-close { display: none; }
}
@media (min-width: 720px) { .wallet-home-side .wallet-privacy-card li > svg { display: none; } .wallet-home-side .wallet-privacy-card li::before { content: '•'; margin-right: 6px; } }
/* A07·A07b·A07c 공유 */
.wallet-share { gap: 14px; }
.wallet-share-body { display: grid; gap: 14px; }
.wallet-share-header { display: flex; align-items: center; gap: 8px; padding-bottom: 12px; border-bottom: 1px solid var(--w-line); }
.wallet-share-header h3 { margin: 0; font-size: 20px; }
.wallet-share-header .wallet-back svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-share-segment { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; padding: 4px; border-radius: 14px; background: var(--w-soft); }
.wallet-root .wallet-share-segment .consumer-action { min-height: 44px; border: 0; border-radius: 10px; background: transparent; color: var(--w-muted); font-weight: 700; }
.wallet-root .wallet-share-segment .consumer-action[aria-selected='true'] { background: var(--w-card); color: var(--w-ink); font-weight: 800; box-shadow: 0 1px 2px rgba(16, 24, 40, .1); }
.wallet-share-receive { display: grid; justify-items: center; gap: 8px; padding: 22px 18px; border: 1px solid var(--w-line); border-radius: 18px; background: var(--w-card); text-align: center; }
.wallet-share-receive h4 { margin: 0; font-size: 20px; }
.wallet-share-qr-caption { margin: 0; color: var(--w-muted); font-size: 15px; }
.wallet-share-code-card { display: grid; justify-items: center; gap: 8px; padding: 20px 18px; border: 1px solid var(--w-line); border-radius: 18px; background: var(--w-card); text-align: center; }
.wallet-share-code-card[hidden] { display: none; }
.wallet-share-code-card h4 { margin: 0; color: var(--w-muted); font-size: 15px; }
.wallet-share-lead { margin: 0; color: var(--w-muted); font-size: 15px; line-height: 1.55; }
.wallet-share-lead b { color: var(--w-ink); }
.wallet-share-qr { box-sizing: border-box; width: min(56vw, 210px); aspect-ratio: 1; margin: 8px 0; padding: 10px; border: 1px solid var(--w-line); border-radius: 14px; background: #fff; }
.wallet-share-qr-image { display: block; width: 100%; height: 100%; }
.wallet-share-qr-expired { opacity: .25; }
.wallet-share-left { margin: 0; color: var(--w-muted); font-size: 15px; }
.wallet-share-code { margin: 4px 0 0; font-size: 16px; }
.wallet-share-code b { letter-spacing: .04em; }
.wallet-share-code-note { color: var(--w-muted); font-size: 14px; }
.wallet-share-arrived { display: grid; gap: 10px; padding: 16px 18px; border: 1px solid var(--w-line); border-radius: 18px; background: var(--w-card); }
.wallet-share-arrived[hidden] { display: none; }
.wallet-share-arrived-head { display: flex; align-items: center; justify-content: space-between; }
.wallet-share-arrived-head h4 { margin: 0; font-size: 17px; }
.wallet-share-waiting { padding: 2px 10px; border-radius: 999px; background: var(--w-warn-bg); color: var(--w-warn); font-size: 14px; font-weight: 800; }
.wallet-share-arrived-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.wallet-share-arrived-list .wallet-share-item { display: flex; align-items: center; gap: 10px; padding: 0; border: 0; background: transparent; }
.wallet-share-arrived-text { flex: 1; min-width: 0; display: grid; gap: 2px; }
.wallet-share-arrived-text small { color: var(--w-muted); }
.wallet-share-arrived-actions { display: flex !important; gap: 8px; flex-wrap: nowrap; }
.wallet-share-arrived-actions .consumer-action { min-height: 40px; padding: 0 14px; }
.wallet-share-manage-link { justify-self: center; color: var(--w-muted); text-decoration: underline; }
.wallet-share-send-title { margin: 4px 0 0; font-size: 22px; }
.wallet-share .wallet-share-help { margin: -6px 0 0; color: var(--w-muted); font-size: 15px; }
.wallet-share-scan { position: relative; display: grid; place-items: center; aspect-ratio: 1 / 1.05; overflow: hidden; border-radius: 22px; background: radial-gradient(circle at 50% 40%, #2a3340, #12161c); }
.wallet-share-camera { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.wallet-share-scan-box { position: relative; width: 60%; aspect-ratio: 1; border: 4px solid #fff; border-radius: 12px; clip-path: polygon(0 0, 28% 0, 28% 6%, 72% 6%, 72% 0, 100% 0, 100% 28%, 94% 28%, 94% 72%, 100% 72%, 100% 100%, 72% 100%, 72% 94%, 28% 94%, 28% 100%, 0 100%, 0 72%, 6% 72%, 6% 28%, 0 28%); }
.wallet-share-scan-hint { position: absolute; bottom: 18px; margin: 0; color: #fff; font-size: 15px; font-weight: 800; }
.wallet-share-other { display: flex; justify-content: center; gap: 16px; }
.wallet-share-other .wallet-text-action { color: var(--w-muted); text-decoration: underline; }
.wallet-share-recipient-card { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); }
.wallet-share-recipient-card > div { display: grid; gap: 2px; }
.wallet-share-recipient-card small { color: var(--w-muted); font-size: 14px; }
.wallet-share-person { width: 40px; height: 40px; border-radius: 50%; background: var(--w-tint); }
.wallet-share-sub { margin: 6px 0 0; font-size: 17px; }
.wallet-share-pick { display: grid; margin: 0; padding: 0; overflow: hidden; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); list-style: none; }
.wallet-share-pick li + li { border-top: 1px solid var(--w-line); }
.wallet-share-pick-row { display: flex; align-items: center; gap: 14px; padding: 12px 16px; cursor: pointer; }
.wallet-share-pick-row input { width: 24px; height: 24px; accent-color: var(--w-blue); }
.wallet-share-pick-thumb { width: 52px; height: 36px; border-radius: 8px; background: var(--w-tint); }
.wallet-share-pick-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
.wallet-share-pick-row > span:last-child { display: grid; gap: 2px; }
.wallet-share-pick-row small { color: var(--w-muted); font-size: 14px; }
.wallet-share-prepick-note { margin: 2px 0 0; color: var(--w-muted); font-size: 15px; text-align: center; }
.wallet-share > .wallet-share-safe { justify-content: center; margin-top: 10px; }
@media (min-width: 720px) { .wallet-share > :not(.wallet-share-header) { width: min(100%, 460px); justify-self: center; box-sizing: border-box; } }
.wallet-share-arrived-list > li.wallet-share-item { display: flex !important; flex-direction: row !important; align-items: center; gap: 10px; padding: 0 !important; border: 0 !important; background: transparent !important; }
.wallet-share-camera[hidden] { display: none; }
.wallet-share-person { display: grid; place-items: center; color: var(--w-blue-ink); }
.wallet-share-person svg, .wallet-share [data-wallet-share-send] svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-share-pick-row input[type='checkbox'] { appearance: auto; accent-color: var(--w-blue) !important; }
.wallet-share > .wallet-message { order: 10; }
/* Phone: the screen's buttons and green line sit at the bottom (A04·A05·A08b·A08c·A08d·A09·A10·A12·A07c), the green line alone on read screens (A01b·A06·A11·A13·A07). */
@media (max-width: 719px) {
  .wallet-editor, .wallet-share, .wallet-detail, .wallet-gate { display: flex; flex-direction: column; min-height: calc(100svh - 190px); box-sizing: border-box; }
  .wallet-editor > *, .wallet-share > *, .wallet-detail > * { flex: 0 0 auto; }
  .wallet-editor > .wallet-form-bar, .wallet-share > .wallet-form-bar, .wallet-share > .wallet-share-safe, .wallet-detail > .wallet-safe-line, .wallet-wifi-screen > .wallet-safe-line, .wallet-gate > .wallet-safe-line { margin-top: auto; position: sticky; bottom: 0; z-index: 5; padding-top: 12px; padding-bottom: 12px; background: var(--w-page, var(--w-bg)); }
  .wallet-customs-detail > .wallet-safe-line { margin-top: auto; }
}
.wallet-root .wallet-share-arrived-actions { flex-direction: row !important; width: auto !important; flex: 0 0 auto; }
.wallet-root .wallet-share-arrived-actions .consumer-action { width: auto !important; }
.wallet-root .wallet-share-manage-link { align-self: center; justify-content: center; color: var(--w-muted); font-size: 14px; }
.wallet-share-qr { width: min(46vw, 180px); }
.wallet-share-receive { gap: 6px; padding: 18px 16px; }
@media (max-width: 719px) {
  .wallet-share[data-wallet-share-pick-first] .wallet-share-header { display: block; padding-bottom: 12px; border: 0; }
  .wallet-share[data-wallet-share-pick-first] .wallet-share-header > .wallet-back { position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; clip-path: inset(50%); }
  .wallet-share[data-wallet-share-pick-first] .wallet-share-header h3 { font-size: 28px; font-weight: 800; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-header { display: block; padding: 0 0 6px; border: 0; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-header > .wallet-back { position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; clip-path: inset(50%); }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-header h3 { font-size: 28px; font-weight: 800; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-body { order: 2; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-segment { order: 3; margin-top: 8px; }
  .wallet-share[data-wallet-share-view='receive'] > .wallet-share-safe { order: 4; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-receive { padding: 20px 16px; border: 0; border-radius: 20px; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-qr { width: min(56vw, 220px); margin: 0; border: 0; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-qr-image { padding: 0; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-code { margin: 0; font-size: 24px; font-variant-numeric: tabular-nums; }
  .wallet-share[data-wallet-share-view='receive'] .wallet-share-left { text-align: center; }
}
.wallet-customs-card .wallet-customs-renew-link { color: #fff; text-decoration: underline; }
.wallet-share-camera-note { margin: 0; color: var(--w-muted); font-size: 14px; text-align: center; } .wallet-share-camera-note:empty { display: none; }
.wallet-wifi-form, .wallet-wifi-form-grid, .wallet-wifi-left, .wallet-wifi-right, .wallet-wifi-fields, .wallet-wifi-fields > *, .wallet-wifi-sticker, .wallet-wifi-read { min-width: 0; box-sizing: border-box; }
.wallet-wifi-form .wallet-field input, .wallet-wifi-password-row input { width: 100%; max-width: 100%; box-sizing: border-box; }
@media (max-width: 719px) { .wallet-wifi-form-grid[data-layout='desktop'] { grid-template-columns: minmax(0, 1fr); } }

/* ── LIFE-WALLET-DESIGN-04: PIN 만들기 전 안내 · 잠김 · 새로 만들기 · 본인 확인 · 백업 권유 ── */
.wallet-gate.wallet-intro, .wallet-gate.wallet-blocked { width: min(100%, 520px); grid-template-columns: minmax(0, 1fr); gap: 0; padding: 32px 24px 28px; border: 0; background: transparent; box-shadow: none; text-align: center; justify-items: stretch; }
.wallet-intro > h3, .wallet-blocked > h3 { margin-top: 14px; font-size: 22px; font-weight: 800; }
.wallet-intro > .wallet-gate-sub, .wallet-blocked > .wallet-gate-sub { margin: 6px auto 18px; max-width: 320px; color: var(--w-muted); font-size: 15px; line-height: 1.5; }
.wallet-intro-mark { justify-self: center; align-self: center; width: 60px; height: 60px; display: grid; place-items: center; border-radius: 18px; background: var(--w-ink); color: var(--w-card); }
.wallet-intro-mark svg, .wallet-blocked-mark svg, .wallet-sheet-mark svg, .wallet-intro-icon svg, .wallet-blocked-row-icon svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.wallet-intro-rows { display: grid; padding: 4px 16px; border-radius: 20px; background: var(--w-card); text-align: left; }
.wallet-intro-row { display: flex; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--w-line); }
.wallet-intro-row:last-child { border-bottom: 0; }
.wallet-intro-icon { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border-radius: 12px; background: var(--w-soft); color: var(--w-ink); }
.wallet-intro-icon svg { width: 22px; height: 22px; }
.wallet-intro-row[data-tone='key'] .wallet-intro-icon { background: var(--w-warn-bg); color: var(--w-warn); }
.wallet-intro-row b { display: block; font-size: 16px; line-height: 1.4; }
.wallet-intro-row[data-tone='key'] b { color: var(--w-warn); }
.wallet-intro-row p { margin: 2px 0 0; color: var(--w-muted); font-size: 14px; line-height: 1.45; }
.wallet-intro-agree { display: flex; align-items: flex-start; gap: 10px; margin-top: 14px; padding: 14px 16px; border: 2px solid var(--w-blue); border-radius: 16px; background: var(--w-tint); color: var(--w-ink); font-size: 14.5px; font-weight: 700; line-height: 1.45; text-align: left; cursor: pointer; }
.wallet-intro-agree input { width: 22px; height: 22px; flex: none; margin: 0; accent-color: var(--w-blue); }
body.chat-home-page .wallet-root .wallet-intro-agree input[type='checkbox'] { accent-color: var(--w-blue); }
.wallet-root .wallet-intro-go { align-self: stretch; box-sizing: border-box; width: 100%; margin-top: 16px; min-height: 54px; border-radius: 14px; font-size: 17px; }
.wallet-root .wallet-intro-go:disabled { border-color: var(--w-dis); background: var(--w-dis); color: var(--w-dis-ink); }
.wallet-blocked-mark { justify-self: center; width: 64px; height: 64px; display: grid; place-items: center; border-radius: 50%; background: var(--w-err-bg); color: var(--w-err); }
.wallet-blocked-list { padding: 0; overflow: hidden; border-radius: 18px; background: var(--w-card); text-align: left; }
.wallet-root .wallet-blocked-row { display: flex; align-items: center; gap: 14px; width: 100%; min-height: 64px; padding: 10px 16px; border: 0; border-bottom: 1px solid var(--w-line); border-radius: 0; background: transparent; color: var(--w-ink); text-align: left; }
.wallet-root .wallet-blocked-row:last-child { border-bottom: 0; }
.wallet-blocked-row > span:nth-child(2) { flex: 1; display: grid; }
.wallet-blocked-row small { color: var(--w-muted); font-size: 13px; font-weight: 500; }
.wallet-blocked-row[data-tone='danger'] small { color: var(--w-err); }
.wallet-blocked-row-icon { color: var(--w-muted); }
.wallet-blocked-row-icon svg { width: 22px; height: 22px; }
.wallet-blocked > .wallet-text-action { justify-self: center; margin-top: 12px; }
.wallet-root .wallet-pin-forgot { justify-self: center; align-self: center; min-height: 44px; color: var(--w-muted); font-size: 14px; text-decoration: underline; text-underline-offset: 3px; }
.wallet-sheet-scrim { position: fixed; inset: 0; z-index: 80; background: var(--w-scrim); }
.wallet-sheet { position: fixed; z-index: 81; left: 50%; top: 50%; box-sizing: border-box; display: grid; gap: 8px; width: min(480px, calc(100vw - 32px)); max-height: calc(100vh - 48px); overflow: auto; padding: 26px 28px 24px; border-radius: 20px; background: var(--w-card); color: var(--w-ink); transform: translate(-50%, -50%); box-shadow: 0 -8px 30px rgba(0, 0, 0, .18); text-align: center; }
.wallet-sheet-grab { display: none; width: 40px; height: 5px; margin: 0 auto 4px; border-radius: 3px; background: var(--w-strong); }
.wallet-sheet h3 { margin: 0; font-size: 20px; line-height: 1.4; }
.wallet-sheet-copy { margin: 0 0 8px; color: var(--w-muted); font-size: 14.5px; line-height: 1.55; }
.wallet-sheet-copy b { color: var(--w-ink); }
.wallet-sheet-mark { justify-self: center; width: 52px; height: 52px; display: grid; place-items: center; margin: 4px 0; border-radius: 50%; background: var(--w-tint); color: var(--w-blue); }
.wallet-sheet-mark[data-tone='danger'] { background: var(--w-err-bg); color: var(--w-err); }
.wallet-sheet-mark[data-tone='ok'] { background: var(--w-ok); color: #fff; }
.wallet-root .wallet-sheet-way { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 14px; border: 0; border-radius: 12px; background: var(--w-soft); color: var(--w-muted); font-size: 14px; }
.wallet-root .wallet-sheet-way b { margin-left: auto; color: var(--w-blue-ink); }
.wallet-root .wallet-sheet-way svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-root .wallet-sheet > .consumer-action { min-height: 52px; border-radius: 14px; font-size: 16px; }
.wallet-sheet-wipe-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.wallet-root .wallet-sheet-wipe-actions .consumer-action { width: 100%; min-height: 52px; border-radius: 14px; font-size: 16px; }
.wallet-root .wallet-sheet > .consumer-action svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; margin-right: 6px; }
.wallet-root .wallet-danger-action { border-color: #d92d20; background: #d92d20; color: #fff; }
.wallet-root .wallet-danger-action:not(:disabled):hover { border-color: #b42318; background: #b42318; }
@media (max-width: 600px) {
  .wallet-gate.wallet-intro, .wallet-gate.wallet-blocked { padding: 22px 2px 24px; }
  .wallet-gate.wallet-intro { min-height: calc(100svh - 200px); }
  .wallet-root .wallet-intro-go { width: 100%; margin-top: auto; }
  .wallet-sheet { top: auto; bottom: 0; left: 0; width: 100%; max-height: 92vh; padding: 10px 20px 30px; border-radius: 24px 24px 0 0; transform: none; }
  .wallet-sheet-wipe-actions { grid-template-columns: minmax(0, 1fr); }
  .wallet-sheet-grab { display: block; }
}

/* ── LIFE-WALLET-DESIGN-04: one header (‹ 대화로 · Life Wallet · 탭 · 아이콘 · 자료 넣기) ── */
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: 'back icons' 'title title' 'tabs tabs'; align-items: center; column-gap: 8px; }
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > .site-modal-close { grid-area: back; justify-self: start; }
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > h2 { grid-area: title; margin: 2px 0 14px; font-size: 30px; font-weight: 800; letter-spacing: -.03em; }
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > p:empty { display: none; }
.wallet-head-tabs { grid-area: tabs; display: grid; grid-template-columns: 1fr 1fr; padding: 4px; margin-bottom: 14px; border-radius: 12px; background: var(--w-soft); }
.wallet-head-tabs[hidden], .wallet-head-icons[hidden], .wallet-head-add[hidden] { display: none !important; }
.wallet-root .wallet-head-tab { display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 38px; padding: 0 8px; border: 0; border-radius: 9px; background: transparent; color: var(--w-muted); font-size: 15px; font-weight: 700; }
.wallet-root .wallet-head-tab[aria-selected="true"] { background: var(--w-card); color: var(--w-ink); box-shadow: 0 1px 4px rgba(0, 0, 0, .1); }
.wallet-head-tab em { font-style: normal; font-size: 13px; color: var(--w-muted); }
.wallet-head-icons { grid-area: icons; display: flex; align-items: center; gap: 2px; }
.wallet-root.wallet-head-icons .consumer-action { min-width: 44px; min-height: 44px; padding: 0 !important; border-color: transparent; background: transparent; color: var(--w-ink); }
.wallet-head-icons svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.wallet-head-icons .wallet-toolbar-share { position: relative; }
.wallet-head-icons .wallet-share-count { position: absolute; top: 4px; right: 2px; min-width: 18px; height: 18px; padding: 0 5px; box-sizing: border-box; border-radius: 999px; background: var(--w-err); color: #fff; font-size: 11px; line-height: 18px; }
.wallet-head-add { display: none; }
.wallet-shell > .wallet-storage-count { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
@media (min-width: 1024px) {
  body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header { grid-template-columns: minmax(0, 1fr) auto auto auto; grid-template-areas: 'back back back back' 'title tabs icons add'; }
  body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > h2 { margin-bottom: 18px; }
  .wallet-head-tabs { width: 260px; margin: 0 12px 18px 0; }
  .wallet-head-icons { margin-bottom: 18px; }
  .wallet-head-add { grid-area: add; display: block; margin: 0 0 18px 6px; }
  .wallet-root .wallet-head-add-button { min-height: 44px; padding: 0 18px; border-color: var(--w-blue); border-radius: 12px; background: var(--w-blue); color: #fff; font-size: 15px; }
  .wallet-head-add-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; margin-right: 4px; }
}

/* 첫 화면 (휴대폰): deck — earlier items as tabs above, the front item whole; one safety line; 자료 넣기 kept at the bottom. */
.wallet-home { display: block; }
.wallet-home > .wallet-safe-line { margin: 16px 0 0; color: var(--w-ok); font-size: 13px; }
.wallet-deck-shell { width: 100%; gap: 0; }
.wallet-deck { aspect-ratio: auto; height: auto; min-height: 0; display: flex; flex-direction: column; margin-top: 0 !important; }
.wallet-deck-card { position: relative; inset: auto; translate: none !important; scale: none !important; transition: none; }
.wallet-deck-card:not([data-depth="0"]) { order: 1; display: flex; align-items: center; height: 62px; margin-bottom: -6px; padding: 0 14px; border: 0; border-radius: 16px 16px 0 0; background: var(--w-card) !important; color: var(--w-ink) !important; box-shadow: 0 -2px 10px rgba(16, 24, 40, .06); }
.wallet-deck-card[data-depth="1"] { order: 3; }
.wallet-deck-card[data-depth="2"] { order: 2; }
.wallet-deck-card[data-depth="3"] { order: 1; }
.wallet-deck-card[data-depth="4"], .wallet-deck-card[data-depth="5"] { display: none; }
.wallet-deck-card:not([data-depth="0"]) .wallet-deck-face { position: absolute; inset: auto; left: 14px; top: 17px; width: 44px; height: 28px; border-radius: 6px; }
.wallet-deck-card:not([data-depth="0"]) .wallet-deck-photo, .wallet-deck-card:not([data-depth="0"]) .wallet-deck-doc-thumb { object-fit: cover; height: 100%; max-width: none; width: 100%; box-shadow: none; }
.wallet-deck-card:not([data-depth="0"]) .wallet-deck-doc-text { display: none; }
.wallet-deck-card:not([data-depth="0"]) .wallet-deck-peek-label { position: static; min-height: 0; padding: 0 0 0 58px; background: transparent; font-size: 15px; font-weight: 700; opacity: 1; }
.wallet-deck-card[data-depth="0"] { order: 9; z-index: 5; aspect-ratio: 85.6 / 53.98; padding: 14px; border: 0; border-radius: 18px 18px 0 0; background: var(--w-card); box-shadow: 0 -4px 16px rgba(16, 24, 40, .10); }
.wallet-deck-card[data-depth="0"] .wallet-deck-face { position: relative; inset: auto; width: 100%; height: 100%; border-radius: 14px; }
/* LIFE-WALLET-DECK-PHOTO-FACE-01: the item in front is its picture alone — no white frame, no grey board around it
   ("스크린샷 느낌 안 나게 테두리 자체를 빼", "지금 시안도 여백이 있네"); a page is shown whole, as large as the deck allows. */
.wallet-deck-card[data-depth="0"] { padding: 0; background: transparent; box-shadow: none; }
.wallet-deck-card[data-depth="0"] .wallet-deck-face { background: transparent; border-radius: 0; }
.wallet-deck-card[data-depth="0"] .wallet-deck-photo { border-radius: 14px; }
.wallet-deck-card[data-depth="0"][data-shape="document"] { aspect-ratio: auto; }
/* LIFE-WALLET-TALL-PAGE-SCROLL-01: over a page in front a finger scrolls the screen (pan-x kept it for the card swipe). */
.wallet-deck:has(> .wallet-deck-card[data-depth="0"][data-shape="document"]) { touch-action: pan-y; }
.wallet-deck-card[data-depth="0"][data-shape="document"] .wallet-deck-face { height: auto; padding: 0; }
.wallet-deck-card[data-depth="0"][data-shape="document"] .wallet-deck-photo { width: auto; max-width: 100%; height: auto; max-height: min(62vh, 640px); margin-inline: auto; object-fit: contain; border-radius: 10px; box-shadow: 0 4px 16px rgba(16, 24, 40, .12); }
.wallet-deck-info { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin: 0; padding: 0 14px 16px; border-radius: 0 0 18px 18px; background: var(--w-card); }
.wallet-deck-title { flex: 1 1 auto; min-width: 0; font-size: 18px; text-align: left; }
.wallet-deck-gesture-hint { display: none; }
.wallet-card-position { color: var(--w-muted); font-size: 13px; }
.wallet-root .wallet-deck-open { display: none; }
@media (max-width: 1023px) {
  .wallet-home > .wallet-home-side { position: sticky; bottom: 0; z-index: 6; padding: 12px 0 14px; background: linear-gradient(to bottom, transparent, var(--w-page) 16px); }
  .wallet-root .wallet-add-action { min-height: 54px; border-radius: 14px; }
}

/* 첫 화면 (컴퓨터): 목록 · 상세 두 칸 */
.wallet-desk { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 20px; align-items: start; }
.wallet-desk-list { display: grid; gap: 2px; padding: 8px; border-radius: 20px; background: var(--w-card); }
.wallet-desk-item { display: flex; align-items: center; gap: 14px; padding: 10px; border: 0; border-radius: 14px; background: transparent; color: var(--w-ink); font: inherit; text-align: left; cursor: pointer; }
.wallet-desk-item[aria-current="true"] { background: var(--w-tint); }
.wallet-desk-item[aria-current="true"] b { color: var(--w-blue-ink); }
.wallet-desk-thumb { width: 64px; aspect-ratio: 1.586; flex: none; overflow: hidden; border-radius: 6px; background: var(--w-soft); }
.wallet-desk-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.wallet-desk-text { display: grid; min-width: 0; }
.wallet-desk-text b { font-size: 16px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.wallet-desk-text small { color: var(--w-muted); font-size: 13px; }
.wallet-desk-list > .wallet-safe-line { margin: 10px 0 8px; font-size: 13px; }
.wallet-desk-detail { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 28px; padding: 28px; border-radius: 20px; background: var(--w-card); align-items: start; }
.wallet-root .wallet-desk-picture { display: block; padding: 0; border: 0; background: transparent; cursor: zoom-in; }
.wallet-desk-picture img { display: block; width: 100%; border-radius: 16px; box-shadow: 0 6px 18px rgba(16, 24, 40, .16); }
.wallet-desk-info h3 { margin: 4px 0 0; font-size: 22px; }
.wallet-desk-info > p { margin: 6px 0 0; color: var(--w-muted); font-size: 15px; }
.wallet-desk-buttons { display: grid; gap: 8px; margin-top: 22px; }
.wallet-root .wallet-desk-buttons .consumer-action { min-height: 52px; border-radius: 14px; font-size: 16px; }
.wallet-desk-buttons svg, .wallet-danger-text svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; margin-right: 6px; }
.wallet-root .wallet-danger-text { margin-top: 18px; color: var(--w-err); font-weight: 700; }

/* 빈 월렛: 카드 윤곽 · 한 문장 · 버튼 하나 */
.wallet-empty { align-items: center; gap: 0; padding: 8px 0 0; border: 0; background: transparent; text-align: center; }
.wallet-empty-ghost { position: relative; width: 230px; height: 190px; margin: 18px auto 18px; }
.wallet-empty-ghost > span { position: absolute; left: 0; width: 230px; height: 145px; border-radius: 16px; }
.wallet-empty-ghost-back { top: 0; transform: scale(.86); background: var(--w-line); opacity: .7; }
.wallet-empty-ghost-mid { top: 14px; transform: scale(.93); background: var(--w-strong); opacity: .5; }
.wallet-empty-ghost-front { top: 32px; box-sizing: border-box; display: grid; place-items: center; border: 2px dashed #808998; background: var(--w-card); color: var(--w-blue); }
.wallet-empty-ghost-front svg { width: 30px; height: 30px; fill: none; stroke: currentColor; stroke-width: 2; }
.wallet-empty .wallet-empty-copy h3 { font-size: 22px; font-weight: 800; }
.wallet-empty .wallet-empty-copy p { color: var(--w-muted); font-size: 15px; line-height: 1.5; max-width: 330px; margin: 6px auto 0; }
.wallet-root .wallet-empty .wallet-add-first { width: 100%; max-width: 420px; min-height: 54px; margin-top: 18px; border-radius: 14px; font-size: 17px; }
.wallet-root .wallet-empty .wallet-restore-link { margin-top: 10px; color: var(--w-blue-ink); font-weight: 700; }

/* Mounted without the page header (a test page): the tabs and icons sit at the top of the home. */
.wallet-head-inline { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; }
.wallet-head-inline .wallet-head-tabs { flex: 1 1 240px; margin: 0; }
.wallet-head-icons .wallet-action-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
/* 잠김 화면의 줄: 아이콘 칸은 그대로, 글자 칸이 남는 폭을 씀 (설정 줄의 첫 칸 늘림 규칙보다 우선). */
.wallet-root .wallet-blocked-row > .wallet-blocked-row-icon { flex: 0 0 auto; width: 24px; height: auto; display: grid; place-items: center; background: transparent !important; }
.wallet-root .wallet-blocked-row > span:nth-child(2) { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; place-items: start; text-align: left; }

/* ══ LIFE-WALLET-DESIGN-04 (web, 2차): 시안 04 대로 — 머리줄 · 하위 화면 · 설정 · 생활정보 · 덱 ══ */
/* 머리줄: 휴대폰은 ‹ 대화로 글자, 컴퓨터는 뒤로 가기 없음. 하위 화면에서는 큰 제목·탭·아이콘을 숨긴다. */
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > .site-modal-close { display: inline-flex; align-items: center; justify-content: flex-start; width: auto; min-width: 0; height: 44px; min-height: 44px; padding: 0 8px 0 0; margin-left: -2px; border-radius: 10px; background: transparent; color: var(--w-muted); font-size: 0; }
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > .site-modal-close::before { content: ''; flex: none; width: 9px; height: 9px; margin: 0 8px 0 8px; border: solid currentColor; border-width: 0 0 2px 2px; transform: rotate(45deg); }
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > .site-modal-close::after { content: '대화로'; font-size: 15px; font-weight: 600; line-height: 1; }
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header[data-wallet-sub='true'] > h2 { display: none; }
@media (min-width: 1024px) {
  body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header > .site-modal-close { position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; clip-path: inset(50%); }
}
/* 하위 화면 머리: 휴대폰은 큰 제목 하나(뒤로는 위 ‹ 대화로), 컴퓨터는 작은 ‹ Life Wallet 과 큰 제목 */
.wallet-root .wallet-page-head, .wallet-root .wallet-detail-header { display: grid; justify-items: start; gap: 4px; padding: 0 0 14px; border: 0; }
.wallet-root .wallet-page-head h3, .wallet-root .wallet-detail-header h3 { margin: 0; font-size: 28px; font-weight: 800; letter-spacing: -.03em; }
@media (max-width: 1023px) {
  .wallet-root .wallet-page-head > .wallet-back, .wallet-root .wallet-detail-header > .wallet-back { position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0; overflow: hidden; clip-path: inset(50%); }
}
@media (min-width: 1024px) {
  .wallet-root .wallet-page-head > .wallet-back, .wallet-root .wallet-detail-header > .wallet-back { min-height: 28px; padding: 0 4px 0 0; color: var(--w-muted); font-size: 14px; font-weight: 500; }
  .wallet-root .wallet-page-head .wallet-back .wallet-back-label, .wallet-root .wallet-detail-header .wallet-back .wallet-back-label { position: static; width: auto; height: auto; clip: auto; overflow: visible; font-size: 14px; }
  .wallet-root .wallet-back svg { width: 16px; height: 16px; }
}
.wallet-root .wallet-page-head > .wallet-pin-step { position: absolute; right: 0; top: 0; margin: 0; }
/* WALLET-CHANGE-PIN-PAD-01: PIN 바꾸기 keeps its 1 / 3 beside its own title, not clipped at the panel's corner. */
.wallet-root .wallet-change-pin-head { position: relative; }
.wallet-root .wallet-change-pin-head > .wallet-pin-step { top: 50%; transform: translateY(-50%); }

/* 설정: 한 칸, 묶음 3개, 줄마다 아이콘 */
.wallet-settings-page { gap: 0; }
.wallet-settings-column { width: min(100%, 520px); display: grid; gap: 0; }
.wallet-settings-block { gap: 8px; margin-bottom: 18px; }
.wallet-settings-label { margin: 0 4px; color: var(--w-muted); font-size: 13px; font-weight: 700; }
.wallet-settings-group { border: 0; border-radius: 16px; }
.wallet-root .wallet-settings-row { min-height: 54px; gap: 14px; padding: 8px 18px; border-top: 1px solid var(--w-line); font-size: 16px; font-weight: 700; }
.wallet-root .wallet-settings-group > .wallet-settings-row:first-child { border-top: 0; }
.wallet-root .wallet-settings-row > .wallet-settings-icon { width: auto; height: auto; flex: none; display: grid; place-items: center; background: transparent; color: var(--w-muted); }
.wallet-root .wallet-settings-row > .wallet-settings-title { flex: 1 1 auto; min-width: 0; display: block; font-size: 16px; font-weight: 700; text-align: left; }
.wallet-root .wallet-settings-row > .wallet-settings-value { flex: none; color: var(--w-muted); font-size: 14px; font-weight: 500; }
.wallet-root .wallet-settings-row > svg:last-child { width: 18px; height: 18px; color: var(--w-muted); }
.wallet-root .wallet-settings-info { padding: 12px 18px; font-size: 14px; border-top: 1px solid var(--w-line); }
.wallet-settings-column > .wallet-safe-line { justify-content: center; margin: 4px 0 0; }

/* 생활정보: 아이콘 줄 + 오른쪽 알약 */
.wallet-life-box { width: min(100%, 520px); gap: 0; }
@media (min-width: 1024px) { .wallet-life-box { width: min(100%, 460px); } }
.wallet-life-rows { display: grid; overflow: hidden; border-radius: 16px; background: var(--w-card); }
.wallet-root .wallet-life-row { display: flex; align-items: center; gap: 12px; min-height: 58px; padding: 6px 14px 6px 4px; border: 0; border-top: 1px solid var(--w-line); border-radius: 0; background: transparent; color: var(--w-ink); cursor: pointer; }
.wallet-root .wallet-life-row:first-child { border-top: 0; }
.wallet-root .wallet-life-main { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 12px; padding: 4px 8px; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.wallet-life-row-icon { flex: none; display: grid; place-items: center; width: 24px; color: var(--w-muted); }
.wallet-life-row-icon svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.wallet-life-text { min-width: 0; display: grid; gap: 1px; }
.wallet-life-text b { font-size: 15px; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wallet-life-text small { color: var(--w-muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wallet-life-row > svg { width: 18px; height: 18px; flex: none; fill: none; stroke: var(--w-muted); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.wallet-life-row[data-tone='add'] .wallet-life-text b, .wallet-life-row[data-tone='add'] .wallet-life-row-icon { color: var(--w-blue-ink); }
.wallet-life-row[data-tone='error'] .wallet-life-text b { color: var(--w-err); }
.wallet-root .wallet-life-pill { flex: none; min-height: 36px; padding: 0 14px; gap: 6px; border: 0; border-radius: 18px; background: var(--w-soft); color: var(--w-ink); font-size: 13px; font-weight: 800; }
.wallet-root .wallet-life-pill:not(:disabled):hover { background: var(--w-line); border: 0; }
.wallet-life-pill svg { width: 16px; height: 16px; }
.wallet-life-note { margin: 10px 4px 0; color: var(--w-ok); font-size: 14px; font-weight: 700; }
.wallet-life-note[data-tone='error'] { color: var(--w-err); }
.wallet-life-choices { display: grid; gap: 8px; }
.wallet-root .wallet-life-choice { justify-content: flex-start; gap: 12px; min-height: 60px; padding: 8px 14px; text-align: left; }
.wallet-root .wallet-life-choice > svg:last-child { margin-left: auto; width: 18px; height: 18px; }

/* 카드 덱 (휴대폰): 뒤 카드는 위에서부터 다음 자료 순서, 이름은 왼쪽·종류는 오른쪽 */
.wallet-deck-card[data-depth="1"] { order: 1; }
.wallet-deck-card[data-depth="2"] { order: 2; }
.wallet-deck-card[data-depth="3"] { order: 3; }
.wallet-deck-card:not([data-depth="0"]) .wallet-deck-peek-label { flex: 1; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 0 0 58px; }
.wallet-deck-peek-label b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; font-weight: 700; }
.wallet-deck-peek-label small { flex: none; color: var(--w-muted); font-size: 13px; font-weight: 500; }

/* 목록·상세 (컴퓨터) */
.wallet-desk-buttons .consumer-action svg { width: 17px; height: 17px; }

/* PIN 화면: 상자 없이 바탕 위, 검은 점, × 키 (시안 01-09·02-18) */
.wallet-gate.wallet-unlock-gate, .wallet-gate.wallet-setup-gate { width: min(100%, 520px); grid-template-columns: minmax(0, 1fr); border: 0; border-radius: 0; background: transparent; box-shadow: none; overflow: visible; }
.wallet-unlock-gate .wallet-unlock-form { padding: 24px 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.wallet-unlock-gate .wallet-lock-mark { background: var(--w-ink); color: var(--w-card); }
.wallet-unlock-subtitle { margin: -8px 0 0; }
.wallet-pin-form { padding: 24px 0; }
.wallet-pin-dot[data-filled='true'] { width: 16px; height: 16px; }
.wallet-pin-form[data-state='error'] .wallet-pin-dot[data-filled='true'] { background: transparent; width: 16px; height: 16px; }
.wallet-unlock-gate .wallet-pin-dots { color: var(--w-ink); }
.wallet-unlock-gate .wallet-pin-dot[data-filled='true'] { border-color: var(--w-ink); background: var(--w-ink); }
.wallet-unlock-form[data-state='error'] .wallet-pin-dot { width: 16px; height: 16px; border-color: var(--w-err); background: transparent; }
.wallet-unlock-form[data-state='error'] .wallet-unlock-subtitle { display: none; }
.wallet-unlock-form[data-state='error'] .wallet-pin-tries { color: var(--w-err); font-weight: 700; }
.wallet-unlock-form > .wallet-message:empty { display: none; }
@media (max-width: 719px) {
  .wallet-unlock-gate .wallet-lock-mark, .wallet-unlock-desktop-hint { display: none; }
  .wallet-unlock-gate .wallet-keypad { margin-top: max(20px, calc(100svh - 700px)); }
}
@media (min-width: 720px) {
  .wallet-unlock-mobile-hint { display: none; }
  .wallet-root .wallet-unlock-gate .wallet-keypad .consumer-action { background: var(--w-card); }
}
.wallet-pin-wait { min-height: 24px; display: flex; align-items: center; justify-content: center; gap: 7px; margin: 0; color: var(--w-muted); font-size: 15px; font-weight: 600; }
.wallet-pin-wait:empty { display: none; }
.wallet-pin-wait:not(:empty)::before { content: ''; box-sizing: border-box; width: 15px; height: 15px; border: 2px solid currentColor; border-radius: 50%; background: linear-gradient(currentColor, currentColor) center 3px / 1px 5px no-repeat; }
.wallet-reset-mark { display: none; }
.wallet-restore-success { box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between; align-items: center; width: min(100%, 520px); min-height: min(640px, calc(100svh - 150px)); margin: 0 auto; padding: 80px 20px 28px; text-align: center; }
.wallet-restore-success-content { display: grid; justify-items: center; width: 100%; }
.wallet-restore-success-mark { display: grid; place-items: center; width: 72px; height: 72px; margin-bottom: 22px; border-radius: 50%; background: var(--w-ok); color: #fff; }
.wallet-restore-success-mark svg { width: 34px; height: 34px; fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.wallet-restore-success h3 { margin: 0; font-size: 24px; font-weight: 800; line-height: 1.35; }
.wallet-restore-success-copy { margin: 12px 0 0; color: var(--w-muted); font-size: 16px; line-height: 1.5; }
.wallet-restore-success-wifi { display: flex; align-items: flex-start; gap: 8px; max-width: 330px; margin: 34px 0 0; color: var(--w-muted); font-size: 15px; line-height: 1.55; text-align: left; }
.wallet-restore-success-wifi svg { flex: none; width: 18px; height: 18px; margin-top: 2px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.wallet-root .wallet-restore-success-open { width: 100%; min-height: 54px; }
@media (max-width: 600px) {
  .wallet-setup-gate .wallet-gate-head { border: 0; justify-content: flex-end; }
  .wallet-setup-gate .wallet-gate-head h3 { display: none; }
  .wallet-setup-gate .wallet-gate-head .wallet-pin-step { margin-left: auto; }
  .wallet-setup-gate[data-wallet-reset] .wallet-reset-mark { display: grid; place-items: center; align-self: center; width: 36px; height: 36px; margin: 20px 0 0; border-radius: 50%; background: var(--w-ok); color: #fff; }
  .wallet-reset-mark svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
  .wallet-restore-success { min-height: calc(100svh - 135px); padding: max(100px, 18vh) 2px calc(18px + env(safe-area-inset-bottom)); }
  .wallet-restore-success-mark { width: 72px; height: 72px; }
}
.wallet-root .wallet-keypad .wallet-key-erase { border-color: transparent; background: transparent; color: var(--w-muted); }
.wallet-key-erase svg { display: none; }
.wallet-key-erase::before { content: '✕'; font-size: 18px; font-weight: 400; line-height: 1; }
.wallet-root .wallet-keypad .consumer-action { min-height: 56px; border-color: transparent; border-radius: 12px; font-size: 24px; font-weight: 600; }
.wallet-pin-form .wallet-safe-line, .wallet-gate > .wallet-safe-line { display: none; }
.wallet-deck-new { display: none !important; }

/* ── 자료 넣기 · 확인하고 저장 (시안 01-03·01-04·02-05·02-06) ── */
.wallet-add-layer { z-index: 1000; }
.wallet-root .wallet-dialog.wallet-add-dialog { width: min(100%, 380px); gap: 12px; padding: 24px 26px 26px; border-radius: 18px; }
.wallet-root .wallet-dialog.wallet-add-dialog[data-step='review'] { width: min(100%, 700px); }
.wallet-add .wallet-add-title { margin: 0; font-size: 20px; font-weight: 800; }
.wallet-add[data-step='start'] .wallet-form-bar, .wallet-add[data-step='start'] .wallet-add-details { display: none !important; }
.wallet-add .wallet-attach-field > .wallet-attach-label, .wallet-add .wallet-attach-field > .wallet-attach-help { display: none; }
/* 끌어다 놓기 칸 (컴퓨터) */
.wallet-add-dialog[data-step='start'] .wallet-attach-choices { grid-template-columns: minmax(0, 1fr); gap: 0; }
.wallet-add-dialog .wallet-attach-choice { flex-direction: column; justify-content: center; gap: 8px; min-height: 190px; padding: 22px 18px; border: 2px dashed var(--w-strong); border-radius: 14px; background: var(--w-card); text-align: center; }
.wallet-add-dialog .wallet-attach-choice:first-child { border: 2px dashed var(--w-strong); background: var(--w-card); }
.wallet-add-dialog .wallet-attach-choice > span:first-child { width: auto; height: auto; background: transparent; color: var(--w-blue); }
.wallet-add-dialog .wallet-attach-choice:first-child > span:first-child { background: transparent; color: var(--w-blue); }
.wallet-add-dialog .wallet-attach-choice svg { width: 26px; height: 26px; }
.wallet-add-dialog .wallet-attach-choice > span:last-child { display: grid; justify-items: center; gap: 10px; }
.wallet-add-dialog .wallet-attach-choice strong { font-size: 15px; font-weight: 700; }
.wallet-add-dialog .wallet-attach-pick { display: inline-flex; align-items: center; min-height: 38px; padding: 0 16px; border: 1px solid var(--w-strong); border-radius: 10px; background: var(--w-card); font-size: 15px; font-weight: 800; }
.wallet-add-dialog .wallet-attach-choice small { margin: 0; color: var(--w-muted); font-size: 12px; }
.wallet-attach-field[data-drop='over'] .wallet-attach-choice { border-color: var(--w-blue); background: var(--w-tint); }
/* 아래 시트 (휴대폰): 타일 두 개 */
@media (max-width: 719px) {
  .wallet-add-layer { place-items: end stretch; padding: 0; }
  .wallet-root .wallet-dialog.wallet-add-sheet { width: 100%; gap: 14px; padding: 10px 16px calc(24px + env(safe-area-inset-bottom)); border-radius: 24px 24px 0 0; }
  .wallet-root .wallet-dialog.wallet-add-sheet[data-step='start'] { min-height: 0; }
  .wallet-add-sheet::before { content: ''; justify-self: center; width: 40px; height: 5px; margin: 0 0 8px; border-radius: 3px; background: var(--w-strong); }
  .wallet-add-sheet .wallet-add-title { font-size: 18px; }
  .wallet-add-sheet[data-step='start'] .wallet-attach-choices { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .wallet-add-sheet .wallet-attach-choice, .wallet-add-sheet .wallet-attach-choice:first-child { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 6px; min-height: 124px; padding: 16px; border: 0; border-radius: 16px; background: var(--w-soft); }
  .wallet-add-sheet .wallet-attach-choice > span:first-child, .wallet-add-sheet .wallet-attach-choice:first-child > span:first-child { width: auto; height: auto; background: transparent; color: var(--w-blue); }
  .wallet-add-sheet .wallet-attach-choice svg { width: 24px; height: 24px; }
  .wallet-add-sheet .wallet-attach-choice strong { font-size: 16px; font-weight: 800; }
  .wallet-add-sheet .wallet-attach-choice small { margin: 2px 0 0; font-size: 13px; }
}
/* 확인하고 저장: 사진 · 종류 칩 · 제목 */
/* LIFE-WALLET-PREVIEW-PLAIN-01 (owner 10-22 "왜 저렇게 여백이 보여?", proposal chosen): the cut picture itself, no dark
   board and no inner margin around it — only a thin line, so nothing reads as a border left on the item. */
.wallet-add .wallet-scan-result-pane { position: relative; height: auto; min-height: 0; padding: 0; border: 1px solid var(--w-line); border-radius: 14px; background: transparent; overflow: hidden; }
.wallet-add .wallet-scan-result-pane::before { content: '' !important; display: none !important; position: absolute; inset: 5px; width: auto; height: auto; padding: 0; border: 0; border-radius: 16px; background:
  linear-gradient(#fff, #fff) left top / 18px 3px no-repeat, linear-gradient(#fff, #fff) left top / 3px 18px no-repeat,
  linear-gradient(#fff, #fff) right top / 18px 3px no-repeat, linear-gradient(#fff, #fff) right top / 3px 18px no-repeat,
  linear-gradient(#fff, #fff) left bottom / 18px 3px no-repeat, linear-gradient(#fff, #fff) left bottom / 3px 18px no-repeat,
  linear-gradient(#fff, #fff) right bottom / 18px 3px no-repeat, linear-gradient(#fff, #fff) right bottom / 3px 18px no-repeat; pointer-events: none; }
.wallet-add .wallet-scan-result-image { max-height: 300px; border-radius: 0; box-shadow: none; }
.wallet-add-dialog[data-step='review'] .wallet-add-grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 22px; }
.wallet-add-details { display: grid; gap: 12px; align-content: start; }
.wallet-kind-auto { display: grid; gap: 8px; }
.wallet-kind-auto-label { color: var(--w-muted); font-size: 13px; font-weight: 700; }
.wallet-kind-auto-label small { margin-left: 4px; color: var(--w-blue-ink); font-size: 12px; font-weight: 800; }
.wallet-kind-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.wallet-root .wallet-kind-chip { min-height: 38px; padding: 0 16px; border: 1px solid var(--w-strong); border-radius: 19px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 14px; font-weight: 800; cursor: pointer; }
.wallet-root .wallet-kind-chip[aria-checked='true'] { border: 2px solid var(--w-blue); background: var(--w-tint); color: var(--w-blue-ink); }
.wallet-add-title-field { gap: 6px; font-size: 13px; font-weight: 700; color: var(--w-muted); }
.wallet-add-title-field input { font-size: 16px; font-weight: 500; color: var(--w-ink); }
.wallet-sharp { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--w-ok); font-size: 13px; font-weight: 800; }
.wallet-sharp svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.wallet-add-dialog .wallet-form-bar { margin: 0; padding: 4px 0 0; border: 0; background: transparent; }
.wallet-add-dialog .wallet-form-actions { margin-left: auto; }
.wallet-add-dialog .wallet-form-actions .consumer-action { min-height: 46px; min-width: 132px; border-radius: 12px; font-size: 15px; }
.wallet-add-dialog .wallet-form-actions .consumer-action svg { width: 16px; height: 16px; }
/* 휴대폰: 확인하고 저장은 쪽 전체 */
@media (max-width: 719px) {
  .wallet-add.wallet-add-page { padding: 0; }
  .wallet-add-page .wallet-form-bar { margin: auto -0px 0; padding: 12px 0 calc(12px + env(safe-area-inset-bottom)); border: 0; background: var(--w-page); }
  .wallet-add-page .wallet-form-actions { width: 100%; grid-template-columns: minmax(0, 1fr); }
  .wallet-add-page .wallet-form-actions .consumer-action { width: 100%; min-height: 54px; border-radius: 14px; font-size: 17px; }
  .wallet-add-page .wallet-scan-result-image { max-height: 240px; }
}
.wallet-root form.wallet-editor.wallet-dialog { max-width: none; padding: 24px 26px 26px; border-radius: 18px; background: var(--w-card); box-shadow: 0 24px 60px rgba(0, 0, 0, .25); }
.wallet-root .wallet-add-dialog .wallet-attach-pick { color: var(--w-ink); }
@media (max-width: 719px) { .wallet-root form.wallet-editor.wallet-dialog { padding: 10px 16px calc(24px + env(safe-area-inset-bottom)); border-radius: 24px 24px 0 0; } .wallet-root form.wallet-editor.wallet-add-page { padding: 0; border-radius: 0; background: transparent; box-shadow: none; } }

/* 시안 04 모바일웹 자료 상세: 사진 다음에 이름·날짜·작업을 배치한다. 종류 변경은 더보기에서 유지한다. */
@media (max-width: 719px) {
  .wallet-detail[data-wallet-view='detail'] { position: relative; padding-top: 48px; }
  .wallet-root .wallet-detail[data-wallet-view='detail'] .wallet-detail-header { height: 0; padding: 0; }
  .wallet-detail[data-wallet-view='detail'] .wallet-detail-header > h3 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .wallet-detail-more { position: fixed; top: 16px; right: 16px; z-index: 50; }
  .wallet-detail-more summary { display: grid; place-items: center; width: 44px; height: 44px; list-style: none; color: var(--w-ink); font-size: 30px; line-height: 1; cursor: pointer; }
  .wallet-detail-more summary::-webkit-details-marker { display: none; }
  /* LIFE-WALLET-AUDIT-01: the menu opens leftward under ⋮ (its 바꾸기 ran 2 px off a 390 px screen). */
  .wallet-detail-more[open] > button { position: absolute; top: 48px; right: 0; display: block; box-sizing: border-box; max-width: calc(100vw - 32px); min-height: 44px; padding: 8px 16px; border: 1px solid var(--w-line); border-radius: 10px; background: var(--w-card); box-shadow: 0 8px 24px rgba(0, 0, 0, .12); white-space: nowrap; }
  .wallet-wifi-more { position: fixed; top: 16px; right: 16px; z-index: 50; }
  .wallet-wifi-more summary { display: grid; place-items: center; width: 44px; height: 44px; list-style: none; color: var(--w-ink); font-size: 30px; line-height: 1; cursor: pointer; }
  .wallet-wifi-more summary::-webkit-details-marker { display: none; }
  .wallet-wifi-more > .wallet-wifi-manage { display: none !important; }
  .wallet-wifi-more[open] > .wallet-wifi-manage { position: absolute; right: 0; top: 44px; display: grid !important; width: 180px; padding: 8px; border: 1px solid var(--w-line); border-radius: 12px; background: var(--w-card); box-shadow: 0 8px 24px rgba(0, 0, 0, .12); }
  .wallet-detail-layout { gap: 12px; }
  .wallet-detail-media { padding: 0; }
  .wallet-detail-images { min-height: 0; padding: 0; background: transparent; }
  .wallet-detail-images img { width: 100%; max-height: 340px; object-fit: contain; }
  .wallet-detail-media-hint, .wallet-detail > .wallet-safe-line { display: none; }
  .wallet-detail-side { gap: 12px; }
  .wallet-detail-summary h3 { margin: 0; font-size: 22px; font-weight: 800; }
  .wallet-detail-summary p { margin: 6px 0 0; color: var(--w-muted); font-size: 14px; }
  .wallet-detail-buttons { gap: 10px; }
  .wallet-root .wallet-detail-zoom { min-height: 54px; }
  .wallet-detail-danger { padding-top: 0; }
}

/* 모바일웹 생활정보 상세: 번호는 기본 가림을 유지하고 시안의 읽기·복사 배치를 따른다. */
@media (max-width: 719px) {
  .wallet-customs-detail .wallet-customs-card { justify-items: center; gap: 18px; padding: 28px 18px; background: var(--w-card); color: var(--w-ink); text-align: center; }
  .wallet-customs-detail .wallet-customs-card-label { display: none; }
  .wallet-customs-use-note { margin: 0; color: var(--w-muted); font-size: 15px; }
  .wallet-customs-detail .wallet-customs-number-row { width: 100%; justify-content: center; }
  .wallet-customs-detail .wallet-customs-card .wallet-customs-number { color: var(--w-ink); font-size: clamp(22px, 6.4vw, 28px); text-align: center; white-space: normal; }
  .wallet-root .wallet-customs-detail .wallet-customs-eye { background: var(--w-soft); color: var(--w-ink); }
  .wallet-customs-detail .wallet-customs-card .wallet-customs-expiry { color: var(--w-muted); text-align: center; }
  .wallet-customs-detail .wallet-customs-card .wallet-customs-renew-link { color: var(--w-blue-ink); }
  .wallet-customs-detail .wallet-customs-body > .wallet-customs-actions { margin-top: 0; }
  .wallet-customs-detail .wallet-customs-manage { grid-template-columns: minmax(0, 1fr); }
  .wallet-customs-detail > .wallet-safe-line { display: none; }
  .wallet-wifi-screen .wallet-wifi-secret { gap: 4px; }
  .wallet-wifi-screen .wallet-wifi-password { margin-right: auto; }
  .wallet-root .wallet-wifi-reveal { min-height: 34px; padding: 0 10px; border: 0; border-radius: 10px; background: var(--w-soft); color: var(--w-ink); font-size: 14px; }
  .wallet-wifi-screen > .wallet-safe-line { display: none; }
}

/* 시안 04 01-09: PC 잠금 키패드는 약 280px 폭으로 가운데 */
@media (min-width: 720px) {
  .wallet-gate .wallet-keypad { width: min(100%, 280px); margin-inline: auto; gap: 8px; }
}

/* 시안 04 01-11: 백업에서 되찾기 대화상자 (컴퓨터) */
.wallet-restore-back { opacity: .5; pointer-events: none; }
.wallet-restore-layer { z-index: 1000; }
.wallet-root .wallet-dialog.wallet-restore-dialog { width: min(100%, 640px); gap: 14px; padding: 26px 28px; border-radius: 18px; }
.wallet-restore-dialog-title { margin: 0; font-size: 18px; font-weight: 800; }
.wallet-restore-dialog-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 22px; align-items: start; }
.wallet-restore-dialog .wallet-restore-options legend { margin-bottom: 8px; font-size: 13px; }
.wallet-restore-dialog .wallet-restore-option { min-height: 56px; padding: 8px 12px; }
.wallet-restore-dialog .wallet-restore-option-text b { font-size: 14px; }
.wallet-restore-dialog .wallet-restore-option-text small { font-size: 12px; }
.wallet-restore-dialog-side { display: grid; gap: 12px; }
.wallet-restore-dialog-side .wallet-restore-hint { margin: -4px 0 0; font-size: 12px; }
.wallet-restore-dialog .wallet-form-actions { justify-content: flex-end; }
.wallet-restore-dialog .wallet-form-actions .consumer-action { min-height: 46px; min-width: 132px; border-radius: 12px; font-size: 15px; }
.wallet-restore-dialog .wallet-form-actions .consumer-action svg { width: 16px; height: 16px; margin-right: 4px; }
.wallet-restore-back { display: grid; justify-items: center; padding-top: 120px; }
.wallet-restore-back .wallet-lock-mark { width: 44px; height: 44px; background: var(--w-err-tint, #fde8e8); color: var(--w-err); }
.wallet-restore-dialog .wallet-field > span { font-size: 12px; font-weight: 500; color: var(--w-muted); }
.wallet-restore-dialog .wallet-pin-input { text-align: left; letter-spacing: 2px; }
.wallet-restore-dialog .wallet-restore-password-field { margin-top: 0; }

/* LIFE-WALLET-INFO-CARD-01: what an item is and until when, read off its picture. Colours are the
   wallet's own tokens, so light and dark follow them; layout, menu and buttons stay as 시안 04. */
.wallet-desk-text small { color: var(--w-ink); font-size: 15px; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.wallet-expiry-badge { display: inline-flex; align-items: center; justify-self: start; width: max-content; max-width: 100%; margin-top: 4px; padding: 2px 8px; border: 1px solid var(--w-warn-line); border-radius: 999px; background: var(--w-warn-bg); color: var(--w-warn); font-size: 13px; font-weight: 800; line-height: 1.5; white-space: nowrap; }
.wallet-expiry-badge[data-wallet-expiry="expired"] { border-color: var(--w-err-line); background: var(--w-err-bg); color: var(--w-err); }
.wallet-deck-card > .wallet-expiry-badge { position: absolute; z-index: 3; top: 8px; right: 12px; margin: 0; }
.wallet-deck-peek-label small { margin-left: 10px; color: var(--w-muted); font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.wallet-deck-doc-info { color: var(--w-ink); font-weight: 700; }
.wallet-card-position { color: var(--w-ink); font-weight: 600; }
.wallet-read-info { display: grid; gap: 4px; margin: 14px 0 4px; padding: 14px 16px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); }
.wallet-read-info-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.wallet-read-info-head h4 { margin: 0; font-size: 15px; color: var(--w-muted); }
.wallet-read-info-head .wallet-text-action { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 6px; color: var(--w-blue-ink); font-size: 15px; font-weight: 700; }
.wallet-read-info-list { display: grid; grid-template-columns: 72px minmax(0, 1fr); margin: 0; font-size: 17px; }
.wallet-read-info-list dt, .wallet-read-info-list dd { padding: 10px 0; border-bottom: 1px solid var(--w-soft); }
.wallet-read-info-list dt:last-of-type, .wallet-read-info-list dd:last-of-type { border-bottom: 0; }
.wallet-read-info-list dt { color: var(--w-muted); font-weight: 600; }
.wallet-read-info-list dd { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0; color: var(--w-ink); font-weight: 800; overflow-wrap: anywhere; }
.wallet-read-info-list dd .wallet-expiry-badge { margin-top: 0; }
.wallet-read-info-list .wallet-text-action { min-height: 44px; padding: 0 4px; color: var(--w-blue-ink); font-size: 15px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.wallet-read-number { font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.wallet-read-missing { color: var(--w-muted); font-weight: 600; }
.wallet-qr-open { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; margin-top: 8px; border-radius: 14px; background: var(--w-blue); color: #fff; font-size: 17px; font-weight: 800; }
.wallet-qr-frame { display: grid; place-items: center; padding: 16px; border-radius: 14px; background: #fff; }
.wallet-qr-frame svg { width: min(72vw, 300px); height: auto; }
.wallet-qr-hint { margin: 8px 0 0; color: var(--w-muted); font-size: 15px; text-align: center; }
.wallet-deck-info { flex-wrap: wrap; }
.wallet-deck-info .wallet-card-position { flex: 1 0 100%; font-size: 15px; text-align: left; }
.wallet-deck-card:not([data-depth="0"]) > .wallet-expiry-badge { display: none; }
.wallet-deck-peek-label small[data-wallet-expiry="soon"] { color: var(--w-warn); font-weight: 800; }
.wallet-deck-peek-label small[data-wallet-expiry="expired"] { color: var(--w-err); font-weight: 800; }
.wallet-deck-peek-label { min-width: 0; max-width: 100%; }
.wallet-deck-peek-label b { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.wallet-deck-peek-label small { flex: 1 1 0; min-width: 0; text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* PERSONA-SENIOR t7-01: the first-time check is a 48px target (the whole row is the label). */
.wallet-intro-agree { min-height: 48px; align-items: center; }
.wallet-intro-agree input { width: 28px; height: 28px; }
.wallet-expiry-remind { display: flex; align-items: center; gap: 10px; min-height: 48px; margin-top: 8px; padding: 10px 14px; border: 1px solid var(--w-line); border-radius: 14px; background: var(--w-card); color: var(--w-ink); font-size: 15px; font-weight: 700; cursor: pointer; }
.wallet-expiry-remind input { width: 24px; height: 24px; flex: none; margin: 0; accent-color: var(--w-blue); }

/* QA-USER LW: the page's ‹ on an open wallet's sub screen says Life Wallet (it goes to the wallet's home). */
body.chat-home-page .site-modal-backdrop[data-site-route="wallet"] .site-modal-header[data-wallet-back='home'] > .site-modal-close::after { content: 'Life Wallet'; }
/* QA-USER LW P2: 잠그기 · 설정 say their names under the icons. */
.wallet-head-icons .wallet-action-label, .wallet-topbar .wallet-toolbar-actions .wallet-action-label { position: static; width: auto; height: auto; overflow: visible; clip-path: none; font-size: 11px; font-weight: 700; line-height: 1.2; color: var(--w-muted); }
.wallet-head-icons .wallet-toolbar-icon-action, .wallet-topbar .wallet-toolbar-actions .wallet-toolbar-icon-action { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 48px; min-height: 48px; }
/* QA-USER LW P2: while the PIN waits, the wait is said big above a dimmed keypad. */
.wallet-root [aria-disabled='true'] > button { opacity: .4; }
.wallet-pin-wait:not(:empty) { display: block; margin: 8px 0; color: var(--w-err); font-size: 18px; font-weight: 800; text-align: center; }

/* PHOTO-INPUT-CAMERA-01 ③: on a phone the two choices stack (one per row) and each reads
   icon · words in one line, so 「찍으면 카드 모서리를…」 is never split word by word. */
@media (max-width: 760px) {
  .wallet-attach-choices { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .wallet-attach-choice { gap: 16px; padding: 18px; }
  .wallet-attach-choice > span:first-child { width: 56px; height: 56px; border-radius: 16px; }
  .wallet-attach-choice > span:last-child { display: grid; gap: 4px; min-width: 0; }
  .wallet-attach-choice strong { font-size: 18px; }
  .wallet-attach-choice small { font-size: 15px; line-height: 1.45; word-break: keep-all; }
}
.wallet-attach-pdf { grid-column: 1 / -1; justify-self: center; display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 16px; border: 0; background: none; color: var(--w-blue-ink); font: inherit; font-size: 16px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.wallet-attach-pdf svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; }
/* PHOTO-INPUT-CAMERA-01 ③ (any width, e.g. a fold or tablet at ~900px): the words beside the icon
   take the rest of the card, so they never shrink to one word per line. */
.wallet-attach-choice > span:last-child { flex: 1 1 auto; min-width: 0; display: grid; gap: 4px; }
.wallet-attach-choice small { word-break: keep-all; overflow-wrap: anywhere; }
@media (pointer: coarse) and (max-width: 1100px) {
  .wallet-attach-choices { grid-template-columns: minmax(0, 1fr); gap: 12px; }
}

/* LIFE-WALLET-DEVICE-LINK-01: 폰에서 가져오기 (computer). */
.wallet-device-link .wallet-device-link-qr { width: fit-content; margin: 8px auto 0; }
.wallet-device-link .wallet-device-link-qr svg { width: min(64vw, 260px); }
.wallet-device-link-steps { margin: 16px auto 0; padding-left: 22px; max-width: 360px; color: var(--w-text, inherit); line-height: 1.7; }
.wallet-device-link-time { margin: 8px 0 0; text-align: center; color: var(--w-muted, #667085); font-size: 14px; }
.wallet-device-link-code { margin: 16px auto 0; max-width: 360px; text-align: center; }
.wallet-device-link-digits { display: block; margin: 8px 0; font-size: 34px; font-weight: 800; letter-spacing: .08em; font-variant-numeric: tabular-nums; }
/* LIFE-WALLET-KIND-TABS-DECK-01: on a computer the home is the kind tabs above the wallet deck in one 520 px column
   (the phone-first deck rules above make the home a single block and the deck full width). */
@media (min-width: 1024px) {
  .wallet-home { display: grid; }
  .wallet-home > .wallet-deck-shell { width: 100%; }
}

/* LIFE-WALLET-AUTO-KEEP-01: kept only in this browser, the home line warns and opens LOTBI에 맡겨 두기
   (a warning-coloured line, not a second big button beside 자료 넣기). */
.wallet-root .wallet-safe-line.wallet-keep-line { display: block; width: 100%; text-align: center; word-break: keep-all; min-height: 0; margin: 0; padding: 8px 0; border: 0; border-radius: 10px; background: transparent; box-shadow: none; color: var(--w-warn); font: inherit; font-size: 14px; font-weight: 700; line-height: 1.5; cursor: pointer; }
.wallet-root .wallet-keep-line svg { display: inline-block; margin-right: 6px; vertical-align: -4px; }
.wallet-root .wallet-keep-line b { display: block; margin-top: 2px; color: var(--w-blue-ink); white-space: nowrap; }
.wallet-root .wallet-keep-line:focus-visible { outline: 2px solid var(--w-blue); outline-offset: 2px; }

/* LIFE-WALLET-KEEP-FIRST-01: kept only in this browser, the warning sits on top of the home (above the kind
   tabs), not under the deck. */
.wallet-home:has(> .wallet-keep-line) { grid-template-areas: 'warn' 'filters' 'deck' 'life' 'side'; }
.wallet-home > .wallet-safe-line.wallet-keep-line { grid-area: warn; }
@media (min-width: 1024px) {
  .wallet-home:has(> .wallet-keep-line) { grid-template-areas: 'warn' 'filters' 'deck' 'life'; }
}

/* LIFE-WALLET-PHONE-SHEET-01 (owner 10-26): on a phone a kind is one field; its choices open in the
   shared bottom sheet (site-bottom-sheet.js), which sits outside .wallet-root, so it uses the Site tokens. */
.wallet-root .wallet-select-field { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border: 1px solid var(--w-strong); border-radius: 12px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 15px; font-weight: 800; cursor: pointer; }
.wallet-root .wallet-select-field .wallet-filter-count { color: var(--w-muted); font-weight: 700; }
.wallet-root .wallet-select-chevron { width: 8px; height: 8px; margin: -3px 2px 0 4px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); }
.wallet-root .wallet-select-field:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 2px; }
.wallet-home > .wallet-deck-filters[data-layout='field'] { flex-wrap: nowrap; }
.wallet-choice-dialog[data-presentation='SHEET'] { max-width: 560px; margin: 0 auto; }
.wallet-choice-sheet { display: grid; gap: 14px; padding: 4px 2px 8px; color: var(--lotbi-text-primary); word-break: keep-all; }
.wallet-choice-title { margin: 0; font-size: 18px; font-weight: 800; }
.wallet-choice-options { display: grid; gap: 8px; }
.wallet-choice-options > button { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-height: 52px; padding: 0 16px; border: 1px solid var(--lotbi-border-default); border-radius: 12px; background: var(--lotbi-surface-primary); color: var(--lotbi-text-primary); font: inherit; font-size: 16px; font-weight: 700; text-align: left; cursor: pointer; }
.wallet-choice-options > button:is([aria-pressed='true'], [aria-checked='true']) { border-color: var(--lotbi-brand-solid-bg); background: var(--lotbi-brand-solid-bg); color: var(--lotbi-brand-solid-fg, #fff); }
.wallet-choice-options .wallet-filter-count { opacity: .8; }

/* LIFE-WALLET-SETTINGS-WHY-BELOW-01 (10-26, S24 384 wide, app 3586621 beside the Site): a greyed 설정 row's reason
   ('자료를 하나 넣으면 쓸 수 있어요') kept its width and squeezed the title into three lines. On a phone the title keeps
   its line and the reason goes under it. */
@media (max-width: 600px) {
  .wallet-root .wallet-settings-row:disabled:has(> .wallet-settings-value) { flex-wrap: wrap; row-gap: 2px; }
  .wallet-root .wallet-settings-row:disabled > .wallet-settings-value { order: 3; flex: 1 0 100%; box-sizing: border-box; padding-left: 34px; color: var(--w-dis-ink); text-align: left; }
}

/* LIFE-WALLET-KIND-TABS-02 (owner 10-27, tab proposal "이대로 하자"): the kinds as one row of tabs with counts on every
   width — never wrapped onto two lines; a narrow screen slides the row. Comes last so it wins over the chip rules above. */
.wallet-deck-filters[data-layout='tabs'], .wallet-home > .wallet-deck-filters[data-layout='tabs'] { display: flex; flex-wrap: nowrap; gap: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; border-bottom: 1px solid var(--w-line); }
.wallet-deck-filters[data-layout='tabs'] .wallet-deck-filter, .wallet-home > .wallet-deck-filters[data-layout='tabs'] .wallet-deck-filter { flex: 0 0 auto; min-height: 44px; padding: 0 9px; gap: 4px; border: 0; border-bottom: 3px solid transparent; border-radius: 0; background: transparent; color: var(--w-muted); font-size: 15px; font-weight: 700; }
.wallet-deck-filters[data-layout='tabs'] .wallet-deck-filter[aria-selected='true'] { border-bottom-color: var(--w-blue); background: transparent; color: var(--w-blue-ink); }
.wallet-deck-filters[data-layout='tabs'] .wallet-filter-count { font-weight: 600; opacity: .8; }
.wallet-deck-filters[data-layout='tabs'] .wallet-deck-filter:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: -3px; }
/* LIFE-WALLET-KIND-SEARCH-01: the search field over the deck of a tab with 9 or more items. */
.wallet-deck-search { width: 100%; min-height: 46px; margin: 0 0 12px; padding: 0 14px; border: 1px solid var(--w-line); border-radius: 12px; background: var(--w-card); color: var(--w-ink); font: inherit; font-size: 16px; box-sizing: border-box; }
.wallet-deck-search[hidden] { display: none; }
.wallet-deck-search:focus-visible { outline: 3px solid var(--w-tint-line); outline-offset: 1px; }
/* OWNER-WALK-01 (마스터 「소유자처럼 걸어 보기」 10-29 ⑨): a focused field showed two rings — the site's focus outline 3px
   out plus the wallet's own shadow. One ring on the field's edge now. The 와이파이 form's sticky bar had no background,
   so its line sat over the 부를 이름 field. */
.wallet-root .wallet-field :is(input, select, textarea):focus-visible { box-shadow: none; outline-offset: -1px !important; }
.wallet-wifi-form > .wallet-form-bar { background: var(--w-page); }
/* WALLET-KEEP-TYPED-01: 「저장하지 않고 나갈까요?」 over the form's bottom. */
.wallet-leave-ask { position: fixed; left: 16px; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 1001; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; max-width: 520px; margin: 0 auto; padding: 16px; border: 1px solid var(--w-line); border-radius: 16px; background: var(--w-card); color: var(--w-ink); box-shadow: var(--w-shadow); }
.wallet-leave-ask > p { grid-column: 1 / -1; margin: 0 0 4px; font-size: 16px; font-weight: 700; }
.wallet-settings-row-info, .wallet-settings-row-info:hover { cursor: default; background: transparent; }
