:root {
  --carrot-orange: #AA1C41;
  --carrot-orange-dark: #AA1C41;
  --carrot-bg: #F8F9FA;
  --carrot-text: #1F2024;
  --carrot-muted: #898E93;
}

/* 관리자 공용 메일함 */
.admin-mailbox-page { min-height: 100vh; color: #2d252a; background: #f6f4f5; }
.admin-mailbox-main { padding: 34px 0 72px; }
.admin-mailbox-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 22px; }
.admin-mailbox-heading small { display: block; margin-bottom: 6px; color: #aa1c41; font-weight: 900; letter-spacing: .06em; }
.admin-mailbox-heading h1 { margin: 0; font-size: clamp(1.55rem, 3vw, 2.15rem); font-weight: 900; }
.admin-mailbox-heading p { margin: 8px 0 0; color: #766d73; font-size: .85rem; }
.admin-mail-heading-actions { display: flex; align-items: center; gap: 8px; }
.admin-mail-heading-actions .btn-primary { border-color: #aa1c41; background: #aa1c41; font-weight: 900; }
.admin-mail-folders { display: flex; gap: 8px; margin-bottom: 12px; }
.admin-mail-folders button { display: inline-flex; align-items: center; gap: 7px; padding: 9px 15px; border: 1px solid #e5dde1; border-radius: 999px; color: #6e656b; background: #fff; font-size: .78rem; font-weight: 900; }
.admin-mail-folders button.is-active { border-color: #aa1c41; color: #fff; background: #aa1c41; }
.admin-mail-status { min-height: 24px; margin: 0 0 12px; font-size: .78rem; font-weight: 700; }
.admin-mail-status[data-tone="success"] { color: #177245; }
.admin-mail-status[data-tone="error"] { color: #b42318; }
.admin-mail-status[data-tone="info"] { color: #59515f; }
.admin-mail-toolbar { display: grid; grid-template-columns: minmax(240px, 1fr) minmax(150px, .3fr); gap: 10px; margin-bottom: 14px; }
.admin-mail-search { position: relative; }
.admin-mail-search i { position: absolute; top: 50%; left: 16px; color: #8d858a; transform: translateY(-50%); }
.admin-mail-search .form-control { padding-left: 43px; }
.admin-mail-toolbar .form-control,
.admin-mail-toolbar .form-select { min-height: 46px; border: 1px solid #e8e2e5; border-radius: 14px; background-color: #fff; box-shadow: none; font-size: .83rem; }
.admin-mail-toolbar .form-control:focus,
.admin-mail-toolbar .form-select:focus { border-color: #aa1c41; box-shadow: 0 0 0 3px rgba(170,28,65,.1); }
.admin-mail-layout { display: grid; grid-template-columns: minmax(300px, .82fr) minmax(0, 1.55fr); min-height: 610px; overflow: hidden; border: 1px solid #ebe5e8; border-radius: 22px; background: #fff; box-shadow: 0 18px 48px -36px rgba(55,31,42,.42); }
.admin-mail-list-panel { min-width: 0; border-right: 1px solid #eee8eb; background: #fcfbfc; }
.admin-mail-list-title { display: flex; align-items: center; justify-content: space-between; padding: 17px 18px; border-bottom: 1px solid #eee8eb; }
.admin-mail-list-title strong { font-size: .9rem; }
.admin-mail-list-title span { color: #8b8288; font-size: .72rem; }
.admin-mail-list { max-height: 690px; overflow-y: auto; }
.admin-mail-list-item { display: block; width: 100%; padding: 16px 18px; border: 0; border-bottom: 1px solid #f0ebed; color: inherit; background: transparent; text-align: left; transition: background-color .18s ease, transform .18s ease; }
.admin-mail-list-item:hover { background: #f9f2f4; }
.admin-mail-list-item:active { transform: scale(.985); }
.admin-mail-list-item.is-selected { background: #f7e9ee; box-shadow: inset 3px 0 #aa1c41; }
.admin-mail-list-item.is-unread .admin-mail-list-sender,
.admin-mail-list-item.is-unread .admin-mail-list-subject { font-weight: 900; }
.admin-mail-list-top,
.admin-mail-list-bottom { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.admin-mail-list-sender { min-width: 0; overflow: hidden; font-size: .8rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-mail-list-time { flex: 0 0 auto; color: #92898f; font-size: .65rem; }
.admin-mail-list-subject { display: block; margin: 7px 0; overflow: hidden; font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-mail-list-bottom small { min-width: 0; overflow: hidden; color: #837a80; font-size: .64rem; text-overflow: ellipsis; white-space: nowrap; }
.admin-mail-list-bottom em { flex: 0 0 auto; padding: 4px 8px; border-radius: 999px; font-size: .61rem; font-style: normal; font-weight: 900; }
.mail-status-unread { color: #aa1c41; background: #f8e8ed; }
.mail-status-read { color: #56505a; background: #efedef; }
.mail-status-replied { color: #176b43; background: #e6f5ed; }
.mail-status-archived { color: #776d54; background: #f4f0e3; }
.admin-mail-empty,
.admin-mail-detail-placeholder { display: grid; min-height: 320px; place-content: center; color: #948b91; text-align: center; }
.admin-mail-empty i,
.admin-mail-detail-placeholder i { margin-bottom: 10px; font-size: 2rem; }
.admin-mail-detail { min-width: 0; padding: clamp(20px, 3.5vw, 36px); background: #fff; }
.admin-mail-detail-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding-bottom: 20px; border-bottom: 1px solid #eee8eb; }
.admin-mail-detail-header h2 { margin: 4px 0 8px; font-size: clamp(1.15rem, 2.3vw, 1.55rem); font-weight: 900; line-height: 1.35; }
.admin-mail-detail-header p { margin: 0; color: #746b71; font-size: .78rem; }
.admin-mail-detail-actions { display: flex; flex: 0 0 auto; gap: 8px; }
.admin-mail-detail-actions button { border-radius: 11px; }
.admin-mail-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 22px; margin: 20px 0; }
.admin-mail-meta div { min-width: 0; }
.admin-mail-meta dt { margin-bottom: 3px; color: #948a90; font-size: .65rem; }
.admin-mail-meta dd { margin: 0; overflow-wrap: anywhere; font-size: .76rem; font-weight: 700; }
.admin-mail-body { min-height: 120px; padding: 20px; border-radius: 16px; color: #443c41; background: #faf8f9; font-size: .84rem; line-height: 1.8; white-space: pre-wrap; overflow-wrap: anywhere; }
.admin-mail-attachments,
.admin-mail-replies { margin-top: 22px; }
.admin-mail-attachments h3,
.admin-mail-replies h3,
.admin-mail-reply-form h3 { margin: 0 0 10px; font-size: .86rem; font-weight: 900; }
.admin-mail-attachment { display: flex; align-items: center; gap: 10px; padding: 11px 13px; border: 1px solid #eee8eb; border-radius: 12px; font-size: .75rem; }
.admin-mail-attachment + .admin-mail-attachment { margin-top: 7px; }
.admin-mail-attachment small { margin-left: auto; color: #93898f; }
.admin-mail-attachment button { margin-left: auto; padding: 5px 10px; border: 0; border-radius: 999px; color: #aa1c41; background: #f8e8ed; font-size: .66rem; font-weight: 900; }
.admin-mail-attachment button:disabled { cursor: wait; opacity: .55; }
.admin-mail-reply { padding: 15px; border-left: 3px solid #aa1c41; border-radius: 0 12px 12px 0; background: #fcf6f8; }
.admin-mail-reply + .admin-mail-reply { margin-top: 8px; }
.admin-mail-reply header { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 8px; font-size: .69rem; }
.admin-mail-reply p { margin: 0; font-size: .78rem; line-height: 1.7; white-space: pre-wrap; }
.admin-mail-reply-form { margin-top: 24px; padding-top: 22px; border-top: 1px solid #eee8eb; }
.admin-mail-reply-form textarea { min-height: 132px; resize: vertical; border-color: #e7dfe3; border-radius: 14px; font-size: .82rem; }
.admin-mail-reply-form textarea:focus { border-color: #aa1c41; box-shadow: 0 0 0 3px rgba(170,28,65,.1); }
.admin-mail-reply-form footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
.admin-mail-reply-form small { color: #8d8389; font-size: .66rem; }
.admin-mail-reply-form .btn { border: 0; border-radius: 12px; background: #aa1c41; font-size: .78rem; font-weight: 900; }
.admin-mail-compose-dialog { width: min(620px, calc(100% - 28px)); padding: 0; border: 0; border-radius: 22px; color: #2d252a; background: #fff; box-shadow: 0 28px 80px -30px rgba(45,22,33,.6); }
.admin-mail-compose-dialog::backdrop { background: rgba(35,22,28,.52); backdrop-filter: blur(4px); }
.admin-mail-compose-dialog form { display: grid; gap: 15px; padding: clamp(20px, 4vw, 30px); }
.admin-mail-compose-dialog header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.admin-mail-compose-dialog header small { display: block; margin-bottom: 4px; color: #aa1c41; font-size: .7rem; font-weight: 900; }
.admin-mail-compose-dialog h2 { margin: 0; font-size: 1.35rem; font-weight: 900; }
.admin-mail-compose-dialog header > button { display: grid; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; place-items: center; color: #675e64; background: #f3eff1; }
.admin-mail-compose-dialog label { display: grid; gap: 7px; color: #51484e; font-size: .75rem; font-weight: 900; }
.admin-mail-compose-dialog .form-control { border-color: #e5dde1; border-radius: 13px; font-size: .82rem; }
.admin-mail-compose-dialog textarea { resize: vertical; }
.admin-mail-compose-dialog footer { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding-top: 5px; }
.admin-mail-compose-dialog footer small { color: #8d8389; font-size: .66rem; }
.admin-mail-compose-dialog footer div { display: flex; gap: 8px; }
.admin-mail-compose-dialog footer .btn { border-radius: 11px; font-size: .76rem; font-weight: 900; }
.admin-mail-compose-dialog footer .btn-primary { border-color: #aa1c41; background: #aa1c41; }

@media (max-width: 767.98px) {
  .admin-mailbox-main { padding-top: 22px; }
  .admin-mailbox-heading { align-items: flex-start; flex-direction: column; }
  .admin-mail-heading-actions { width: 100%; }
  .admin-mail-heading-actions .btn { flex: 1; }
  .admin-mail-toolbar { grid-template-columns: 1fr 1fr; }
  .admin-mail-search { grid-column: 1 / -1; }
  .admin-mail-toolbar .form-select { grid-column: 1 / -1; }
  .admin-mail-layout { grid-template-columns: 1fr; min-height: 0; border-radius: 18px; }
  .admin-mail-list-panel { border-right: 0; border-bottom: 1px solid #eee8eb; }
  .admin-mail-list { max-height: 390px; }
  .admin-mail-detail { padding: 20px 16px; }
  .admin-mail-detail-header { flex-direction: column; }
  .admin-mail-meta { grid-template-columns: 1fr; }
  .admin-mail-compose-dialog footer { align-items: stretch; flex-direction: column; }
  .admin-mail-compose-dialog footer div, .admin-mail-compose-dialog footer .btn { flex: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .admin-mail-list-item { transition: none; }
}

/* SGN -> ICN flight fare dashboard */
.flight-fare-section { background: linear-gradient(180deg, #f7fbff 0%, #fff 100%); }
.flight-fare-shell { background: #fff; border: 1px solid #dce8f4; border-radius: 24px; padding: 28px; box-shadow: 0 14px 36px rgba(20, 65, 105, .08); }
.flight-fare-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; margin-bottom: 20px; }
.flight-fare-header h3 { margin: 6px 0; font-weight: 800; color: #18354f; }
.flight-fare-header p { margin: 0; color: #687b8d; }
.flight-fare-kicker { color: #0875c1; font-size: .82rem; font-weight: 800; letter-spacing: .02em; }
.flight-route-criteria { margin-top: 5px; color: #687b8d; font-size: .78rem; }
.flight-fare-route { flex: none; padding: 10px 15px; border-radius: 999px; background: #eaf5ff; color: #086dac; font-weight: 800; white-space: nowrap; }
.flight-fare-route i { margin: 0 7px; font-size: .75rem; }
.flight-live-search-panel { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 14px; padding: 20px; border-radius: 18px; color: #fff; background: linear-gradient(135deg, #0a72b8 0%, #1858a8 100%); }
.flight-live-search-panel strong { display: block; font-size: 1.05rem; }
.flight-live-search-panel p { margin: 5px 0 0; color: rgba(255, 255, 255, .82); font-size: .84rem; }
.flight-live-search-panel .btn { flex: none; border-color: #fff; color: #1858a8; background: #fff; font-weight: 800; }
.flight-airline-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 22px; }
.flight-airline-links a { display: grid; grid-template-columns: 38px 1fr; grid-template-rows: auto auto; column-gap: 10px; align-items: center; padding: 12px; border: 1px solid #dfe9f2; border-radius: 14px; color: #243f54; text-decoration: none; background: #fff; }
.flight-airline-links a:hover { border-color: #88bfe4; background: #f5fbff; }
.flight-airline-links span { grid-row: 1 / 3; display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; color: #0875c1; background: #eaf5ff; font-size: .78rem; font-weight: 900; }
.flight-airline-links strong { font-size: .86rem; }
.flight-airline-links small { color: #7a8b98; font-size: .7rem; }
.flight-reference-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.flight-reference-heading span { color: #7a8b98; font-size: .76rem; }
.flight-fare-status { padding: 28px; text-align: center; color: #6c7d8c; background: #f7f9fb; border-radius: 16px; }
.flight-fare-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(245px, 1fr)); gap: 16px; }
.flight-fare-card { border: 1px solid #e3ebf2; border-radius: 18px; padding: 19px; background: #fff; transition: transform .18s ease, box-shadow .18s ease; }
.flight-fare-card:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(28, 71, 105, .1); }
.flight-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.flight-card-top h4 { margin: 3px 0 16px; font-size: 1.05rem; font-weight: 800; }
.flight-airline-code { color: #778a99; font-size: .75rem; font-weight: 800; }
.flight-signal { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 6px 9px; font-size: .75rem; font-weight: 800; white-space: nowrap; }
.flight-signal i { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.flight-signal-green { color: #168647; background: #e9f8ef; }
.flight-signal-yellow { color: #9a6b00; background: #fff6d8; }
.flight-signal-red { color: #c23b3b; background: #fff0f0; }
.flight-price-label { color: #718291; font-size: .78rem; }
.flight-price { display: block; color: #163c5d; font-size: 1.55rem; line-height: 1.25; }
.flight-signal-detail { margin-top: 4px; color: #6c7c89; font-size: .78rem; }
.flight-meta { margin: 17px 0; padding-top: 12px; border-top: 1px solid #edf1f5; }
.flight-meta > div { display: grid; grid-template-columns: 70px 1fr; gap: 7px; margin: 7px 0; font-size: .82rem; }
.flight-meta dt { color: #81909c; font-weight: 500; }
.flight-meta dd { margin: 0; color: #354c5d; font-weight: 650; }
.flight-stale { display: inline-block; margin-left: 3px; padding: 2px 5px; border-radius: 5px; color: #b34920; background: #fff1e8; font-size: .68rem; }
.flight-fare-chart-wrap { margin-top: 20px; padding: 18px; border-radius: 18px; background: #f7fafc; }
.flight-fare-chart-title { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.flight-fare-chart-title span { color: #7a8b98; font-size: .78rem; }
.flight-fare-chart svg { display: block; width: 100%; height: 180px; overflow: visible; }
.flight-chart-axis { stroke: #cad7e0; stroke-width: 1; }
.flight-chart-line { fill: none; stroke: #1687d4; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.flight-chart-point { fill: #fff; stroke: #1687d4; stroke-width: 3; }
.flight-chart-label { fill: #778995; font-size: 12px; }
.flight-fare-disclaimer { margin-top: 18px; color: #7b8994; font-size: .78rem; line-height: 1.6; }
.flight-calendar-toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.flight-calendar-toolbar .flight-reference-heading { margin-bottom: 0; }
.flight-airline-filters { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.flight-airline-filters button { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px 5px 6px; border: 1px solid #d7e3ec; border-radius: 999px; color: #526a7c; background: #fff; font-size: .75rem; font-weight: 800; }
.flight-airline-filters button:hover { border-color: #75b6df; color: #0875c1; }
.flight-airline-filters button.active { border-color: #0875c1; color: #fff; background: #0875c1; }
.flight-airline-icon { position: relative; display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; border: 1px solid rgba(255,255,255,.7); border-radius: 50%; color: #fff; overflow: hidden; }
.flight-airline-icon i { font-size: .62rem; transform: rotate(-12deg) translateY(-3px); }
.flight-airline-icon b { position: absolute; right: 0; bottom: 1px; left: 0; font-size: .48rem; line-height: 1; text-align: center; }
.flight-airline-icon.airline-vj { background: linear-gradient(135deg, #d71920 0 67%, #ffd400 67%); }
.flight-airline-icon.airline-vn { color: #f5cf45; background: #007a87; }
.flight-airline-icon.airline-ke { background: linear-gradient(135deg, #52a8df 0 58%, #d8384e 58%); }
.flight-airline-icon.airline-oz { background: linear-gradient(135deg, #555 0 58%, #d7193f 58% 78%, #f5b51b 78%); }
.flight-airline-icon.is-compact { width: 18px; height: 18px; border-width: 0; }
.flight-airline-icon.is-compact i { font-size: .42rem; transform: rotate(-12deg) translateY(-2px); }
.flight-airline-icon.is-compact b { bottom: 1px; font-size: .34rem; }
.flight-all-airlines-icon { display: grid; grid-template-columns: repeat(2, 7px); gap: 2px; padding: 3px; border-radius: 50%; background: rgba(255,255,255,.7); }
.flight-all-airlines-icon i { width: 7px; height: 7px; border-radius: 50%; }
.flight-all-airlines-icon i:nth-child(1) { background: #d71920; }
.flight-all-airlines-icon i:nth-child(2) { background: #007a87; }
.flight-all-airlines-icon i:nth-child(3) { background: #52a8df; }
.flight-all-airlines-icon i:nth-child(4) { background: #555; }
.flight-month-grid { display: grid; grid-template-columns: 1fr; gap: 16px; }
.flight-month-tabs { display: flex; justify-content: center; gap: 7px; margin-bottom: 9px; }
.flight-month-tabs button { padding: 6px 13px; border: 1px solid #d8e3eb; border-radius: 999px; color: #647887; background: #fff; font-size: .73rem; font-weight: 800; }
.flight-month-tabs button.active { border-color: #183f5f; color: #fff; background: #183f5f; }
.flight-month-card { min-width: 0; padding: 10px; border: 1px solid #dfe9f2; border-radius: 14px; background: #fff; }
.flight-month-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 13px; }
.flight-month-title strong { color: #183f5f; font-size: 1.03rem; }
.flight-month-title span { color: #738696; font-size: .74rem; }
.flight-month-empty { margin: 0; padding: 28px 12px; border-radius: 13px; color: #718290; background: #f7f9fb; text-align: center; font-size: .82rem; line-height: 1.6; }
.flight-date-list { display: grid; gap: 10px; }
.flight-date-row { display: grid; grid-template-columns: 27px minmax(0, 1fr); gap: 10px; padding: 12px; border-radius: 14px; background: #f8fbfd; }
.flight-date-rank { display: grid; place-items: center; width: 27px; height: 27px; border-radius: 50%; color: #fff; background: #0875c1; font-size: .76rem; font-weight: 900; }
.flight-date-main { min-width: 0; }
.flight-date-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.flight-date-heading strong { color: #233f55; font-size: .88rem; }
.flight-airline-pill { overflow: hidden; max-width: 45%; padding: 4px 7px; border-radius: 999px; color: #0875c1; background: #e8f4fc; font-size: .68rem; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.flight-date-return { margin-top: 3px; color: #758795; font-size: .72rem; }
.flight-price-bar { position: relative; height: 28px; margin: 9px 0; overflow: hidden; border-radius: 8px; background: #e9eff4; }
.flight-price-bar i { position: absolute; inset: 0 auto 0 0; border-radius: inherit; background: linear-gradient(90deg, #bfe5fb, #7fc4ec); }
.flight-price-bar strong { position: relative; z-index: 1; display: flex; align-items: center; height: 100%; padding: 0 9px; color: #153e5d; font-size: .78rem; }
.flight-date-row .btn { font-size: .72rem; font-weight: 800; }
.flight-calendar-scroll { overflow: visible; }
.flight-calendar { width: 100%; min-width: 0; }
.flight-calendar-weekdays, .flight-calendar-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.flight-calendar-weekdays { border: 1px solid #dfe8ef; border-bottom: 0; border-radius: 12px 12px 0 0; background: #f4f8fb; }
.flight-calendar-weekdays span { padding: 5px 2px; color: #637788; text-align: center; font-size: .66rem; font-weight: 800; }
.flight-calendar-weekdays .sunday { color: #c14949; }
.flight-calendar-weekdays .saturday { color: #3277b4; }
.flight-calendar-days { border-top: 1px solid #dfe8ef; border-left: 1px solid #dfe8ef; }
.flight-calendar-day { min-width: 0; min-height: 64px; padding: 4px; border-right: 1px solid #dfe8ef; border-bottom: 1px solid #dfe8ef; background: #fff; }
.flight-calendar-day.is-blank { background: #f7f9fb; }
.flight-calendar-day.has-price { background: #fbfdff; }
.flight-calendar-date { display: block; margin-bottom: 3px; color: #485f70; font-size: .65rem; font-weight: 800; }
.flight-calendar-prices { display: grid; gap: 2px; }
.flight-calendar-price { display: flex; align-items: center; justify-content: space-between; gap: 2px; width: 100%; min-width: 0; padding: 3px; border: 1px solid transparent; border-radius: 5px; color: #29465c; background: #edf5fa; font-size: .55rem; line-height: 1.1; text-align: left; }
.flight-calendar-price:hover { border-color: #68add7; transform: translateY(-1px); }
.flight-calendar-price span { font-weight: 900; white-space: nowrap; }
.flight-calendar-price strong { overflow: hidden; font-size: .54rem; text-overflow: ellipsis; white-space: nowrap; }
.flight-calendar-price > em { color: #d58b00; font-size: .5rem; font-style: normal; }
.flight-calendar-price.airline-vj { background: #fff0f0; color: #a93b3b; }
.flight-calendar-price.airline-vn { background: #eaf8f5; color: #087d6a; }
.flight-calendar-price.airline-ke { background: #edf3ff; color: #315da5; }
.flight-calendar-price.airline-oz { background: #fff2f7; color: #9b3d68; }
.flight-calendar-price.is-lowest { border-color: currentColor; box-shadow: 0 0 0 1px rgba(255,255,255,.7) inset; }
.flight-calendar-overlap { display: flex; align-items: center; justify-content: center; gap: 2px; overflow: hidden; padding: 3px 1px; border-radius: 5px; color: #176b9f; background: #eaf5fb; white-space: nowrap; }
.flight-calendar-empty { margin: 10px 0 0; color: #7b8994; font-size: .76rem; text-align: center; }
.flight-fare-updated { margin-top: 8px; color: #8a98a3; font-size: .68rem; text-align: right; }
.flight-cheapest-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; margin-top: 10px; }
.flight-cheapest-summary.is-single { grid-template-columns: minmax(0, 520px); justify-content: center; }
.flight-summary-airline { min-width: 0; padding: 9px; border: 1px solid #e0e8ee; border-radius: 10px; background: #fbfcfd; }
.flight-summary-airline > strong { display: flex; align-items: center; gap: 6px; margin-bottom: 7px; color: #29485f; font-size: .72rem; }
.flight-summary-airline > strong small { margin-left: auto; color: #8997a2; font-size: .57rem; font-weight: 700; }
.flight-summary-airline > span { color: #8a98a3; font-size: .65rem; }
.flight-summary-airline > div { display: grid; gap: 4px; }
.flight-summary-airline button { display: flex; align-items: center; justify-content: space-between; gap: 5px; width: 100%; padding: 5px 6px; border: 0; border-radius: 6px; color: #51697a; background: #edf4f8; font-size: .63rem; text-align: left; }
.flight-summary-airline button:hover { color: #0875c1; background: #e3f2fb; }
.flight-summary-airline button b { color: #183f5f; font-size: .62rem; white-space: nowrap; }
.flight-summary-airline button span { display: inline-flex; align-items: center; gap: 4px; min-width: 0; }
.flight-summary-airline button span em { display: grid; place-items: center; flex: none; width: 16px; height: 16px; border-radius: 50%; color: #fff; background: #628197; font-size: .52rem; font-style: normal; font-weight: 900; }
.sightseeing-travel-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
.sightseeing-travel-banner { display: grid; grid-template-columns: 44px 1fr auto; align-items: center; gap: 12px; width: 100%; padding: 13px 16px; border: 1px solid #b9dfe9; border-radius: 16px; color: #164d5d; text-align: left; background: linear-gradient(135deg, #f2fcff 0%, #edf8ff 100%); }
.sightseeing-travel-banner:hover { border-color: #54b3ca; background: #e9f9fd; }
.sightseeing-travel-banner .sightseeing-travel-icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; color: #fff; background: #0891B2; }
.sightseeing-travel-banner small, .sightseeing-travel-banner strong { display: block; }
.sightseeing-travel-banner small { margin-bottom: 2px; color: #58808c; font-size: .72rem; }
.sightseeing-travel-banner strong { font-size: .95rem; }
.sightseeing-travel-banner > .fa-chevron-right { color: #4b95a8; }
.klook-travel-banner { border-color: #ffd1b9; color: #75320e; background: linear-gradient(135deg, #fff8f2 0%, #fff2e8 100%); }
.klook-travel-banner:hover { border-color: #ff8b4d; background: #fff0e5; }
.klook-travel-banner .sightseeing-travel-icon { background: #ff5b00; }
.klook-travel-banner small { color: #9a6041; }
.klook-travel-banner > .fa-chevron-right { color: #d8692e; }
.klook-partner-badge { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 999px; color: #a43a00; background: #fff0e5; font-size: .72rem; font-weight: 800; }
.btn-klook { border-color: #ff5b00; color: #fff; background: #ff5b00; font-weight: 800; }
.btn-klook:hover { border-color: #df4f00; color: #fff; background: #df4f00; }
.home-sightseeing-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.home-sightseeing-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.home-travel-guide-link { display: inline-flex; align-items: center; gap: 7px; padding: 8px 12px; border: 1px solid #7cc6d8; border-radius: 999px; color: #155b6d; background: #edfaff; font-size: .76rem; font-weight: 800; line-height: 1.2; text-decoration: none; box-shadow: 0 4px 12px rgba(19, 104, 126, .09); }
.home-travel-guide-link:hover { border-color: #239bb8; color: #0b718b; background: #e1f7fc; transform: translateY(-1px); }
.home-travel-guide-link i { color: #0891b2; }
.home-travel-guide-link.ticket-guide-link { border-color: #ffc39f; color: #8b3e15; background: #fff4ec; box-shadow: 0 4px 12px rgba(184, 79, 20, .08); }
.home-travel-guide-link.ticket-guide-link:hover { border-color: #ff8a4c; color: #a34613; background: #ffede1; }
.home-travel-guide-link.ticket-guide-link i { color: #ff5b00; }
.home-travel-guide-link.education-ranking-guide-link { border-color: rgba(170, 28, 65, .26); color: #7f1737; background: #fff3f6; box-shadow: 0 4px 12px rgba(125, 23, 55, .08); }
.home-travel-guide-link.education-ranking-guide-link:hover { border-color: #aa1c41; color: #7f1737; background: #fde9ef; }
.home-travel-guide-link.education-ranking-guide-link i { color: #aa1c41; }

@media (max-width: 575.98px) {
  .flight-fare-shell { padding: 20px 15px; border-radius: 18px; }
  .flight-fare-header { flex-direction: column; }
  .flight-fare-route { font-size: .82rem; }
  .flight-live-search-panel { align-items: stretch; flex-direction: column; }
  .flight-airline-links { grid-template-columns: repeat(2, 1fr); }
  .flight-reference-heading { align-items: flex-start; flex-direction: column; }
  .flight-fare-chart-title { flex-direction: column; }
  .flight-calendar-toolbar { align-items: stretch; flex-direction: column; }
  .flight-airline-filters { flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; padding-bottom: 4px; }
  .flight-airline-filters button { flex: none; }
  .flight-month-grid { grid-template-columns: 1fr; }
  .flight-month-card { padding: 6px; }
  .flight-calendar-day { min-height: 54px; padding: 3px; }
  .flight-calendar-price { display: block; padding: 3px 2px; text-align: center; }
  .flight-calendar-price strong { display: block; margin-top: 1px; font-size: .49rem; }
  .flight-calendar-overlap { font-size: .5rem; }
  .flight-cheapest-summary, .flight-cheapest-summary.is-single { grid-template-columns: 1fr; }
  .home-sightseeing-heading { align-items: stretch; flex-direction: column; gap: 10px; }
  .home-sightseeing-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); justify-content: stretch; }
  .home-travel-guide-link { justify-content: center; min-height: 42px; padding: 7px 9px; text-align: center; }
  .home-sightseeing-actions .btn { grid-column: 1 / -1; justify-self: end; }
  .home-education-actions { grid-template-columns: 1fr; }
  .home-education-actions .btn { grid-column: auto; }
}

/* AliExpress 제휴상품 */
.affiliate-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  margin-bottom: .45rem;
  padding: .25rem .55rem;
  border: 1px solid #f3b6a8;
  border-radius: 999px;
  background: #fff4f1;
  color: #a8321c;
  font-size: .72rem;
  font-weight: 800;
}

.affiliate-commission-badge,
.affiliate-shipping-badge {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  width: fit-content;
  margin-bottom: .45rem;
  padding: .25rem .55rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
}

.affiliate-commission-badge {
  border: 1px solid #e5c86e;
  background: #fff9dc;
  color: #765c00;
}

.affiliate-shipping-list {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .45rem;
  width: 100%;
}

.affiliate-shipping-badge {
  margin-bottom: 0;
  border: 1px solid #a9d9bd;
  background: #effaf3;
  color: #18723d;
}

.affiliate-shipping-list small {
  width: 100%;
  color: #6c757d;
  line-height: 1.45;
}

.affiliate-product-card {
  padding: .65rem;
  border: 1px solid #f0d6cf !important;
  background: linear-gradient(180deg, #fff 0%, #fffaf8 100%);
}

.affiliate-product-card .thumb-wrap {
  border-radius: .8rem;
}

.affiliate-product-card .card-body {
  display: flex;
  flex-direction: column;
}

.affiliate-card-description {
  display: -webkit-box;
  overflow: hidden;
  color: #62666b;
  font-size: .8rem;
  line-height: 1.45;
  white-space: pre-line;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.affiliate-price-label {
  color: #777d83;
  font-size: .72rem;
  font-weight: 700;
}

.affiliate-vietnam-shipping,
.affiliate-consent-shipping {
  color: #18723d;
  font-size: .78rem;
  font-weight: 700;
}

.btn-like {
  border: 1.5px solid #AA1C41;
  background-color: #FFF1E6;
  color: #AA1C41;
  font-weight: 600;
  transition: all .15s ease;
}

.btn-like:hover,
.btn-like.liked {
  border-color: #AA1C41;
  background-color: #AA1C41;
  color: #fff;
}

.btn-like:disabled {
  opacity: .6;
}

.affiliate-title-button {
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
}

.affiliate-consent-product,
.affiliate-editor-preview {
  display: flex;
  align-items: center;
  gap: .9rem;
  padding: .85rem;
  border: 1px solid #eee;
  border-radius: .9rem;
  background: #fafafa;
}

.affiliate-consent-product img,
.affiliate-editor-preview img {
  width: 76px;
  height: 76px;
  flex: 0 0 76px;
  border-radius: .75rem;
  object-fit: cover;
}

.affiliate-consent-product > div {
  min-width: 0;
}

.affiliate-consent-price {
  color: #AA1C41;
  font-size: 1.05rem;
  font-weight: 800;
}

.affiliate-consent-description {
  padding: .9rem 1rem;
  border: 1px solid #eadde1;
  border-radius: .75rem;
  background: #fff;
}

.affiliate-consent-description p {
  color: #45484c;
  font-size: .9rem;
  line-height: 1.65;
  white-space: pre-line;
}

.affiliate-consent-notice {
  padding: 1rem;
  border-left: 4px solid #AA1C41;
  border-radius: .5rem;
  background: #fff6f8;
  color: #4a2b33;
  font-size: .76rem;
  line-height: 1.55;
}

.affiliate-consent-notice p:last-child {
  margin-bottom: 0;
}

.affiliate-consent-action-note {
  font-size: .76rem !important;
  line-height: 1.5;
}

.affiliate-admin-card,
.affiliate-admin-selected {
  overflow: hidden;
  border: 1px solid #e6e6e6;
  border-radius: 1rem;
  background: #fff;
  box-shadow: 0 8px 24px rgba(32, 22, 26, .06);
}

.affiliate-admin-card > img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.affiliate-admin-card-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 1rem;
}

.affiliate-admin-card-body strong {
  display: -webkit-box;
  min-height: 3rem;
  margin-bottom: .55rem;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.affiliate-admin-selected {
  display: flex;
  gap: 1rem;
  height: 100%;
  padding: 1rem;
}

.affiliate-admin-selected > img {
  width: 104px;
  height: 104px;
  flex: 0 0 104px;
  border-radius: .8rem;
  object-fit: cover;
}

.affiliate-admin-selected.is-inactive {
  opacity: .62;
}

@media (max-width: 575.98px) {
  .affiliate-admin-selected {
    align-items: flex-start;
  }

  .affiliate-admin-selected > img {
    width: 82px;
    height: 82px;
    flex-basis: 82px;
  }
}

/* 관리자 방문 통계 */
.admin-stats-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}

.admin-stat-card {
  min-height: 132px;
  padding: 18px;
  border: 1px solid rgba(170, 28, 65, 0.14);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 4px 14px rgba(30, 30, 30, 0.05);
}

.admin-stat-card span,
.admin-stat-card small { display: block; color: #6c757d; }

.admin-stat-card strong {
  display: block;
  margin: 8px 0 4px;
  color: #AA1C41;
  font-size: 2rem;
  line-height: 1;
}

@media (max-width: 991px) {
  .admin-stats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 575px) {
  .admin-stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

body {
  font-family: 'Noto Sans KR', sans-serif;
  color: var(--carrot-text);
  background-color: #ffffff;
}

/* 네비게이션 */
.brand-text {
  color: var(--carrot-orange-dark);
  font-size: 1.3rem;
}

.navbar-brand-language-stack {
  display: inline-flex;
  flex: 0 0 auto;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  margin-right: 10px;
}

.navbar-brand-language-stack .navbar-brand {
  margin-right: 0;
  padding-bottom: 0;
}

.navbar-brand-language-stack .language-switcher {
  margin: -2px 0 2px 34px;
}

.qr-nav-button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 34px;
  margin-left: 10px;
  border: 1px solid rgba(170, 28, 65, 0.24);
  border-radius: 999px;
  padding: 0 12px;
  background-color: #FFF7FA;
  color: var(--carrot-orange-dark);
  font-size: 0.82rem;
  font-weight: 900;
  text-decoration: none;
  white-space: nowrap;
}

.qr-nav-button:hover {
  border-color: var(--carrot-orange-dark);
  color: var(--carrot-orange-dark);
}

.language-switcher {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
  margin-left: 10px;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  padding: 3px;
  background-color: #ffffff;
}

.language-switcher button {
  min-width: 58px;
  border: 0;
  border-radius: 999px;
  padding: 5px 8px;
  background-color: transparent;
  color: #59636E;
  font-size: 0.74rem;
  font-weight: 900;
  line-height: 1.1;
  white-space: nowrap;
}

.language-switcher button.active {
  background-color: var(--carrot-orange-dark);
  color: #ffffff;
}

.language-switcher-auth {
  justify-content: center;
  width: fit-content;
  margin: 0 auto 18px;
}

@media (max-width: 575.98px) {
  .language-switcher {
    order: 3;
    margin: 8px 0 0;
  }

  .navbar-brand-language-stack {
    margin-right: 6px;
  }

  .navbar-brand-language-stack .language-switcher {
    order: initial;
    margin: -1px 0 2px 31px;
  }

  .language-switcher-auth {
    order: initial;
    margin: 0 auto 18px;
  }

  .language-switcher button {
    min-width: 52px;
    padding-inline: 7px;
  }
}

.navbar .nav-link {
  color: var(--carrot-text);
  font-weight: 500;
}

.navbar .nav-link:hover {
  color: var(--carrot-orange);
}

#mapArea,
#categoryMenu,
#products,
#local {
  scroll-margin-top: 86px;
}

.btn-primary {
  background-color: var(--carrot-orange-dark);
  border-color: var(--carrot-orange-dark);
}

.btn-primary:hover {
  background-color: var(--carrot-orange-dark);
  border-color: var(--carrot-orange-dark);
}

.qr-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 24px;
  background-color: #ffffff;
}

.qr-panel {
  display: grid;
  justify-items: center;
  gap: 18px;
  width: min(100%, 440px);
  text-align: center;
}

.qr-brand {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: var(--carrot-orange-dark);
}

.qr-brand i {
  font-size: 1.55rem;
}

.qr-brand h1 {
  margin: 0;
  font-size: 1.45rem;
  font-weight: 900;
  letter-spacing: 0;
}

.qr-image {
  display: block;
  width: min(100%, 360px);
  height: auto;
  border: 1px solid #F0D8DF;
  border-radius: 8px;
  background-color: #ffffff;
}

.suggestion-dock {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px;
  width: 100%;
  margin: 24px auto 18px;
  padding: 0 16px;
}

.footer-credit {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.suggestion-dock-inline {
  display: inline-flex;
  width: auto;
  margin: 0;
  padding: 0;
}

.suggestion-dock-button,
.suggestion-dock-admin {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  border-radius: 999px;
  padding: 10px 15px;
  font-weight: 800;
  font-size: 0.9rem;
  text-decoration: none;
  box-shadow: 0 10px 30px rgba(31, 32, 36, 0.16);
}

.suggestion-dock-inline .suggestion-dock-button,
.suggestion-dock-inline .suggestion-dock-admin {
  min-height: 26px;
  padding: 4px 9px;
  gap: 5px;
  font-size: 0.72rem;
  box-shadow: none;
}

.suggestion-dock-button {
  background-color: var(--carrot-orange-dark);
  color: #ffffff;
}

.suggestion-dock-button:hover {
  color: #ffffff;
  transform: translateY(-1px);
}

.suggestion-dock-admin {
  background-color: #ffffff;
  border: 1px solid #DDE2E8;
  color: var(--carrot-text);
}

.suggestion-dock-admin:hover {
  color: var(--carrot-orange-dark);
}

.suggestion-shell {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 20px;
  background-color: #ffffff;
}

.suggestion-header {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.suggestion-kicker {
  display: inline-flex;
  align-items: center;
  color: var(--carrot-orange-dark);
  font-size: 0.82rem;
  font-weight: 800;
  margin-bottom: 6px;
}

.suggestion-form {
  margin-top: 14px;
}

.suggestion-page-ref {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  background-color: #F8F9FA;
  color: #59636E;
  font-size: 0.83rem;
  font-weight: 700;
  padding: 8px 12px;
}

.inquiry-item {
  align-items: stretch;
}

.inquiry-thread {
  display: grid;
  gap: 10px;
  margin-top: 14px;
}

.inquiry-message {
  max-width: min(100%, 760px);
  border: 1px solid #E4E8ED;
  border-radius: 8px;
  padding: 12px 14px;
  background-color: #ffffff;
}

.inquiry-message-admin {
  border-color: rgba(170, 28, 65, 0.22);
  background-color: #FFF7FA;
}

.inquiry-message-user {
  background-color: #F8F9FA;
}

.inquiry-message-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
  color: #59636E;
  font-size: 0.78rem;
}

.inquiry-message-meta strong {
  color: var(--carrot-text);
}

.inquiry-message p {
  margin: 0;
  color: var(--carrot-text);
  line-height: 1.6;
}

.inquiry-reply-form textarea {
  resize: vertical;
}

.suggestion-list {
  display: grid;
  gap: 12px;
}

.suggestion-item {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  background-color: #ffffff;
  padding: 16px;
}

.suggestion-item-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.suggestion-type,
.suggestion-status {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 0.78rem;
  font-weight: 800;
}

.suggestion-type {
  background-color: #FFF1E6;
  color: var(--carrot-orange-dark);
}

.suggestion-status {
  background-color: #EEF4FF;
  color: #2563EB;
}

.suggestion-item strong {
  display: block;
  margin-bottom: 6px;
}

.suggestion-item p {
  color: #4D5661;
  font-size: 0.92rem;
  margin-bottom: 8px;
  white-space: pre-line;
}

.suggestion-item small,
.suggestion-admin-meta {
  color: var(--carrot-muted);
}

.suggestion-admin-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: 0.82rem;
}

.suggestion-page-link {
  color: var(--carrot-orange-dark);
  font-weight: 700;
  text-decoration: none;
}

.suggestion-status-filter {
  max-width: 180px;
}

/* 검색 영역 */
.search-bar-section {
  background-color: var(--carrot-bg);
}

.location-btn {
  background-color: #ffffff;
  font-weight: 600;
  height: 100%;
}

.location-select {
  height: 44px;
  font-weight: 600;
}

.input-group .form-control:focus {
  box-shadow: none;
  border-color: var(--carrot-orange);
}

.filter-chips {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}

.filter-chip {
  border: 1px solid #E1E4E8;
  background-color: #ffffff;
  border-radius: 999px;
  color: var(--carrot-text);
  font-size: 0.82rem;
  font-weight: 700;
  height: 44px;
}

.filter-chip.active,
.filter-chip:hover {
  background-color: var(--carrot-orange-dark);
  border-color: var(--carrot-orange-dark);
  color: #ffffff;
}

/* 요약 / 지도 */
.summary-grid {
  display: grid;
  grid-template-columns: 1.2fr 0.9fr 1fr;
  gap: 14px;
}

.summary-item {
  border: 1px solid rgba(226, 232, 240, 0.9);
  border-radius: 18px;
  padding: 18px;
  background-color: #ffffff;
  box-shadow: 0 10px 28px rgba(15, 23, 42, 0.07);
  color: var(--carrot-text);
  text-decoration: none;
  min-width: 0;
}

.summary-label {
  color: var(--carrot-muted);
  font-size: 0.8rem;
  font-weight: 700;
}

.summary-item strong {
  display: block;
  font-size: 0.95rem;
}

.summary-note {
  display: block;
  color: var(--carrot-muted);
  font-size: 0.72rem;
  margin-top: 3px;
}

.summary-heading {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 14px;
}

.summary-icon {
  display: inline-grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 11px;
  color: var(--carrot-primary);
  background: rgba(255, 107, 0, 0.1);
}

.summary-stat-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.summary-stat {
  min-width: 0;
}

.summary-stat + .summary-stat {
  border-left: 1px solid #edf0f3;
  padding-left: 10px;
}

.summary-stat strong {
  font-size: clamp(1rem, 2vw, 1.28rem);
  line-height: 1.2;
}

.summary-stat span {
  display: block;
  margin-top: 5px;
  color: var(--carrot-muted);
  font-size: 0.72rem;
  white-space: nowrap;
}

.summary-primary-value {
  font-size: clamp(1rem, 2vw, 1.15rem) !important;
  line-height: 1.4;
}

.summary-travel-card {
  position: relative;
  overflow: hidden;
  background: linear-gradient(145deg, #fff7ed, #ffffff 68%);
  transition: transform 160ms ease, box-shadow 160ms ease;
}

.summary-travel-card::after {
  content: '';
  position: absolute;
  right: -24px;
  bottom: -34px;
  width: 104px;
  height: 104px;
  border-radius: 50%;
  background: rgba(255, 107, 0, 0.08);
}

.summary-travel-card:active {
  transform: scale(0.97);
}

.summary-link-cue {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 12px;
  color: var(--carrot-primary);
  font-size: 0.78rem;
  font-weight: 800;
}

.map-panel {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 18px;
  background-color: #ffffff;
}

.map-badge {
  align-self: flex-start;
  background-color: #EAF7EF;
  border: 1px solid #CBEAD5;
  color: #177245;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 700;
  padding: 8px 12px;
}

/* 카테고리 */
.category-item {
  display: block;
  color: var(--carrot-text);
  text-decoration: none;
}

.category-item:hover {
  color: var(--carrot-text);
}

.category-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: #FFF1E6;
  border-radius: 16px;
  font-size: 1.4rem;
  color: var(--carrot-orange-dark);
  transition: transform 0.15s ease;
}

.category-item:hover .category-icon {
  transform: translateY(-3px);
  background-color: #FFE4D1;
}

.category-item p {
  font-size: 0.85rem;
  margin: 0;
  color: var(--carrot-text);
}

.category-item-note { display: inline-flex; align-items: center; gap: 3px; margin-top: 3px; padding: 2px 6px; border-radius: 999px; color: #087d99; background: #e8f8fc; font-size: .62rem; font-weight: 700; }

/* 상품 카드 */
.product-card {
  cursor: pointer;
}

.thumb-wrap {
  width: 100%;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: 12px;
  border: 0;
  padding: 0;
  background-color: #f0f0f0;
}

.thumb-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.2s ease;
}

.product-card:hover .thumb-wrap img {
  transform: scale(1.04);
}

.product-title {
  display: block;
  font-size: 0.92rem;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.product-title-link {
  color: var(--carrot-text);
  text-decoration: none;
}

.product-title-link:hover {
  color: var(--carrot-orange-dark);
}

.detail-title-row {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 6px;
}

.detail-title-row > a:first-child,
.detail-title-row > strong:first-child {
  flex: 1 1 auto;
  min-width: 0;
}

.detail-enter-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border-radius: 999px;
  background-color: #FFF1E6;
  color: var(--carrot-orange-dark);
  font-size: 0.72rem;
  text-decoration: none;
}

.detail-enter-link:hover {
  background-color: var(--carrot-orange-dark);
  color: #ffffff;
}

.detail-enter-link-static {
  pointer-events: none;
}

.product-price {
  font-size: 1rem;
  color: var(--carrot-text);
}

.product-meta {
  font-size: 0.78rem;
}

.deal-badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 9px;
  margin-bottom: 8px;
  border-radius: 999px;
  background-color: #FFF1E6;
  color: var(--carrot-orange-dark);
  font-size: 0.72rem;
  font-weight: 800;
}

.deal-badge.exchange {
  background-color: #EAF2FF;
  color: #1D64D8;
}

.deal-badge.free {
  background-color: #EAF7EF;
  color: #177245;
}

.btn-outline-primary {
  border-color: var(--carrot-orange-dark);
  color: var(--carrot-orange-dark);
}

.btn-outline-primary:hover {
  background-color: var(--carrot-orange-dark);
  border-color: var(--carrot-orange-dark);
}

.empty-state {
  border: 1px dashed #D8DDE3;
  border-radius: 8px;
  color: var(--carrot-muted);
  margin-top: 18px;
  padding: 30px;
  text-align: center;
}

.empty-state i {
  display: block;
  font-size: 1.6rem;
  margin-bottom: 8px;
}

.auth-status {
  border-radius: 8px;
  font-size: 0.9rem;
  line-height: 1.5;
  margin-bottom: 16px;
  padding: 12px 14px;
}

.auth-status-info {
  background-color: #EAF2FF;
  color: #1D64D8;
}

.auth-status-success {
  background-color: #EAF7EF;
  color: #177245;
}

.auth-status-warning {
  background-color: #FFF8E6;
  color: #8A5B00;
}

.business-upgrade-status {
  border: 1px solid #FFE0B8;
}

.business-upgrade-status-title {
  color: var(--carrot-orange-dark);
  font-weight: 900;
  margin-bottom: 6px;
}

.business-upgrade-status p {
  margin-bottom: 8px;
}

.business-upgrade-status p:last-of-type {
  margin-bottom: 12px;
}

.auth-status-error {
  background-color: #FDECEC;
  color: #B42318;
}

.mobile-progress-toast {
  display: none;
}

@media (max-width: 767.98px) {
  .sightseeing-travel-actions { grid-template-columns: 1fr; }
  .mobile-progress-toast {
    align-items: stretch;
    background: #FFFFFF;
    border: 1px solid rgba(21, 34, 50, 0.12);
    border-left: 5px solid #1D64D8;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(21, 34, 50, 0.22);
    display: flex;
    left: 12px;
    max-width: calc(100vw - 24px);
    position: fixed;
    right: 12px;
    top: calc(env(safe-area-inset-top, 0px) + 10px);
    z-index: 2100;
  }

  .mobile-progress-toast.d-none {
    display: none !important;
  }

  .mobile-progress-toast-main {
    align-items: center;
    background: transparent;
    border: 0;
    color: #15324A;
    display: flex;
    flex: 1;
    gap: 10px;
    min-width: 0;
    padding: 12px 8px 12px 12px;
    text-align: left;
  }

  .mobile-progress-toast-message {
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.45;
    overflow-wrap: anywhere;
  }

  .mobile-progress-toast-indicator {
    border: 3px solid rgba(29, 100, 216, 0.2);
    border-radius: 50%;
    border-top-color: #1D64D8;
    flex: 0 0 auto;
    height: 20px;
    width: 20px;
    animation: mobile-progress-spin 0.85s linear infinite;
  }

  .mobile-progress-toast-close {
    align-self: center;
    background: transparent;
    border: 0;
    color: #657487;
    font-size: 1.45rem;
    line-height: 1;
    padding: 12px;
  }

  .mobile-progress-toast-success {
    border-left-color: #177245;
  }

  .mobile-progress-toast-warning {
    border-left-color: #D38B00;
  }

  .mobile-progress-toast-error {
    border-left-color: #B42318;
  }

  .mobile-progress-toast-success .mobile-progress-toast-indicator,
  .mobile-progress-toast-warning .mobile-progress-toast-indicator,
  .mobile-progress-toast-error .mobile-progress-toast-indicator {
    animation: none;
    background: currentColor;
    border: 0;
    height: 12px;
    margin: 4px;
    width: 12px;
  }

  .mobile-progress-toast-success .mobile-progress-toast-main {
    color: #177245;
  }

  .mobile-progress-toast-warning .mobile-progress-toast-main {
    color: #8A5B00;
  }

  .mobile-progress-toast-error .mobile-progress-toast-main {
    color: #B42318;
  }
}

@keyframes mobile-progress-spin {
  to { transform: rotate(360deg); }
}

.chat-nav-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.chat-unread-badge {
  min-width: 20px;
  height: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  padding: 0 6px;
  background-color: #E03131;
  color: #ffffff;
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
}

/* 배너 */
.banner-box {
  background-color: #FFF1E6;
}

.info-tile {
  height: 100%;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 20px;
  background-color: #ffffff;
}

.info-tile i {
  color: var(--carrot-orange-dark);
  font-size: 1.4rem;
  margin-bottom: 12px;
}

.info-tile h6 {
  font-weight: 800;
  margin-bottom: 8px;
}

.info-tile p {
  color: var(--carrot-muted);
  font-size: 0.9rem;
  line-height: 1.6;
  margin: 0;
}

.life-preview-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.life-preview-card {
  display: block;
  overflow: hidden;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  background-color: #ffffff;
  color: var(--carrot-text);
  text-decoration: none;
}

.life-preview-card:hover {
  border-color: #FFD7BA;
  color: var(--carrot-text);
}

.life-preview-card-business {
  border-left: 4px solid #3730A3;
}

.life-preview-card-recommendation {
  border-left: 4px solid #047857;
}

.life-preview-card img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  background-color: #F0F0F0;
}

.life-preview-card div {
  padding: 10px 8px;
}

.life-preview-type {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  border-radius: 999px;
  padding: 0 7px;
  margin-bottom: 6px;
  font-size: 0.68rem;
  font-weight: 900;
}

.life-preview-type-business {
  background-color: #EEF2FF;
  color: #3730A3;
}

.life-preview-type-recommendation {
  background-color: #ECFDF5;
  color: #047857;
}

.life-preview-card strong,
.life-preview-card p {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.life-preview-card p {
  color: var(--carrot-muted);
  font-size: 0.82rem;
  margin: 4px 0;
}

.life-preview-card small {
  color: var(--carrot-muted);
  font-size: 0.74rem;
}

/* 푸터 */
.footer h6 {
  color: var(--carrot-text);
}

.footer-service-links {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 12px;
  margin-top: 10px;
  color: var(--carrot-muted);
  font-size: 0.86rem;
}

.footer-service-links span {
  color: var(--carrot-text);
  font-weight: 800;
}

.footer-service-links a,
.footer-text-link {
  color: var(--carrot-muted);
  text-decoration: none;
}

.footer-service-links a:hover,
.footer-text-link:hover {
  color: var(--carrot-orange-dark);
  text-decoration: underline;
}

.pwa-install-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.pwa-store-button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 142px;
  min-height: 48px;
  padding: 8px 14px;
  color: #ffffff;
  background: #161719;
  border: 1px solid #161719;
  border-radius: 8px;
  text-align: left;
  line-height: 1.05;
  transition: transform 0.15s ease, background 0.15s ease, border-color 0.15s ease;
}

.pwa-store-button:hover,
.pwa-store-button:focus {
  color: #ffffff;
  background: #2a2d31;
  border-color: #2a2d31;
  transform: translateY(-1px);
}

.pwa-store-button i {
  width: 22px;
  font-size: 1.45rem;
  text-align: center;
}

.pwa-store-button span {
  display: grid;
  gap: 2px;
  font-size: 1rem;
  font-weight: 800;
}

.pwa-store-button small {
  color: rgba(255, 255, 255, 0.76);
  font-size: 0.68rem;
  font-weight: 600;
}

.pwa-store-button.is-disabled {
  cursor: default;
  opacity: 0.62;
  transform: none;
}

.pwa-install-help {
  max-width: 320px;
}

/* 채팅 모달 */
.chat-modal-content {
  border-radius: 16px;
  overflow: hidden;
}

.chat-product-thumb {
  width: 40px;
  height: 40px;
  object-fit: cover;
  border-radius: 8px;
}

.chat-price-bar {
  background-color: #FFF7F0;
}

.chat-body {
  background-color: var(--carrot-bg);
  height: 380px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.chat-bubble {
  max-width: 75%;
  padding: 10px 14px;
  border-radius: 16px;
  font-size: 0.9rem;
  line-height: 1.4;
  word-break: break-word;
}

.chat-sender {
  font-size: 0.75rem;
  color: var(--carrot-muted);
  margin-bottom: 2px;
}

.chat-bubble-system {
  align-self: center;
  background-color: #ECECEC;
  color: var(--carrot-muted);
  font-size: 0.78rem;
  text-align: center;
  max-width: 90%;
}

.chat-bubble-left {
  align-self: flex-start;
  background-color: #ffffff;
  border: 1px solid #eee;
  border-top-left-radius: 4px;
}

.chat-bubble-right {
  align-self: flex-end;
  background-color: #FFD84D;
  color: #5B4300;
  border-top-right-radius: 4px;
}

.chat-footer {
  display: flex;
  gap: 8px;
}

.chat-footer .form-control:focus {
  box-shadow: none;
  border-color: var(--carrot-orange);
}

.chat-page,
.chat-room-page {
  background-color: var(--carrot-bg);
  min-height: calc(100vh - 70px);
}

.chat-list-shell,
.chat-room-shell {
  max-width: 780px;
  margin: 0 auto;
}

.chat-list {
  display: grid;
  gap: 10px;
}

.chat-list-item {
  display: flex;
  gap: 12px;
  align-items: center;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px;
  background-color: #ffffff;
  color: var(--carrot-text);
  text-decoration: none;
}

.chat-list-item:hover {
  border-color: #FFD7BA;
  color: var(--carrot-text);
}

.chat-list-item img {
  width: 64px;
  height: 64px;
  flex: 0 0 64px;
  object-fit: cover;
  border-radius: 8px;
  background-color: #F0F0F0;
}

.chat-list-main {
  min-width: 0;
  flex: 1;
}

.chat-list-title {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  gap: 6px;
}

.chat-list-unread-badge {
  flex: 0 0 auto;
  border-radius: 999px;
  padding: 3px 7px;
  background-color: #E03131;
  color: #ffffff;
  font-size: 0.7rem;
  font-weight: 800;
  line-height: 1;
}

.chat-list-main strong,
.chat-list-main p {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-list-main p {
  color: var(--carrot-text);
  font-size: 0.92rem;
}

.chat-list-main small,
.chat-list-time {
  color: var(--carrot-muted);
  font-size: 0.78rem;
}

.chat-product-bar {
  display: flex;
  gap: 12px;
  align-items: center;
  border: 1px solid #EDEFF2;
  border-radius: 8px 8px 0 0;
  padding: 12px;
  background-color: #ffffff;
}

.chat-product-bar img {
  width: 54px;
  height: 54px;
  object-fit: cover;
  border-radius: 8px;
  background-color: #F0F0F0;
}

.chat-room-messages {
  height: min(62vh, 620px);
  min-height: 360px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
  border-left: 1px solid #EDEFF2;
  border-right: 1px solid #EDEFF2;
  padding: 16px;
  background-color: #F8F9FA;
}

.chat-date-divider {
  align-self: center;
  margin: 4px 0 2px;
  padding: 5px 11px;
  border-radius: 999px;
  background-color: #E9ECEF;
  color: var(--carrot-muted);
  font-size: 0.74rem;
  font-weight: 700;
  line-height: 1.2;
}

.chat-message-time {
  margin-top: 4px;
  font-size: 0.72rem;
  opacity: 0.72;
  text-align: right;
}

.chat-room-form {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  border: 1px solid #EDEFF2;
  border-radius: 0 0 8px 8px;
  padding: 12px;
  background-color: #ffffff;
}

.chat-attach-button {
  width: 40px;
  height: 40px;
  flex: 0 0 40px;
  padding: 0;
}

.chat-room-compose-main {
  display: grid;
  flex: 1;
  min-width: 0;
  gap: 8px;
}

.chat-room-form .form-control:focus {
  box-shadow: none;
  border-color: var(--carrot-orange);
}

.chat-attachment-preview {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.chat-selected-attachment {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 5px 8px;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  background-color: #F8F9FA;
  color: var(--carrot-text);
  font-size: 0.78rem;
}

.chat-selected-attachment span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-selected-attachment button {
  display: inline-grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border: 0;
  border-radius: 50%;
  padding: 0;
  background-color: #E9ECEF;
  color: var(--carrot-muted);
}

.chat-message-attachments {
  display: grid;
  gap: 7px;
  margin-top: 6px;
}

.chat-attachment-refresh {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 6px;
  margin-top: 2px;
  padding: 5px 9px;
  border: 1px solid rgba(170, 28, 65, 0.22);
  border-radius: 999px;
  background-color: rgba(255, 255, 255, 0.78);
  color: #7A1431;
  font-size: 0.75rem;
  font-weight: 800;
  line-height: 1.2;
}

.chat-bubble-right .chat-attachment-refresh {
  border-color: rgba(91, 67, 0, 0.18);
  background-color: rgba(255, 255, 255, 0.68);
  color: #5B4300;
}

.chat-attachment-refresh.is-loading i {
  animation: chat-attachment-spin 0.8s linear infinite;
}

@keyframes chat-attachment-spin {
  to { transform: rotate(360deg); }
}

.chat-message-attachment {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  width: 100%;
  max-width: 260px;
  border: 1px solid rgba(0, 0, 0, 0.08);
  border-radius: 8px;
  padding: 8px 10px;
  background-color: rgba(255, 255, 255, 0.92);
  color: var(--carrot-text);
  text-align: left;
}

.chat-bubble-right .chat-message-attachment {
  border-color: rgba(91, 67, 0, 0.18);
  background-color: rgba(255, 255, 255, 0.68);
  color: #5B4300;
}

.chat-message-attachment-image {
  width: 180px;
  height: 135px;
  justify-content: center;
  overflow: hidden;
  padding: 0;
}

.chat-message-attachment-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.chat-attachment-name {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-attachment-size {
  flex: 0 0 auto;
  font-size: 0.72rem;
  opacity: 0.75;
}

.chat-attachment-expired {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  width: fit-content;
  max-width: 100%;
  border: 1px dashed #ADB5BD;
  border-radius: 8px;
  padding: 7px 9px;
  background-color: rgba(255, 255, 255, 0.72);
  color: var(--carrot-muted);
  font-size: 0.82rem;
}

.chat-attachment-modal,
.chat-image-viewer {
  position: fixed;
  inset: 0;
  z-index: 1080;
  display: grid;
  place-items: center;
}

.chat-attachment-modal.d-none,
.chat-image-viewer.d-none {
  display: none !important;
}

.chat-attachment-modal-backdrop,
.chat-image-viewer-backdrop {
  position: absolute;
  inset: 0;
  background-color: rgba(17, 17, 17, 0.66);
}

.chat-attachment-modal-dialog {
  position: relative;
  z-index: 1;
  width: min(92vw, 460px);
  overflow: hidden;
  border-radius: 12px;
  background-color: #ffffff;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.24);
}

.chat-attachment-modal-header,
.chat-image-viewer-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 18px;
  border-bottom: 1px solid #E9ECEF;
}

.chat-attachment-modal-header h2,
.chat-image-viewer-toolbar strong {
  margin: 0;
  color: var(--carrot-text);
  font-size: 1rem;
  font-weight: 800;
}

.chat-modal-icon-button {
  display: inline-grid;
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  place-items: center;
  border: 0;
  border-radius: 50%;
  background-color: #F1F3F5;
  color: var(--carrot-muted);
}

.chat-attachment-modal-body {
  padding: 18px;
  color: var(--carrot-text);
  font-size: 0.9rem;
  line-height: 1.65;
}

.chat-attachment-modal-body p {
  margin-bottom: 10px;
}

.chat-attachment-modal-body ul {
  margin: 0;
  padding-left: 20px;
}

.chat-attachment-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 0 18px 18px;
}

.chat-image-viewer {
  padding: 16px;
}

.chat-image-viewer-panel {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  width: min(96vw, 1100px);
  max-height: 94vh;
  overflow: hidden;
  border-radius: 10px;
  background-color: #111111;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}

.chat-image-viewer-toolbar {
  border-bottom-color: rgba(255, 255, 255, 0.14);
  color: #ffffff;
}

.chat-image-viewer-toolbar strong {
  min-width: 0;
  overflow: hidden;
  color: #ffffff;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chat-image-viewer-toolbar .chat-modal-icon-button {
  background-color: rgba(255, 255, 255, 0.14);
  color: #ffffff;
}

.chat-image-viewer-content {
  display: grid;
  min-height: 180px;
  place-items: center;
  overflow: auto;
  padding: 16px;
}

.chat-image-viewer-content img {
  display: block;
  max-width: 100%;
  max-height: calc(94vh - 90px);
  object-fit: contain;
}

.chat-image-viewer-status {
  color: rgba(255, 255, 255, 0.82);
  font-size: 0.9rem;
}

.chat-message-attachment-unavailable {
  opacity: 0.7;
}

.life-page,
.life-detail-page {
  background-color: var(--carrot-bg);
  min-height: calc(100vh - 70px);
}

.life-list-shell,
.life-detail-shell {
  max-width: 860px;
  margin: 0 auto;
}

.life-sort-group {
  display: inline-grid;
  grid-template-columns: repeat(2, 1fr);
  overflow: hidden;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  background-color: #ffffff;
}

.life-sort-btn {
  min-width: 92px;
  height: 38px;
  border: 0;
  background-color: transparent;
  color: var(--carrot-muted);
  font-size: 0.86rem;
  font-weight: 800;
}

.life-sort-btn.active {
  background-color: var(--carrot-orange-dark);
  color: #ffffff;
}

.category-map-panel {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 16px;
  background-color: #ffffff;
}

.category-map {
  width: 100%;
  height: 340px;
  overflow: hidden;
  border-radius: 8px;
  background-color: #F0F0F0;
}

.map-touch-locked .leaflet-pane,
.map-touch-locked .leaflet-control-attribution {
  pointer-events: none;
}

.map-touch-locked .leaflet-control-zoom {
  pointer-events: auto;
}

.map-panel-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.map-detail-trigger {
  height: 34px;
  border-radius: 999px;
  font-size: 0.82rem;
  font-weight: 800;
}

.map-detail-open {
  overflow: hidden;
}

.map-detail-overlay {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  background-color: #ffffff;
}

.map-detail-topbar,
.map-detail-footer {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  min-width: 0;
  padding: 10px 14px;
  border-bottom: 1px solid #EDEFF2;
  background-color: #ffffff;
}

.map-detail-footer {
  justify-content: space-between;
  align-items: stretch;
  border-top: 1px solid #EDEFF2;
  border-bottom: 0;
}

.map-detail-footer-main {
  display: grid;
  gap: 8px;
  min-width: 0;
  flex: 1;
}

.map-detail-footer-actions {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  flex: 0 0 auto;
}

.map-detail-topbar strong,
.map-detail-footer span {
  min-width: 0;
  overflow: hidden;
  color: var(--carrot-text);
  font-size: 0.94rem;
  font-weight: 800;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.map-detail-topbar strong {
  flex: 1;
}

.map-detail-footer span {
  color: var(--carrot-muted);
  font-size: 0.82rem;
  font-weight: 700;
}

.map-detail-landmark-summary {
  min-height: 0;
}

.map-detail-landmark-summary .landmark-summary {
  max-width: 720px;
  padding: 10px;
}

.map-detail-landmark-summary .landmark-summary-image-button,
.map-detail-landmark-summary .landmark-summary-placeholder {
  width: 96px;
  height: 72px;
}

.map-detail-landmark-summary .landmark-summary p {
  display: -webkit-box;
  overflow: hidden;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.map-detail-map {
  width: 100%;
  height: 100%;
  min-height: 0;
  background-color: #F0F0F0;
}

.map-detail-icon-button,
.map-detail-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 38px;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  padding: 0 12px;
  background-color: #ffffff;
  color: var(--carrot-text);
  font-size: 0.86rem;
  font-weight: 800;
}

.map-detail-icon-button {
  width: 38px;
  min-width: 38px;
  padding: 0;
}

.map-detail-primary {
  border-color: var(--carrot-orange-dark);
  background-color: var(--carrot-orange-dark);
  color: #ffffff;
}

.map-detail-legend {
  display: flex;
  align-items: center;
  gap: 8px;
  overflow-x: auto;
  min-width: 0;
  padding: 8px 14px;
  border-bottom: 1px solid #EDEFF2;
  background-color: #FAFAFB;
  scrollbar-width: thin;
}

.map-detail-legend.d-none {
  display: none;
}

.map-detail-legend-button,
.map-detail-legend-static,
.map-detail-legend-loading {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 6px;
  height: 32px;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  padding: 0 10px;
  background-color: #ffffff;
  color: var(--carrot-text);
  font-size: 0.78rem;
  font-weight: 800;
  white-space: nowrap;
}

.map-detail-legend-button.active {
  border-color: var(--carrot-orange-dark);
  background-color: var(--carrot-orange-dark);
  color: #ffffff;
}

.map-detail-legend-button small {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  border-radius: 999px;
  padding: 0 6px;
  background-color: #F4F5F6;
  color: var(--carrot-muted);
  font-size: 0.72rem;
  font-weight: 900;
}

.map-detail-legend-button.active small {
  background-color: rgba(255, 255, 255, 0.2);
  color: #ffffff;
}

.map-detail-legend-dot,
.selected-location-mini-dot {
  width: 9px;
  height: 9px;
  border-radius: 999px;
  background-color: var(--legend-color, var(--carrot-orange-dark));
}

.selected-location-mini-dot {
  background-color: #2563EB;
}

.current-location-mini-dot {
  position: relative;
  width: 12px;
  height: 12px;
  border-radius: 999px;
  background-color: #2563EB;
}

.current-location-mini-dot::after {
  content: "";
  position: absolute;
  inset: -5px;
  border: 2px solid rgba(37, 99, 235, 0.35);
  border-radius: 999px;
}

.map-detail-legend-static,
.map-detail-legend-loading {
  color: var(--carrot-muted);
}

.map-badge-muted {
  background-color: #F4F5F6;
  border-color: #E1E4E8;
  color: var(--carrot-muted);
}

.current-location-marker {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 0;
}

.current-location-marker::before {
  content: "";
  position: absolute;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  background-color: rgba(37, 99, 235, 0.22);
  animation: current-location-pulse 1.7s ease-in-out infinite;
}

.current-location-marker span {
  position: relative;
  display: block;
  width: 13px;
  height: 13px;
  border: 2px solid #ffffff;
  border-radius: 999px;
  background-color: #2563EB;
  box-shadow: 0 3px 10px rgba(37, 99, 235, 0.4);
  animation: current-location-dot 1.7s ease-in-out infinite;
}

@keyframes current-location-pulse {
  0%,
  100% {
    transform: scale(0.72);
    opacity: 0.34;
  }

  50% {
    transform: scale(1.18);
    opacity: 0.16;
  }
}

@keyframes current-location-dot {
  0%,
  100% {
    transform: scale(0.92);
  }

  50% {
    transform: scale(1.14);
  }
}

.category-map-popup-meta {
  color: var(--carrot-muted);
  font-size: 0.8rem;
  margin: 4px 0 0;
}

.category-map-popup-link {
  color: var(--carrot-orange-dark);
  font-weight: 800;
  text-decoration: none;
}

.category-map-popup-link:hover {
  text-decoration: underline;
}

.life-post-list {
  display: grid;
  gap: 12px;
}

.post-type-filter-group {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
  border: 1px solid #EDEFF2;
  border-radius: 999px;
  padding: 4px;
  background-color: #ffffff;
}

.post-type-filter {
  min-height: 32px;
  border: 0;
  border-radius: 999px;
  padding: 0 13px;
  background-color: transparent;
  color: var(--carrot-muted);
  font-size: 0.82rem;
  font-weight: 800;
}

.post-type-filter.active {
  background-color: #AA1C41;
  color: #ffffff;
}

.education-subject-filter-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.education-subject-filter,
.education-subject-choice {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  border: 1px solid #E1E4E8;
  border-radius: 999px;
  padding: 0 13px;
  background-color: #ffffff;
  color: var(--carrot-text);
  font-size: 0.82rem;
  font-weight: 800;
}

.education-subject-filter.active,
.btn-check:checked + .education-subject-choice {
  border-color: #7C3AED;
  background-color: #F4F0FF;
  color: #6D28D9;
}

.education-subject-choice-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.education-subject-choice {
  cursor: pointer;
}

.education-subject-badge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  border-radius: 999px;
  padding: 0 7px;
  margin: 0 5px 6px 0;
  background-color: #F4F0FF;
  color: #6D28D9;
  font-size: 0.68rem;
  font-weight: 900;
}

.life-post-card {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: 14px;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px;
  background-color: #ffffff;
  color: var(--carrot-text);
  text-decoration: none;
  cursor: pointer;
}

.life-post-card-business {
  border-left: 5px solid #3730A3;
  background: linear-gradient(90deg, #F8FAFF 0, #ffffff 34%);
}

.life-post-card-recommendation {
  border-left: 5px solid #047857;
  background: linear-gradient(90deg, #F7FFFB 0, #ffffff 34%);
}

.life-post-card:hover {
  border-color: #FFD7BA;
  color: var(--carrot-text);
}

.life-post-card:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.2);
  outline-offset: 3px;
}

.life-post-card img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 8px;
  background-color: #F0F0F0;
}

.life-post-image-button {
  width: 100%;
  border: 0;
  padding: 0;
  border-radius: 8px;
  background-color: transparent;
  text-align: left;
}

.life-post-image-button img {
  display: block;
}

.life-post-title-link {
  display: block;
  min-width: 0;
  overflow: hidden;
  color: var(--carrot-text);
  font-weight: 800;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.life-post-title-link:hover {
  color: var(--carrot-orange-dark);
}

.life-post-card-body {
  min-width: 0;
  position: relative;
  padding-bottom: 36px;
}

.life-post-card-body strong,
.life-post-card-body p {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.life-post-card-body p {
  color: var(--carrot-text);
  font-size: 0.92rem;
  margin: 8px 0;
}

.life-post-type-note {
  color: var(--carrot-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

.life-post-card-body small,
.life-post-time {
  color: var(--carrot-muted);
  font-size: 0.78rem;
}

.life-post-map-button {
  position: absolute;
  right: 0;
  bottom: 0;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 30px;
  border: 1px solid rgba(170, 28, 65, 0.28);
  border-radius: 999px;
  padding: 0 10px;
  background-color: #ffffff;
  color: #AA1C41;
  font-size: 0.78rem;
  font-weight: 800;
  line-height: 1;
}

.life-post-map-button:hover {
  border-color: #AA1C41;
  background-color: #FFF7FA;
}

.life-post-map-button.disabled,
.life-post-map-button:disabled {
  border-color: #E1E4E8;
  background-color: #F7F8FA;
  color: #A6ADB7;
  cursor: not-allowed;
  opacity: 1;
}

.post-type-choice {
  height: 100%;
  border: 1px solid #E1E4E8;
  border-radius: 8px;
  padding: 12px;
  background-color: #ffffff;
  cursor: pointer;
}

.post-type-choice strong {
  display: block;
  color: var(--carrot-text);
  font-size: 0.95rem;
}

.post-type-choice small {
  display: block;
  margin-top: 4px;
  color: var(--carrot-muted);
  font-size: 0.78rem;
  line-height: 1.45;
}

.btn-check:checked + .post-type-choice {
  border-color: #AA1C41;
  background-color: #FFF7FA;
  box-shadow: 0 0 0 3px rgba(170, 28, 65, 0.1);
}

.post-limit-notice {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  border: 1px solid #F1D8E0;
  border-radius: 8px;
  padding: 10px 12px;
  color: #7B1F3A;
  background-color: #FFF7FA;
  font-size: 0.82rem;
  line-height: 1.55;
}

.post-limit-notice i {
  margin-top: 3px;
  color: #AA1C41;
}

.business-fields {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 14px;
  background-color: #FBFCFD;
}

.business-owner-confirm .form-check-label {
  color: var(--carrot-orange-dark);
  font-weight: 800;
}

.business-owner-confirm .form-check-input:checked {
  background-color: var(--carrot-orange-dark);
  border-color: var(--carrot-orange-dark);
}

.life-post-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 4px 0 6px;
}

.life-post-badge {
  display: inline-flex;
  align-items: center;
  height: 22px;
  border-radius: 999px;
  padding: 0 8px;
  font-size: 0.72rem;
  font-weight: 800;
}

.life-post-badge-business {
  background-color: #EEF2FF;
  color: #3730A3;
}

.life-post-badge-recommendation {
  background-color: #ECFDF5;
  color: #047857;
}

.life-post-badge-pending {
  background-color: #FFF7ED;
  color: #C2410C;
}

.life-detail-shell {
  overflow: hidden;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  background-color: #ffffff;
}

.life-detail-gallery {
  background-color: #F8F9FA;
}

.life-detail-gallery > img {
  width: 100%;
  max-height: 520px;
  object-fit: contain;
  background-color: #F0F0F0;
}

.life-detail-thumbs {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 12px;
}

.life-detail-thumb {
  width: 72px;
  height: 72px;
  flex: 0 0 72px;
  overflow: hidden;
  border: 2px solid transparent;
  border-radius: 8px;
  padding: 0;
  background-color: #ffffff;
}

.life-detail-thumb.active {
  border-color: var(--carrot-orange-dark);
}

.life-detail-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.life-detail-body {
  padding: 22px;
}

.life-owner-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.life-owner-bump-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.comment-toggle-field,
.owner-comment-toggle {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px 14px;
  background: #FBFCFD;
}

.comment-toggle-switch {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
}

.comment-toggle-switch .form-check-input,
.owner-comment-toggle .form-check-input {
  flex: 0 0 auto;
  margin-left: 0;
}

.comment-toggle-switch .form-check-label {
  display: flex;
  flex-direction: column;
  gap: 2px;
  color: var(--carrot-text);
}

.comment-toggle-switch small {
  color: var(--carrot-muted);
  font-size: 0.82rem;
}

.owner-comment-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
}

.life-detail-content {
  min-height: 180px;
  margin-top: 20px;
  color: var(--carrot-text);
  font-size: 1rem;
  line-height: 1.8;
  word-break: break-word;
}

.life-post-type-notice {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px 14px;
  margin: 10px 0 16px;
  font-size: 0.9rem;
  line-height: 1.55;
}

.life-post-type-notice strong {
  display: block;
  margin-bottom: 4px;
  font-weight: 900;
}

.life-post-type-notice p {
  margin: 0;
  color: var(--carrot-muted);
}

.life-post-type-notice-business {
  border-color: #C7D2FE;
  background-color: #F8FAFF;
}

.life-post-type-notice-business strong {
  color: #3730A3;
}

.life-post-type-notice-recommendation {
  border-color: #BDEBD6;
  background-color: #F7FFFB;
}

.life-post-type-notice-recommendation strong {
  color: #047857;
}

.life-location-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  margin-top: 18px;
  padding: 12px 14px;
  background-color: #F8F9FA;
}

.life-location-box strong {
  display: block;
  margin-bottom: 4px;
  color: var(--carrot-text);
}

.life-location-box p {
  color: var(--carrot-muted);
  font-size: 0.86rem;
}

.life-detail-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  border-top: 1px solid #EDEFF2;
  margin-top: 24px;
  padding-top: 16px;
}

.business-qr-modal {
  overflow: hidden;
  border: 0;
  border-radius: 22px;
  box-shadow: 0 22px 60px rgba(43, 27, 32, 0.2);
}

.business-qr-kicker {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  border-radius: 9999px;
  background: rgba(170, 28, 65, 0.09);
  color: var(--carrot-primary, #AA1C41);
  font-size: 0.78rem;
  font-weight: 800;
}

.business-qr-help {
  margin: 0 0 16px;
  color: var(--carrot-muted, #74676c);
  font-size: 0.9rem;
  line-height: 1.6;
}

.business-qr-card {
  padding: 18px;
  border: 1px solid rgba(170, 28, 65, 0.12);
  border-radius: 18px;
  background: linear-gradient(180deg, #fff8fa 0%, #ffffff 100%);
  text-align: center;
}

.business-qr-name {
  color: var(--carrot-text, #2B1B20);
  font-size: 1.05rem;
  font-weight: 800;
}

.business-qr-code {
  display: block;
  width: min(100%, 280px);
  height: auto;
  margin: 0 auto 14px;
  border-radius: 8px;
  background: #ffffff;
}

.business-qr-code canvas,
.business-qr-code img {
  display: block;
  width: 280px;
  height: 280px;
  max-width: 100%;
  margin: 0 auto;
}

.business-qr-url {
  overflow-wrap: anywhere;
  color: var(--carrot-muted, #74676c);
  font-size: 0.76rem;
  line-height: 1.45;
}

.business-qr-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 16px;
}

.business-qr-status {
  margin-top: 12px;
  color: var(--carrot-muted, #74676c);
  font-size: 0.82rem;
  text-align: center;
}

.business-qr-status-error {
  color: #B42318;
}

@media (max-width: 576px) {
  .business-qr-modal .modal-body {
    padding: 16px;
  }

  .business-qr-actions > * {
    flex: 1 1 calc(50% - 8px);
    min-width: 132px;
  }
}

.business-contact-box {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  margin-top: 18px;
  padding: 12px 14px;
  background-color: #FBFCFD;
}

.business-contact-box strong {
  display: block;
  margin-bottom: 4px;
}

.business-contact-box p {
  margin: 0;
  color: var(--carrot-muted);
}

.business-service-section {
  border: 1px solid #EDEFF2;
  border-radius: 16px;
  margin-top: 16px;
  padding: 18px;
  background-color: #ffffff;
}

.business-service-list {
  display: grid;
  gap: 14px;
}

.business-service-item {
  overflow: hidden;
  border: 1px solid rgba(170, 28, 65, 0.11);
  border-radius: 16px;
  background-color: #ffffff;
  box-shadow: 0 10px 28px rgba(43, 27, 32, 0.07);
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease;
}

.business-service-item:hover {
  border-color: rgba(170, 28, 65, 0.24);
  box-shadow: 0 14px 34px rgba(43, 27, 32, 0.1);
}

.business-service-item-highlight {
  border-color: var(--carrot-primary);
  box-shadow: 0 0 0 3px rgba(170, 28, 65, 0.16);
}

.business-service-promo-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  border-radius: 999px;
  padding: 3px 9px;
  background: #FDE8EF;
  color: var(--carrot-primary);
  font-size: 0.78rem;
  font-weight: 800;
}

.business-service-promo-badge-muted {
  background: #F1F3F5;
  color: var(--carrot-muted);
}

.business-service-gallery {
  padding: 10px 10px 0;
  background: linear-gradient(180deg, #fff8fa 0%, #ffffff 100%);
}

.business-service-gallery-main {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  border-radius: 12px;
  overflow: hidden;
  background: transparent;
  cursor: zoom-in;
}

.business-service-gallery-main:focus-visible,
.business-service-thumbnail:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.24);
  outline-offset: 2px;
}

.business-service-gallery-main img,
.business-service-placeholder {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background-color: #F3F4F6;
}

.business-service-gallery-main img {
  transition: transform 220ms ease;
}

.business-service-gallery-main:hover img {
  transform: scale(1.015);
}

.business-service-thumbnails {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 9px 1px 2px;
  scrollbar-width: thin;
  overscroll-behavior-inline: contain;
}

.business-service-thumbnail {
  flex: 0 0 68px;
  width: 68px;
  height: 54px;
  padding: 2px;
  overflow: hidden;
  border: 2px solid transparent;
  border-radius: 10px;
  background: #ffffff;
  transition: transform 140ms ease, border-color 140ms ease;
}

.business-service-thumbnail img {
  width: 100%;
  height: 100%;
  border-radius: 6px;
  object-fit: cover;
}

.business-service-thumbnail.is-active {
  border-color: var(--carrot-primary);
}

.business-service-thumbnail:active,
.business-service-actions .btn:active {
  transform: scale(0.97);
}

.business-service-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #AA1C41;
  background-color: #F6E9EE;
  font-size: 1.6rem;
}

.business-service-body {
  padding: 18px;
}

.business-service-location {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  color: var(--carrot-muted);
  font-size: 0.86rem;
  line-height: 1.4;
}

.business-service-location a {
  color: var(--carrot-orange-dark);
  font-weight: 800;
  text-decoration: none;
}

.business-service-location a:hover {
  text-decoration: underline;
}

.business-service-body p {
  margin: 0;
  color: var(--carrot-text);
  line-height: 1.65;
  word-break: break-word;
}

.business-service-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.business-service-visitor-actions .btn {
  min-height: 44px;
  padding-inline: 18px;
  font-weight: 800;
}

@media (max-width: 767.98px) {
  .business-service-section {
    padding: 14px;
  }

  .business-service-body {
    padding: 16px;
  }

  .business-service-gallery-main img,
  .business-service-placeholder {
    aspect-ratio: 4 / 3;
  }

  .business-service-visitor-actions .btn {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .business-service-item,
  .business-service-gallery-main img,
  .business-service-thumbnail {
    transition: none;
  }
}

.life-comments-section {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  margin-top: 16px;
  padding: 18px;
  background-color: #ffffff;
}

.life-comment-form textarea {
  resize: vertical;
}

.life-comment-list {
  display: grid;
  gap: 10px;
}

.life-comment-item {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px;
  background-color: #FBFCFD;
}

.life-comment-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
}

.life-comment-top strong {
  color: var(--carrot-text);
  font-size: 0.92rem;
}

.life-comment-top span {
  color: var(--carrot-muted);
  font-size: 0.76rem;
}

.life-comment-item p {
  margin: 0;
  color: var(--carrot-text);
  font-size: 0.92rem;
  line-height: 1.6;
  word-break: break-word;
}

.business-admin-evidence {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 10px;
  color: var(--carrot-muted);
  font-size: 0.84rem;
}

.business-admin-evidence a {
  color: var(--carrot-orange-dark);
  font-weight: 800;
  text-decoration: none;
}

.business-admin-evidence a:hover {
  text-decoration: underline;
}

.image-preview-modal {
  position: relative;
  overflow: hidden;
  border: 0;
  border-radius: 8px;
  background-color: #111111;
}

.image-preview-modal img {
  width: 100%;
  max-height: 86vh;
  object-fit: contain;
  background-color: #111111;
}

.image-preview-close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 2;
  padding: 10px;
  border-radius: 999px;
  background-color: #ffffff;
  opacity: 0.92;
}

.landmark-marker {
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 0;
}

.landmark-marker-dot {
  display: block;
  width: 10px;
  height: 10px;
  border: 1.5px solid #ffffff;
  border-radius: 999px;
  background-color: #AA1C41;
  box-shadow: 0 2px 6px rgba(170, 28, 65, 0.28);
}

.landmark-name-tooltip {
  max-width: 132px;
  padding: 3px 9px;
  border: 1px solid rgba(170, 28, 65, 0.18);
  border-radius: 7px;
  background-color: rgba(255, 255, 255, 0.96);
  box-shadow: 0 8px 18px rgba(31, 41, 55, 0.18);
  color: #7A1431;
  font-size: 0.72rem;
  font-weight: 900;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  opacity: 1 !important;
  cursor: pointer;
  pointer-events: auto;
  transform-origin: center bottom;
}

.overview-point-tooltip {
  max-width: 180px;
  padding: 3px 8px;
  border: 1px solid rgba(31, 41, 55, 0.16);
  border-radius: 7px;
  background-color: rgba(255, 255, 255, 0.96);
  box-shadow: 0 8px 18px rgba(31, 41, 55, 0.16);
  color: #27303B;
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
}

.leaflet-tooltip-top.overview-point-tooltip {
  margin-top: -8px;
}

.overview-point-tooltip::before {
  border-top-color: rgba(255, 255, 255, 0.96);
}

.landmark-name-tooltip:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.28);
  outline-offset: 2px;
}

.leaflet-tooltip-top.landmark-name-tooltip {
  margin-top: -8px;
}

.landmark-name-tooltip::before {
  display: none;
}

.landmark-name-tooltip::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -6px;
  width: 10px;
  height: 10px;
  background-color: rgba(255, 255, 255, 0.96);
  border-right: 1px solid rgba(170, 28, 65, 0.18);
  border-bottom: 1px solid rgba(170, 28, 65, 0.18);
  transform: translateX(-50%) rotate(45deg);
}

.landmark-summary-shell {
  min-height: 86px;
}

.landmark-summary {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr);
  gap: 14px;
  align-items: stretch;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px;
  background-color: #ffffff;
}

.landmark-summary-image-button,
.landmark-summary-placeholder {
  width: 112px;
  height: 86px;
  border-radius: 8px;
  background-color: #F6E9EE;
}

.landmark-summary-image-button {
  position: relative;
  overflow: hidden;
  padding: 0;
  border: 0;
  cursor: zoom-in;
}

.landmark-summary-image-button img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.landmark-summary-image-button span {
  position: absolute;
  right: 7px;
  bottom: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 999px;
  color: #ffffff;
  background-color: rgba(17, 24, 39, 0.72);
  font-size: 0.78rem;
}

.landmark-summary-image-button:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.25);
  outline-offset: 3px;
}

.landmark-summary-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #AA1C41;
  font-size: 1.35rem;
}

.landmark-summary-body {
  min-width: 0;
}

.landmark-summary-kicker {
  color: #AA1C41;
  font-size: 0.78rem;
  font-weight: 700;
  margin-bottom: 2px;
}

.landmark-summary strong {
  display: block;
  color: var(--carrot-text);
  font-size: 1rem;
  margin-bottom: 4px;
}

.landmark-summary p {
  margin: 0 0 6px;
  color: var(--carrot-text);
  font-size: 0.9rem;
  line-height: 1.5;
  word-break: break-word;
}

.landmark-summary small {
  color: var(--carrot-muted);
}

.landmark-summary-empty {
  background-color: #FAFAFB;
}

.landmark-viewer-open {
  overflow: hidden;
}

.landmark-image-viewer {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 22px;
  background-color: rgba(17, 24, 39, 0.88);
}

.landmark-image-viewer.d-none {
  display: none !important;
}

.landmark-image-viewer-frame {
  width: min(920px, 100%);
  max-height: 92vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.landmark-image-viewer-frame img {
  max-width: 100%;
  max-height: calc(92vh - 54px);
  border-radius: 8px;
  object-fit: contain;
  background-color: #111827;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.32);
}

.landmark-image-viewer-frame p {
  margin: 0;
  color: #ffffff;
  font-size: 0.95rem;
  font-weight: 700;
  text-align: center;
}

.landmark-image-viewer-close {
  position: fixed;
  top: 16px;
  right: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 999px;
  color: #ffffff;
  background-color: rgba(255, 255, 255, 0.16);
  font-size: 1.15rem;
}

.landmark-image-viewer-close:focus-visible {
  outline: 3px solid rgba(255, 255, 255, 0.36);
  outline-offset: 3px;
}

.landmark-form-shell {
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 18px;
  margin-bottom: 18px;
  background-color: #FAFAFB;
}

.landmark-form-mode {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #F1D3DD;
  border-radius: 8px;
  padding: 10px 12px;
  margin-bottom: 14px;
  background-color: #FFF7FA;
  color: #8D1736;
  font-size: 0.9rem;
  line-height: 1.45;
}

.landmark-preview-map {
  height: 260px;
}

.landmark-list {
  display: grid;
  gap: 12px;
}

.landmark-card {
  display: grid;
  grid-template-columns: 132px minmax(0, 1fr);
  gap: 14px;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  padding: 12px;
  background-color: #ffffff;
}

.landmark-card img,
.landmark-card-placeholder {
  width: 132px;
  height: 104px;
  border-radius: 8px;
  object-fit: cover;
  background-color: #F6E9EE;
}

.landmark-card-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #AA1C41;
  font-size: 1.4rem;
}

.landmark-card-body {
  min-width: 0;
}

.landmark-card strong {
  display: block;
  color: var(--carrot-text);
  margin-bottom: 6px;
}

.landmark-card p {
  margin: 0 0 8px;
  color: var(--carrot-text);
  font-size: 0.92rem;
  line-height: 1.55;
  word-break: break-word;
}

.landmark-card small {
  color: var(--carrot-muted);
}

.landmark-card-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

.legal-page {
  background-color: #F8F9FA;
  min-height: calc(100vh - 70px);
  padding: 32px 16px;
}

.legal-shell {
  background: #ffffff;
  border: 1px solid #EDEFF2;
  border-radius: 8px;
  margin: 0 auto;
  max-width: 900px;
  padding: 28px;
}

.legal-shell h1 {
  font-size: 1.8rem;
  font-weight: 900;
  margin-bottom: 16px;
}

.legal-shell h2 {
  font-size: 1.08rem;
  font-weight: 800;
  margin: 28px 0 10px;
}

.legal-shell p,
.legal-shell li {
  color: #4B5563;
  line-height: 1.7;
}

.legal-version {
  color: var(--carrot-muted);
  font-size: 0.85rem;
  margin-bottom: 8px;
}

.legal-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 28px;
}

.footer-legal-links {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-left: 10px;
}

.footer-legal-links a {
  color: var(--carrot-muted);
  text-decoration: none;
}

.footer-legal-links a:hover {
  color: var(--carrot-primary);
  text-decoration: underline;
}

@media (max-width: 991.98px) {
  .summary-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .summary-stats-card {
    grid-column: 1 / -1;
  }

  .life-preview-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
  }
}

@media (max-width: 767.98px) {
  .life-preview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
}

@media (max-width: 575.98px) {
  .brand-text {
    font-size: 1.05rem;
  }

  .filter-chips {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .filter-chip {
    font-size: 0.76rem;
    padding: 0 4px;
  }

  .summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .summary-item {
    padding: 14px;
    border-radius: 16px;
  }

  .summary-stats-card {
    grid-column: 1 / -1;
  }

  .summary-currency-card,
  .summary-travel-card {
    min-height: 164px;
  }

  .map-panel {
    padding: 14px;
  }

  .category-map-panel {
    padding: 12px;
  }

  .category-map {
    height: 300px;
  }

  .map-panel-actions {
    justify-content: flex-start;
  }

  .map-detail-topbar,
  .map-detail-footer {
    padding: 8px 10px;
  }

  .map-detail-footer {
    display: grid;
  }

  .map-detail-footer-actions {
    justify-content: flex-end;
  }

  .map-detail-button {
    padding: 0 10px;
    font-size: 0.8rem;
  }

  .map-detail-footer span {
    max-width: 58vw;
  }

  .landmark-summary,
  .landmark-card {
    grid-template-columns: 1fr;
  }

  .landmark-summary-image-button,
  .landmark-summary-placeholder,
  .landmark-card img,
  .landmark-card-placeholder {
    width: 100%;
  }

  .map-detail-landmark-summary .landmark-summary {
    grid-template-columns: 76px minmax(0, 1fr);
  }

  .map-detail-landmark-summary .landmark-summary-image-button,
  .map-detail-landmark-summary .landmark-summary-placeholder {
    width: 76px;
    height: 62px;
  }

  .life-post-card {
    grid-template-columns: 1fr;
  }

  .life-preview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .life-preview-card div {
    padding: 9px 7px;
  }

  .life-preview-card strong {
    font-size: 0.84rem;
  }

  .life-preview-card p {
    display: block;
    font-size: 0.76rem;
  }

  .life-preview-card small {
    font-size: 0.68rem;
  }

  .life-detail-body {
    padding: 16px;
  }

  .life-location-box {
    align-items: flex-start;
    flex-direction: column;
  }

  .suggestion-dock {
    justify-content: center;
    margin: 18px auto 14px;
    padding: 0 12px;
  }

  .suggestion-dock-button,
  .suggestion-dock-admin {
    min-height: 42px;
    padding: 9px 12px;
    font-size: 0.82rem;
  }

  .suggestion-shell {
    padding: 16px;
  }

  .suggestion-item-top,
  .suggestion-admin-meta {
    align-items: flex-start;
    flex-direction: column;
  }

  .suggestion-status-filter {
    max-width: none;
  }
}
.announcement-nav-button {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-left: .75rem;
  padding: .45rem .7rem;
  border: 1px solid rgba(170, 28, 65, .28);
  border-radius: 999px;
  color: #AA1C41;
  font-size: .82rem;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
}

.announcement-nav-button:hover {
  background: rgba(170, 28, 65, .07);
  color: #8d1736;
}

.announcement-unread-badge {
  position: absolute;
  top: -0.55rem;
  right: -0.35rem;
  padding: .15rem .35rem;
  border-radius: 999px;
  background: #dc3545;
  color: #fff;
  font-size: .62rem;
  line-height: 1.1;
}

.announcement-card {
  padding: 1rem 1.1rem;
  border: 1px solid rgba(170, 28, 65, .14);
  border-radius: 1rem;
  background: #fff;
}

.announcement-content {
  white-space: normal;
  line-height: 1.8;
}

.geo-consent-overlay {
  position: fixed;
  inset: 0;
  z-index: 20000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: rgba(20, 14, 16, 0.56);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.18s ease, visibility 0.18s ease;
}

.geo-consent-overlay.is-visible {
  opacity: 1;
  visibility: visible;
}

.geo-consent-card {
  width: min(100%, 430px);
  padding: 26px 22px 20px;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 18px 55px rgba(0, 0, 0, 0.24);
  text-align: center;
}

.geo-consent-icon {
  margin-bottom: 8px;
  font-size: 38px;
}

.geo-consent-card h2 {
  margin: 0 0 12px;
  font-size: 1.28rem;
  font-weight: 800;
  color: #241a1d;
}

.geo-consent-card p {
  margin: 0;
  color: #55484c;
  line-height: 1.6;
}

.geo-consent-card .geo-consent-note {
  margin-top: 10px;
  color: #786a6f;
  font-size: 0.9rem;
}

.geo-consent-actions {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 10px;
  margin-top: 20px;
}

@media (max-width: 420px) {
  .geo-consent-actions {
    grid-template-columns: 1fr;
  }
}

/* Home mobile marketplace refresh (2026-07-22) */
.home-market-page .search-bar-section {
  border-bottom: 0 !important;
  background: #f6f7f8 !important;
}

.home-market-page .search-bar-section .container {
  padding-top: 14px !important;
  padding-bottom: 14px !important;
}

.home-market-page .home-search-layout {
  padding: 12px;
  border: 1px solid rgba(63, 43, 49, 0.08);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(96, 48, 61, 0.07);
}

.home-market-page .home-search-layout .form-select,
.home-market-page .home-search-layout .input-group-text,
.home-market-page .home-search-layout .form-control {
  min-height: 46px;
  border-color: #e5e7e9;
  background-color: #f7f8f9;
}

.home-market-page .home-search-layout .form-select {
  border-radius: 13px;
}

.home-market-page .home-search-layout .input-group-text {
  padding-left: 15px;
  border-radius: 13px 0 0 13px;
}

.home-market-page .home-search-layout .form-control {
  border-radius: 0 13px 13px 0;
  color: var(--carrot-text);
}

.home-market-page .home-search-layout .form-control::placeholder {
  color: #73787e;
  opacity: 1;
}

.home-market-page .home-search-layout .form-select:focus,
.home-market-page .home-search-layout .form-control:focus {
  border-color: rgba(170, 28, 65, 0.55);
  box-shadow: 0 0 0 3px rgba(170, 28, 65, 0.12);
}

.home-market-page .filter-chips {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 1px 1px 4px;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.home-market-page .filter-chips::-webkit-scrollbar,
.home-market-page .home-category-scroll::-webkit-scrollbar {
  display: none;
}

.home-market-page .filter-chip {
  flex: 0 0 auto;
  min-width: 64px;
  height: 40px;
  padding: 0 17px;
  border-color: #e1e3e6;
  scroll-snap-align: start;
  transition: transform 0.14s ease, border-color 0.14s ease, background-color 0.14s ease, color 0.14s ease;
}

.home-market-page .filter-chip:hover:not(.active) {
  border-color: rgba(170, 28, 65, 0.35);
  color: var(--carrot-orange-dark);
  background: #fff7f9;
}

.home-market-page .filter-chip:focus-visible,
.home-market-page .category-item:focus-visible,
.home-market-page .product-card:focus-within {
  outline: 3px solid rgba(170, 28, 65, 0.2);
  outline-offset: 3px;
}

.home-market-page .category-section {
  overflow: hidden;
  background: #fff;
}

.home-market-page .home-category-scroll {
  display: flex;
  flex-wrap: nowrap;
  gap: 10px;
  margin-right: -12px;
  margin-left: -12px;
  padding: 3px 12px 10px;
  overflow-x: auto;
  scroll-padding-inline: 12px;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.home-market-page .home-category-scroll > [class*="col-"] {
  flex: 0 0 auto;
  width: auto;
  max-width: none;
  padding: 0;
  scroll-snap-align: start;
}

.home-market-page .category-item {
  display: grid;
  grid-template-columns: 34px auto;
  grid-template-rows: auto auto;
  column-gap: 8px;
  align-items: center;
  min-width: 104px;
  min-height: 52px;
  padding: 8px 12px 8px 9px;
  border: 1px solid #e7e8ea;
  border-radius: 999px;
  background: #fff;
  box-shadow: 0 4px 12px rgba(66, 39, 46, 0.05);
  transition: transform 0.14s ease, border-color 0.14s ease, box-shadow 0.14s ease;
}

.home-market-page .category-icon {
  grid-row: 1 / 3;
  width: 34px;
  height: 34px;
  margin: 0;
  border-radius: 50%;
  font-size: 0.9rem;
}

.home-market-page .category-item p {
  align-self: end;
  margin: 0;
  font-size: 0.8rem;
  font-weight: 800;
  line-height: 1.2;
  text-align: left;
  white-space: nowrap;
}

.home-market-page .category-item-note {
  align-self: start;
  justify-self: start;
  margin-top: 2px;
  padding: 0;
  color: #6e7277;
  background: transparent;
  font-size: 0.6rem;
  white-space: nowrap;
}

.home-market-page .category-item:hover {
  border-color: rgba(170, 28, 65, 0.24);
  box-shadow: 0 7px 18px rgba(96, 48, 61, 0.09);
}

.home-market-page .category-item:hover .category-icon {
  transform: none;
}

.home-market-page .products-section {
  background: #f7f8f9;
}

.home-market-page #productGrid {
  --bs-gutter-x: 12px;
  --bs-gutter-y: 12px;
}

.home-market-page .product-card {
  height: 100%;
  overflow: hidden;
  border: 1px solid rgba(78, 55, 61, 0.08) !important;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(96, 48, 61, 0.08);
  transform: translateZ(0);
  transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease;
}

.home-market-page .product-card .thumb-wrap {
  border-radius: 0;
  background: #eceeef;
}

.home-market-page .product-card .card-body {
  padding: 12px !important;
}

.home-market-page .product-title {
  font-size: 0.9rem;
  font-weight: 650;
  line-height: 1.4;
}

.home-market-page .product-price {
  font-size: 0.97rem;
  font-weight: 800 !important;
  letter-spacing: -0.015em;
}

.home-market-page .product-meta {
  overflow: hidden;
  font-size: 0.72rem;
  line-height: 1.45;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.home-market-page .product-card .deal-badge {
  min-height: 22px;
  margin-bottom: 7px;
  padding: 2px 8px;
  font-size: 0.68rem;
}

.home-market-page .product-card .btn {
  min-height: 34px;
  font-size: 0.74rem;
  font-weight: 750;
}

.home-market-page .product-card:hover {
  border-color: rgba(170, 28, 65, 0.14) !important;
  box-shadow: 0 12px 28px rgba(96, 48, 61, 0.11);
  transform: translateY(-2px);
}

.home-market-page .product-card:active,
.home-market-page .filter-chip:active,
.home-market-page .category-item:active {
  transform: scale(0.98);
}

@media (min-width: 768px) {
  .home-market-page .home-category-scroll {
    justify-content: center;
    margin-right: 0;
    margin-left: 0;
    padding-right: 0;
    padding-left: 0;
  }

  .home-market-page .category-item {
    min-width: 116px;
  }
}

@media (max-width: 767.98px) {
  .home-market-page .search-bar-section .container,
  .home-market-page .category-section .container,
  .home-market-page .products-section .container {
    padding-right: 14px;
    padding-left: 14px;
  }

  .home-market-page .home-search-layout {
    gap: 8px;
    margin: 0;
    padding: 10px;
    border-radius: 16px;
  }

  .home-market-page .home-search-layout > [class*="col-"] {
    padding: 0;
  }

  .home-market-page .filter-chips {
    margin-right: -10px;
    padding-right: 10px;
  }

  .home-market-page .products-section .d-flex.justify-content-between {
    gap: 10px;
  }

  .home-market-page .products-section h5 {
    font-size: 1.05rem;
  }

  .home-market-page .products-section .btn-sm {
    flex: none;
  }
}

@media (max-width: 380px) {
  .home-market-page #productGrid {
    --bs-gutter-x: 10px;
    --bs-gutter-y: 10px;
  }

  .home-market-page .product-card .card-body {
    padding: 10px !important;
  }

  .home-market-page .product-title {
    font-size: 0.84rem;
  }

  .home-market-page .product-price {
    font-size: 0.9rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-market-page .filter-chip,
  .home-market-page .category-item,
  .home-market-page .category-icon,
  .home-market-page .product-card,
  .home-market-page .thumb-wrap img {
    scroll-behavior: auto;
    transition: none !important;
  }

  .home-market-page .product-card:hover,
  .home-market-page .product-card:active,
  .home-market-page .filter-chip:active,
  .home-market-page .category-item:active {
    transform: none;
  }
}

/* instructions.md mobile-first design rules (2026-07-22) */
.home-market-page {
  background: #f8fafc;
  font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", sans-serif;
}

.home-market-page .brand-text {
  font-size: clamp(0.94rem, 2.4vw, 1.08rem);
}

.home-market-page .products-section h5,
.home-market-page .life-preview-section h5 {
  font-size: clamp(1.02rem, 2.8vw, 1.16rem);
}

.home-market-page .search-bar-section,
.home-market-page .products-section {
  background: #f8fafc !important;
}

.home-market-page .product-card,
.home-market-page .life-preview-card {
  border-color: rgba(71, 85, 105, 0.07) !important;
  box-shadow:
    0 8px 24px -4px rgba(51, 35, 40, 0.08),
    0 2px 6px rgba(51, 35, 40, 0.03);
}

.home-market-page .deal-badge,
.home-market-page .life-preview-type,
.home-market-page .education-subject-badge,
.home-market-page .home-header-chip,
.home-market-page .filter-chip {
  border-radius: 9999px;
}

.home-market-page .product-card:active,
.home-market-page .life-preview-card:active,
.home-market-page .home-header-icon-button:active,
.home-market-page .home-header-chip:active,
.home-market-page .filter-chip:active,
.home-market-page .category-item:active,
.home-market-page .btn:active {
  transform: scale(0.97);
  transition-duration: 0.15s;
}

@media (max-width: 767.98px) {
  .home-market-page #productGrid,
  .home-market-page .life-preview-grid {
    display: grid;
    grid-template-columns: none;
    grid-template-rows: 1fr;
    grid-auto-flow: column;
    grid-auto-columns: minmax(158px, 44vw);
    gap: 12px;
    margin-right: -14px;
    padding: 2px 14px 14px 2px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-padding-inline: 2px;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  .home-market-page #productGrid::-webkit-scrollbar,
  .home-market-page .life-preview-grid::-webkit-scrollbar {
    display: none;
  }

  .home-market-page #productGrid > .product-col,
  .home-market-page .life-preview-grid > .life-preview-card {
    width: auto !important;
    max-width: none;
    padding-right: 0;
    padding-left: 0;
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }

  .home-market-page #productGrid > .product-col {
    height: 100%;
  }

  .home-market-page #productGrid > .product-col > .product-card,
  .home-market-page .life-preview-grid > .life-preview-card {
    min-height: 100%;
  }
}

@media (min-width: 768px) {
  .home-market-page #productGrid {
    display: flex;
    overflow: visible;
  }

  .home-market-page .life-preview-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-auto-flow: row;
    grid-auto-columns: auto;
    overflow: visible;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-market-page .product-card:active,
  .home-market-page .life-preview-card:active,
  .home-market-page .home-header-icon-button:active,
  .home-market-page .home-header-chip:active,
  .home-market-page .filter-chip:active,
  .home-market-page .category-item:active,
  .home-market-page .btn:active {
    transform: none;
  }
}

/* Home sticky glass app header (2026-07-22) */
.home-market-page .home-app-header {
  z-index: 1040;
  padding: 0;
  border-bottom: 1px solid rgba(92, 63, 71, 0.12);
  background: rgba(255, 255, 255, 0.84);
  box-shadow: 0 8px 24px rgba(78, 45, 54, 0.07);
  -webkit-backdrop-filter: blur(16px) saturate(145%);
  backdrop-filter: blur(16px) saturate(145%);
}

.home-market-page .home-app-header > .container {
  display: flex;
  flex-wrap: wrap;
  padding-top: 8px;
  padding-bottom: 7px;
}

.home-market-page .home-app-header-main {
  display: flex;
  width: 100%;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.home-market-page .home-app-brand-region {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 10px;
}

.home-market-page .home-app-header .navbar-brand {
  flex: none;
  gap: 7px;
  margin: 0;
  padding: 4px 0;
  white-space: nowrap;
}

.home-market-page .home-app-header .navbar-brand > i {
  color: var(--carrot-orange-dark);
  font-size: 1.35rem;
}

.home-market-page .home-app-header .brand-text {
  font-size: 1.04rem;
  letter-spacing: -0.025em;
}

.home-market-page .home-header-region {
  position: relative;
  display: block;
  min-width: 0;
  max-width: 150px;
  margin: 0;
}

.home-market-page .home-header-region .location-select {
  width: 100%;
  height: 38px;
  min-height: 38px;
  padding: 5px 30px 5px 12px;
  border: 1px solid #e0e2e5;
  border-radius: 999px;
  color: #34373b;
  background-color: rgba(247, 248, 249, 0.92);
  font-size: 0.78rem;
  font-weight: 750;
  text-overflow: ellipsis;
}

.home-market-page .home-header-region .location-select:focus {
  border-color: rgba(170, 28, 65, 0.5);
  box-shadow: 0 0 0 3px rgba(170, 28, 65, 0.11);
}

.home-market-page .home-app-header-actions {
  display: flex;
  flex: none;
  align-items: center;
  gap: 6px;
}

.home-market-page .home-header-icon-button {
  position: relative;
  display: inline-grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border: 1px solid #e0e2e5;
  border-radius: 50%;
  color: #34373b;
  background: rgba(255, 255, 255, 0.9);
  font-size: 1rem;
  text-decoration: none;
  transition: transform 0.14s ease, border-color 0.14s ease, color 0.14s ease, background-color 0.14s ease;
}

.home-market-page .home-header-icon-button:hover {
  border-color: rgba(170, 28, 65, 0.35);
  color: var(--carrot-orange-dark);
  background: #fff6f8;
}

.home-market-page .home-emergency-button {
  border-color: rgba(190, 36, 54, 0.3);
  color: #b42335;
  background: #fff5f6;
}

.home-market-page .home-emergency-button:hover {
  border-color: #b42335;
  color: #941b2b;
  background: #ffecef;
}

.home-market-page .home-header-icon-button:active {
  transform: scale(0.95);
}

.home-market-page .home-header-icon-button:focus-visible,
.home-market-page .home-header-chip:focus-visible,
.home-market-page .home-header-menu a:focus-visible,
.home-market-page .home-header-menu button:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.2);
  outline-offset: 2px;
}

.home-market-page .home-header-icon-button .chat-unread-badge {
  position: absolute;
  top: -4px;
  right: -4px;
}

.home-market-page .home-header-chip-bar {
  display: flex;
  width: 100%;
  gap: 7px;
  margin-top: 7px;
  padding: 1px 0 2px;
  overflow-x: auto;
  scroll-padding-inline: 2px;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}

.home-market-page .home-header-chip-bar::-webkit-scrollbar {
  display: none;
}

.home-market-page .home-header-chip {
  display: inline-flex;
  min-height: 34px;
  flex: 0 0 auto;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border: 1px solid rgba(82, 60, 66, 0.12);
  border-radius: 999px;
  color: #50545a;
  background: rgba(255, 255, 255, 0.82);
  font-size: 0.75rem;
  font-weight: 750;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  scroll-snap-align: start;
  transition: transform 0.14s ease, border-color 0.14s ease, color 0.14s ease, background-color 0.14s ease;
}

.home-market-page .home-header-chip i {
  font-size: 0.72rem;
}

.home-market-page .home-header-chip:hover {
  border-color: rgba(170, 28, 65, 0.28);
  color: var(--carrot-orange-dark);
  background: #fff7f9;
}

.home-market-page .home-header-chip.active {
  border-color: var(--carrot-orange-dark);
  color: #fff;
  background: var(--carrot-orange-dark);
}

.home-market-page .home-header-chip:active {
  transform: scale(0.95);
}

.home-market-page .home-header-menu {
  width: 100%;
  margin-top: 8px;
  padding: 12px;
  border: 1px solid rgba(78, 55, 61, 0.1);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 14px 36px rgba(78, 45, 54, 0.12);
}

.home-market-page .home-header-menu-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.home-market-page .home-header-menu-grid > a {
  position: relative;
  display: flex;
  min-width: 0;
  min-height: 42px;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 8px 10px;
  border: 1px solid #e7e8ea;
  border-radius: 12px;
  color: #44484d;
  background: #f8f9fa;
  font-size: 0.78rem;
  font-weight: 750;
  text-decoration: none;
  white-space: nowrap;
  transition: transform 0.14s ease, border-color 0.14s ease, color 0.14s ease;
}

.home-market-page .home-header-menu-grid > a:hover {
  border-color: rgba(170, 28, 65, 0.28);
  color: var(--carrot-orange-dark);
}

.home-market-page .home-header-menu-grid > a:active {
  transform: scale(0.95);
}

.home-market-page .home-header-menu-grid .announcement-unread-badge {
  top: -6px;
  right: -4px;
}

.home-market-page .home-nav-language-slot {
  display: flex;
  justify-content: center;
  margin-top: 10px;
}

.home-market-page .language-switcher-home-menu {
  margin: 0;
}

.home-market-page .home-header-auth {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 10px;
}

.home-market-page .home-header-auth > * {
  margin: 0 !important;
}

.home-market-page #homeSearchPanel,
.home-market-page #mapArea,
.home-market-page #products,
.home-market-page #local {
  scroll-margin-top: 132px;
}

@supports not ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .home-market-page .home-app-header {
    background: #fff;
  }
}

@media (max-width: 767.98px) {
  .home-market-page .home-app-header > .container {
    max-width: none;
    padding-right: 12px;
    padding-left: 12px;
  }

  .home-market-page .home-app-header-main {
    gap: 8px;
  }

  .home-market-page .home-app-brand-region {
    flex: 1 1 auto;
    gap: 7px;
  }

  .home-market-page .home-app-header .navbar-brand > i {
    font-size: 1.2rem;
  }

  .home-market-page .home-app-header .brand-text {
    font-size: 0.94rem;
  }

  .home-market-page .home-header-region {
    max-width: 115px;
  }

  .home-market-page .home-header-region .location-select {
    height: 36px;
    min-height: 36px;
    padding-left: 10px;
    font-size: 0.72rem;
  }

  .home-market-page .home-header-icon-button {
    width: 38px;
    height: 38px;
  }

  .home-market-page .home-header-chip-bar {
    margin-right: -12px;
    padding-right: 12px;
  }

  .home-market-page .home-header-menu-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 420px) {
  .home-market-page .home-app-header .brand-city {
    display: none;
  }

  .home-market-page .home-app-header-actions {
    gap: 4px;
  }

  .home-market-page .home-header-icon-button {
    width: 36px;
    height: 36px;
    font-size: 0.9rem;
  }

  .home-market-page .home-header-region {
    max-width: 92px;
  }
}

@media (max-width: 350px) {
  .home-market-page .home-header-region {
    max-width: 96px;
  }

  .home-market-page .home-header-icon-button {
    width: 34px;
    height: 34px;
  }

  .home-market-page .home-header-region {
    display: none;
  }
}

@media (prefers-reduced-transparency: reduce) {
  .home-market-page .home-app-header,
  .home-market-page .home-header-menu {
    background: #fff;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-market-page .home-header-icon-button,
  .home-market-page .home-header-chip,
  .home-market-page .home-header-menu-grid > a {
    transition: none !important;
  }

  .home-market-page .home-header-icon-button:active,
  .home-market-page .home-header-chip:active,
  .home-market-page .home-header-menu-grid > a:active {
    transform: none;
  }
}

/* Keep instructions.md mobile carousels after all legacy responsive rules. */
@media (max-width: 767.98px) {
  .home-market-page #productGrid,
  .home-market-page .life-preview-grid {
    display: grid;
    grid-template-columns: none !important;
    grid-template-rows: 1fr !important;
    grid-auto-flow: column;
    grid-auto-columns: minmax(158px, 44vw);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
  }
}

/* Home life preview card system (2026-07-22) */
.home-market-page .life-preview-section {
  border-top: 1px solid #eceef0;
  background: #fff;
}

.home-market-page .life-preview-section > .container > .d-flex,
.home-market-page .home-sightseeing-heading {
  align-items: flex-end !important;
  gap: 14px;
}

.home-market-page .life-preview-section h5 {
  color: var(--carrot-text);
  font-size: 1.08rem;
  letter-spacing: -0.02em;
}

.home-market-page .life-preview-section h5 + p {
  margin-top: 4px;
  color: #6f747a !important;
  line-height: 1.45;
}

.home-market-page .life-preview-section > .container > .d-flex > .btn,
.home-market-page .home-sightseeing-actions > .btn {
  flex: none;
  min-height: 36px;
  padding: 7px 13px;
  border-color: rgba(170, 28, 65, 0.28);
  color: var(--carrot-orange-dark);
  background: #fff;
  font-weight: 750;
  transition: transform 0.14s ease, border-color 0.14s ease, background-color 0.14s ease;
}

.home-market-page .life-preview-section > .container > .d-flex > .btn:hover,
.home-market-page .home-sightseeing-actions > .btn:hover {
  border-color: var(--carrot-orange-dark);
  color: var(--carrot-orange-dark);
  background: #fff6f8;
}

.home-market-page .life-preview-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.home-market-page .life-preview-card {
  display: flex;
  min-width: 0;
  height: 100%;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(78, 55, 61, 0.08);
  border-left-width: 1px;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(96, 48, 61, 0.08);
  transform: translateZ(0);
  transition: transform 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}

.home-market-page .life-preview-card:hover {
  border-color: rgba(170, 28, 65, 0.15);
  color: var(--carrot-text);
  box-shadow: 0 12px 28px rgba(96, 48, 61, 0.11);
  transform: translateY(-2px);
}

.home-market-page .life-preview-card:active {
  transform: scale(0.98);
}

.home-market-page .life-preview-card:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.2);
  outline-offset: 3px;
}

.home-market-page .life-preview-card > img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  background: #eceeef;
  transition: transform 0.2s ease;
}

.home-market-page .life-preview-card:hover > img {
  transform: scale(1.025);
}

.home-market-page .life-preview-card > div {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  padding: 12px;
}

.home-market-page .life-preview-card .detail-title-row {
  width: 100%;
  margin-top: 1px;
}

.home-market-page .life-preview-card strong {
  color: var(--carrot-text);
  font-size: 0.9rem;
  font-weight: 750;
  line-height: 1.4;
}

.home-market-page .life-preview-card p {
  display: -webkit-box;
  margin: 5px 0 9px;
  overflow: hidden;
  color: #6f747a;
  font-size: 0.78rem;
  line-height: 1.5;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.home-market-page .life-preview-card small {
  display: block;
  width: 100%;
  margin-top: auto;
  overflow: hidden;
  color: #777c82;
  font-size: 0.7rem;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.home-market-page .life-preview-type,
.home-market-page .education-subject-badge {
  min-height: 22px;
  margin: 0 5px 7px 0;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.66rem;
  line-height: 1.2;
}

.home-market-page .life-preview-type-business {
  color: #7c2340;
  background: #fbeef2;
}

.home-market-page .life-preview-type-recommendation {
  color: #236147;
  background: #edf7f1;
}

.home-market-page #educationPreview .life-preview-card > img,
.home-market-page #local .life-preview-card > img {
  aspect-ratio: 16 / 10;
}

.home-market-page #educationPreview .life-preview-card,
.home-market-page #local .life-preview-card {
  background: linear-gradient(180deg, #fff 0%, #fcfcfd 100%);
}

.home-market-page .home-sightseeing-actions {
  align-items: center;
}

.home-market-page .home-travel-guide-link {
  min-height: 36px;
  border-radius: 999px;
  box-shadow: none;
  transition: transform 0.14s ease, border-color 0.14s ease, background-color 0.14s ease;
}

.home-market-page .education-ranking-guide-link:focus-visible {
  outline: 3px solid rgba(170, 28, 65, 0.2);
  outline-offset: 3px;
}

.home-market-page .home-travel-guide-link:active,
.home-market-page .life-preview-section > .container > .d-flex > .btn:active,
.home-market-page .home-sightseeing-actions > .btn:active {
  transform: scale(0.98);
}

.home-market-page .life-preview-section .empty-state {
  border: 1px dashed #d9dcdf;
  border-radius: 16px;
  background: #f8f9fa;
}

@media (max-width: 767.98px) {
  .home-market-page .life-preview-section {
    padding-top: 22px !important;
    padding-bottom: 22px !important;
  }

  .home-market-page .life-preview-section > .container {
    padding-right: 14px;
    padding-left: 14px;
  }

  .home-market-page .life-preview-section > .container > .d-flex,
  .home-market-page .home-sightseeing-heading {
    align-items: flex-start !important;
  }

  .home-market-page .life-preview-section h5 {
    font-size: 1.02rem;
  }

  .home-market-page .life-preview-section h5 + p {
    display: -webkit-box;
    overflow: hidden;
    font-size: 0.74rem;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
  }

  .home-market-page .life-preview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .home-market-page .life-preview-card > div {
    padding: 10px;
  }

  .home-market-page .life-preview-card strong {
    font-size: 0.84rem;
  }

  .home-market-page .life-preview-card p {
    font-size: 0.74rem;
  }

  .home-market-page .life-preview-card small {
    font-size: 0.66rem;
  }

  .home-market-page .life-preview-section > .container > .d-flex > .btn,
  .home-market-page .home-sightseeing-actions > .btn {
    min-height: 34px;
    padding: 6px 11px;
    font-size: 0.7rem;
    white-space: nowrap;
  }

  .home-market-page .home-sightseeing-actions {
    width: 100%;
  }
}

@media (max-width: 420px) {
  .home-market-page .life-preview-section > .container > .d-flex {
    flex-wrap: wrap;
  }

  .home-market-page .life-preview-section > .container > .d-flex > div:first-child {
    min-width: 0;
    flex: 1 1 230px;
  }

  .home-market-page .home-sightseeing-heading {
    gap: 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-market-page .life-preview-card,
  .home-market-page .life-preview-card > img,
  .home-market-page .home-travel-guide-link,
  .home-market-page .life-preview-section .btn {
    transition: none !important;
  }

  .home-market-page .life-preview-card:hover,
  .home-market-page .life-preview-card:active,
  .home-market-page .life-preview-card:hover > img,
  .home-market-page .home-travel-guide-link:active,
  .home-market-page .life-preview-section .btn:active {
    transform: none;
  }
}
/* Emergency contact directory */
.emergency-contacts-page {
  --emergency-brand: #aa1c41;
  --emergency-danger: #b42335;
  --emergency-text: #29252a;
  --emergency-muted: #6f6970;
  min-height: 100dvh;
  color: var(--emergency-text);
  background: #f8fafc;
  font-family: Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", sans-serif;
}

.emergency-contacts-page a { text-underline-offset: 3px; }
.emergency-contacts-page section[id] { scroll-margin-top: 150px; }

.emergency-page-nav {
  z-index: 1040;
  min-height: 64px;
  border-bottom: 1px solid rgba(82, 60, 66, 0.1);
  box-shadow: 0 8px 24px rgba(78, 45, 54, 0.06);
}

.emergency-page-nav .navbar-brand { color: #29252a; }
.emergency-page-nav .navbar-brand i { color: var(--emergency-brand); font-size: 1.35rem; }
.emergency-page-nav .btn { min-height: 38px; font-size: 0.78rem; font-weight: 750; }

.emergency-hero {
  padding: clamp(32px, 6vw, 72px) 0;
  background: linear-gradient(135deg, #fff 0%, #fff4f6 100%);
}

.emergency-hero-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(230px, 0.65fr);
  gap: clamp(24px, 5vw, 64px);
  align-items: center;
}

.emergency-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 14px;
  padding: 7px 11px;
  border-radius: 999px;
  color: #8f1c38;
  background: #fde9ef;
  font-size: 0.76rem;
  font-weight: 800;
}

.emergency-hero h1 {
  max-width: 720px;
  margin: 0;
  font-size: clamp(1.8rem, 4.8vw, 3.35rem);
  font-weight: 900;
  line-height: 1.12;
  letter-spacing: -0.045em;
}

.emergency-hero p {
  max-width: 650px;
  margin: 18px 0 0;
  color: var(--emergency-muted);
  font-size: clamp(0.92rem, 2vw, 1.06rem);
  line-height: 1.7;
}

.emergency-hero-callout {
  display: flex;
  min-height: 190px;
  flex-direction: column;
  justify-content: center;
  padding: 24px;
  border: 1px solid rgba(180, 35, 53, 0.16);
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 18px 42px rgba(116, 35, 54, 0.1);
}

.emergency-hero-callout > span { color: #7c7075; font-size: 0.78rem; font-weight: 800; }
.emergency-hero-callout > a { display: flex; align-items: center; justify-content: space-between; margin: 6px 0; color: var(--emergency-danger); text-decoration: none; }
.emergency-hero-callout strong { font-size: clamp(2.8rem, 7vw, 4.7rem); line-height: 1; letter-spacing: -0.06em; }
.emergency-hero-callout i { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 50%; color: #fff; background: var(--emergency-danger); }
.emergency-hero-callout small { color: #746d71; font-size: 0.74rem; }

.emergency-jump-wrap {
  position: sticky;
  top: 64px;
  z-index: 1020;
  border-top: 1px solid rgba(82, 60, 66, 0.07);
  border-bottom: 1px solid rgba(82, 60, 66, 0.1);
  background: rgba(255, 255, 255, 0.92);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}

.emergency-jump-nav {
  display: flex;
  gap: 8px;
  padding-top: 10px;
  padding-bottom: 10px;
  overflow-x: auto;
  scrollbar-width: none;
}

.emergency-jump-nav::-webkit-scrollbar { display: none; }
.emergency-jump-nav a { display: inline-flex; min-height: 36px; flex: none; align-items: center; gap: 6px; padding: 7px 12px; border: 1px solid #e1dfe1; border-radius: 999px; color: #555056; background: #fff; font-size: 0.75rem; font-weight: 800; text-decoration: none; white-space: nowrap; transition: transform 0.14s ease, border-color 0.14s ease, color 0.14s ease, background-color 0.14s ease; }
.emergency-jump-nav a:hover, .emergency-jump-nav a.active { border-color: var(--emergency-brand); color: #fff; background: var(--emergency-brand); }
.emergency-jump-nav a:active { transform: scale(0.97); }

.emergency-content-section { padding: clamp(34px, 6vw, 66px) 0; background: #fff; }
.emergency-muted-section { background: #f8fafc; }
.emergency-urgent-section { background: #fffafb; }

.emergency-section-heading { margin-bottom: 20px; }
.emergency-section-heading > span { display: block; margin-bottom: 5px; color: var(--emergency-brand); font-size: 0.74rem; font-weight: 850; }
.emergency-section-heading h2 { margin: 0; font-size: clamp(1.35rem, 3vw, 1.9rem); font-weight: 900; letter-spacing: -0.035em; }
.emergency-section-heading p { max-width: 680px; margin: 8px 0 0; color: var(--emergency-muted); font-size: 0.85rem; line-height: 1.65; }

.emergency-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.emergency-contact-card { padding: 18px; border: 1px solid rgba(83, 57, 64, 0.09); border-radius: 18px; background: #fff; box-shadow: 0 10px 28px rgba(91, 45, 57, 0.07); }
.emergency-contact-card-featured { border-color: rgba(180, 35, 53, 0.17); }
.emergency-card-title { display: flex; align-items: flex-start; gap: 12px; }
.emergency-card-title > i { display: grid; width: 40px; height: 40px; flex: none; place-items: center; border-radius: 12px; color: var(--emergency-danger); background: #ffedf0; }
.emergency-card-title h3 { margin: 1px 0 3px; font-size: 0.96rem; font-weight: 850; }
.emergency-card-title p { margin: 0; color: var(--emergency-muted); font-size: 0.74rem; }
.emergency-call-button { display: flex; min-height: 44px; align-items: center; justify-content: space-between; margin-top: 16px; padding: 9px 13px; border-radius: 14px; color: #fff; background: var(--emergency-danger); font-weight: 850; text-decoration: none; transition: transform 0.14s ease, background-color 0.14s ease; }
.emergency-call-button:hover { color: #fff; background: #961d2d; }
.emergency-call-button:active { transform: scale(0.98); }

.emergency-local-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.emergency-local-grid a { display: flex; min-height: 126px; flex-direction: column; align-items: flex-start; justify-content: space-between; padding: 15px; border: 1px solid rgba(180, 35, 53, 0.13); border-radius: 16px; color: var(--emergency-text); background: #fff; text-decoration: none; box-shadow: 0 8px 22px rgba(91, 45, 57, 0.055); transition: transform 0.14s ease, border-color 0.14s ease; }
.emergency-local-grid a:hover { border-color: var(--emergency-danger); color: var(--emergency-text); transform: translateY(-2px); }
.emergency-local-grid a:active { transform: scale(0.98); }
.emergency-local-grid i { color: var(--emergency-danger); font-size: 1.1rem; }
.emergency-local-grid span { color: #6e676b; font-size: 0.74rem; font-weight: 750; }
.emergency-local-grid strong { color: var(--emergency-danger); font-size: 1.65rem; line-height: 1; }

.emergency-list-card { overflow: hidden; border: 1px solid rgba(83, 57, 64, 0.09); border-radius: 18px; background: #fff; box-shadow: 0 10px 28px rgba(91, 45, 57, 0.06); }
.emergency-contact-row { display: flex; min-height: 58px; align-items: center; justify-content: space-between; gap: 18px; padding: 12px 16px; border-bottom: 1px solid #eeecee; }
.emergency-contact-row:last-child { border-bottom: 0; }
.emergency-contact-row strong { display: block; font-size: 0.84rem; font-weight: 780; line-height: 1.45; }
.emergency-contact-row small { display: block; margin-top: 2px; color: #7d767b; font-size: 0.69rem; }
.emergency-contact-row > a { display: inline-flex; min-height: 36px; flex: none; align-items: center; gap: 7px; padding: 7px 11px; border-radius: 999px; color: #8b1a36; background: #fff0f3; font-size: 0.76rem; font-weight: 850; text-decoration: none; white-space: nowrap; transition: transform 0.14s ease, background-color 0.14s ease; }
.emergency-contact-row > a:hover { color: #75142d; background: #fde1e8; }
.emergency-contact-row > a:active { transform: scale(0.97); }
.emergency-contact-row > a.emergency-web-button { color: #3e5664; background: #edf5f8; }

.emergency-list-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.emergency-list-columns .emergency-contact-row:nth-child(odd) { border-right: 1px solid #eeecee; }
.emergency-list-columns .emergency-contact-row:nth-last-child(-n + 2) { border-bottom: 0; }

.emergency-source-section { padding: 10px 0 58px; background: #f8fafc; }
.emergency-source-note { display: flex; gap: 13px; padding: 18px; border: 1px solid #dedfe2; border-radius: 16px; color: #4f4a4f; background: #fff; }
.emergency-source-note > i { margin-top: 3px; color: var(--emergency-brand); }
.emergency-source-note strong { font-size: 0.88rem; }
.emergency-source-note p { margin: 5px 0 10px; color: #716a70; font-size: 0.76rem; line-height: 1.65; }
.emergency-source-links { display: flex; flex-wrap: wrap; gap: 8px 14px; }
.emergency-source-links a { color: #7f1737; font-size: 0.73rem; font-weight: 750; }

.emergency-page-footer { padding: 28px 0; border-top: 1px solid #e3e4e7; background: #fff; }
.emergency-page-footer .container { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.emergency-page-footer a { color: var(--emergency-brand); font-size: 0.82rem; font-weight: 850; text-decoration: none; }
.emergency-page-footer span { color: #797278; font-size: 0.72rem; }

.emergency-contacts-page a:focus-visible { outline: 3px solid rgba(170, 28, 65, 0.24); outline-offset: 3px; }

@media (max-width: 767.98px) {
  .emergency-page-nav .brand-text { font-size: 0.9rem; }
  .emergency-page-nav .btn { padding-right: 10px !important; padding-left: 10px !important; }
  .emergency-hero-inner { grid-template-columns: 1fr; }
  .emergency-hero-callout { min-height: 150px; }
  .emergency-jump-wrap { top: 62px; }
  .emergency-jump-nav { padding-right: 14px; padding-left: 14px; }
  .emergency-card-grid { grid-template-columns: 1fr; }
  .emergency-local-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .emergency-list-columns { grid-template-columns: 1fr; }
  .emergency-list-columns .emergency-contact-row:nth-child(odd) { border-right: 0; }
  .emergency-list-columns .emergency-contact-row:nth-last-child(2) { border-bottom: 1px solid #eeecee; }
}

@media (max-width: 480px) {
  .emergency-page-nav [data-auth-nav] { display: none; }
  .emergency-hero { padding-top: 28px; }
  .emergency-hero-callout { padding: 20px; }
  .emergency-content-section { padding-top: 34px; padding-bottom: 34px; }
  .emergency-local-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .emergency-local-grid a { min-height: 112px; }
  .emergency-contact-row { align-items: flex-start; flex-direction: column; gap: 8px; }
  .emergency-contact-row > a { align-self: stretch; justify-content: space-between; }
  .emergency-page-footer .container { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  .emergency-contacts-page a { transition: none !important; }
  .emergency-contacts-page a:hover, .emergency-contacts-page a:active { transform: none !important; }
}

@media (prefers-reduced-transparency: reduce) {
  .emergency-jump-wrap { background: #fff; -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* Education community school ranking */
.education-ranking-panel {
  padding: 20px;
  border: 1px solid rgba(170, 28, 65, 0.12);
  border-radius: 20px;
  background: linear-gradient(145deg, #fff8fa 0%, #ffffff 62%);
  box-shadow: 0 12px 32px -12px rgba(83, 24, 45, 0.16);
}

.education-ranking-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 16px;
}

.education-ranking-header h5 {
  margin: 4px 0;
  color: #272026;
  font-size: clamp(1.05rem, 2vw, 1.28rem);
  font-weight: 900;
}

.education-ranking-header p {
  margin: 0;
  color: #777078;
  font-size: 0.82rem;
}

.education-ranking-kicker {
  color: #aa1c41;
  font-size: 0.76rem;
  font-weight: 900;
}

.education-ranking-preview {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 16px;
}

.education-ranking-loading {
  grid-column: 1 / -1;
  padding: 20px;
  color: #777078;
  text-align: center;
  font-size: 0.82rem;
}

.education-ranking-preview-row {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 5px 8px;
  min-width: 0;
  padding: 11px;
  border-radius: 15px;
  background: #ffffff;
  box-shadow: 0 7px 20px -12px rgba(32, 24, 29, 0.3);
}

.education-ranking-preview-row.is-my-vote {
  box-shadow: inset 0 0 0 2px rgba(170, 28, 65, 0.55), 0 7px 20px -12px rgba(32, 24, 29, 0.3);
}

.education-rank-number {
  display: grid;
  grid-row: 1 / 3;
  place-items: center;
  align-self: start;
  width: 30px;
  height: 30px;
  border-radius: 10px;
  color: #ffffff;
  background: #aa1c41;
  font-size: 0.82rem;
  font-weight: 900;
}

.education-rank-school {
  min-width: 0;
}

.education-rank-school strong,
.education-rank-school small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.education-rank-school strong {
  color: #30272d;
  font-size: 0.72rem;
}

.education-rank-school small {
  margin-top: 3px;
  color: #857d82;
  font-size: 0.64rem;
}

.education-rank-votes {
  grid-column: 2;
  color: #aa1c41;
  font-size: 0.7rem;
  font-weight: 900;
}

.education-vote-form {
  padding: 14px;
  border-radius: 16px;
  background: #f8f4f6;
}

.education-vote-form > label {
  display: block;
  margin-bottom: 7px;
  color: #4c4248;
  font-size: 0.78rem;
  font-weight: 800;
}

.education-vote-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}

.education-vote-controls .form-select,
.education-vote-controls .btn {
  min-height: 44px;
  border-radius: 13px;
}

.education-vote-controls .btn:active,
.education-ranking-header .btn:active,
.education-school-card .btn:active {
  transform: scale(0.97);
}

.education-vote-status {
  margin-top: 8px;
  color: #777078;
  font-size: 0.72rem;
}

.education-vote-status.is-success { color: #18794e; }
.education-vote-status.is-warning { color: #986400; }
.education-vote-status.is-error { color: #bd2c2c; }
.education-vote-status.is-info { color: #365d91; }

.education-ranking-modal {
  background: #f8fafc;
}

.education-ranking-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}

.education-ranking-summary > div {
  padding: 14px;
  border-radius: 16px;
  background: #ffffff;
  box-shadow: 0 8px 24px -16px rgba(15, 23, 42, 0.35);
}

.education-ranking-summary span,
.education-ranking-summary strong {
  display: block;
}

.education-ranking-summary span {
  color: #7d7780;
  font-size: 0.7rem;
}

.education-ranking-summary strong {
  margin-top: 4px;
  color: #2f272d;
  font-size: 1rem;
}

.education-ranking-full-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.education-school-card {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 13px;
  padding: 16px;
  border-radius: 18px;
  background: #ffffff;
  box-shadow: 0 8px 24px -15px rgba(15, 23, 42, 0.34);
}

.education-school-card.is-my-vote {
  box-shadow: inset 0 0 0 2px rgba(170, 28, 65, 0.55), 0 8px 24px -15px rgba(15, 23, 42, 0.34);
}

.education-school-rank {
  display: grid;
  place-content: center;
  width: 46px;
  height: 46px;
  border-radius: 15px;
  color: #ffffff;
  background: #aa1c41;
  text-align: center;
}

.education-school-rank span {
  font-size: 1rem;
  font-weight: 900;
  line-height: 1;
}

.education-school-rank small {
  margin-top: 2px;
  font-size: 0.58rem;
}

.education-school-content {
  min-width: 0;
}

.education-school-title {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}

.education-school-title strong,
.education-school-title small {
  display: block;
}

.education-school-title strong {
  color: #272026;
  font-size: 0.9rem;
}

.education-school-title small {
  margin-top: 2px;
  color: #817981;
  font-size: 0.66rem;
}

.education-school-title > span {
  flex: none;
  color: #aa1c41;
  font-size: 0.76rem;
  font-weight: 900;
}

.education-school-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 10px 0;
}

.education-school-tags span {
  padding: 5px 8px;
  border-radius: 9999px;
  color: #685d64;
  background: #f3eef1;
  font-size: 0.65rem;
  font-weight: 700;
}

.education-school-card p {
  margin: 0 0 12px;
  color: #625b60;
  font-size: 0.75rem;
  line-height: 1.6;
}

.education-ranking-notice {
  display: flex;
  gap: 10px;
  margin-top: 16px;
  padding: 14px;
  border-radius: 15px;
  color: #635b61;
  background: #f1edf0;
  font-size: 0.74rem;
  line-height: 1.55;
}

.education-ranking-notice i {
  margin-top: 2px;
  color: #aa1c41;
}

@media (max-width: 767.98px) {
  .education-ranking-panel { padding: 15px; }
  .education-ranking-header { align-items: stretch; flex-direction: column; }
  .education-ranking-header .btn { width: 100%; min-height: 44px; }
  .education-ranking-preview {
    display: flex;
    margin-right: -15px;
    margin-left: -15px;
    padding: 0 15px 8px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
  }
  .education-ranking-preview::-webkit-scrollbar { display: none; }
  .education-ranking-preview-row { flex: 0 0 190px; scroll-snap-align: start; }
  .education-vote-controls { grid-template-columns: 1fr; }
  .education-ranking-full-list { grid-template-columns: 1fr; }
  .education-school-card { grid-template-columns: 40px minmax(0, 1fr); padding: 14px; }
  .education-school-rank { width: 40px; height: 40px; border-radius: 13px; }
  .education-school-title { align-items: flex-start; }
  .education-ranking-summary > div { padding: 11px; }
}

@media (prefers-reduced-motion: reduce) {
  .education-vote-controls .btn,
  .education-ranking-header .btn,
  .education-school-card .btn { transition: none; }
}
/* International school ranking reference page */
.school-ranking-page { background: #f8fafc; }
.school-ranking-page main { overflow: hidden; }
.school-ranking-hero { padding: clamp(34px, 7vw, 76px) 0 42px; background: linear-gradient(145deg, #fff6f8 0%, #ffffff 64%); }
.school-ranking-hero-inner { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(280px, .65fr); align-items: center; gap: clamp(28px, 6vw, 70px); }
.school-ranking-eyebrow { color: #aa1c41; font-size: .78rem; font-weight: 900; }
.school-ranking-hero h1 { max-width: 720px; margin: 12px 0 16px; color: #251f23; font-size: clamp(2.05rem, 5vw, 4.4rem); font-weight: 900; line-height: 1.08; letter-spacing: -.045em; }
.school-ranking-hero h1 span { display: block; }
.school-ranking-hero > .container p { max-width: 650px; margin: 0; color: #6f6870; font-size: clamp(.9rem, 1.5vw, 1.05rem); line-height: 1.7; }
.school-ranking-hero-actions { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 24px; }
.school-ranking-hero-actions .btn { min-height: 46px; padding: 11px 20px; font-weight: 800; }
.school-ranking-hero-actions .btn:active { transform: scale(.97); }
.school-ranking-hero-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 18px; border: 1px solid rgba(170,28,65,.1); border-radius: 20px; background: rgba(255,255,255,.9); box-shadow: 0 18px 44px -22px rgba(62,30,44,.32); }
.school-ranking-hero-summary > div { padding: 15px; border-radius: 15px; background: #f8f4f6; }
.school-ranking-hero-summary span, .school-ranking-hero-summary strong { display: block; }
.school-ranking-hero-summary span { color: #817780; font-size: .7rem; }
.school-ranking-hero-summary strong { margin-top: 4px; color: #aa1c41; font-size: 1.35rem; }
.school-ranking-hero-summary p { grid-column: 1 / -1; margin: 2px 0 0 !important; color: #7b7379 !important; font-size: .7rem !important; text-align: right; }
.school-ranking-section, .school-ranking-method-section, .school-ranking-basis-section { padding: clamp(42px, 7vw, 76px) 0; }
.school-ranking-section { background: #f8fafc; }
.school-ranking-method-section { background: #ffffff; }
.school-ranking-basis-section { background: #f8fafc; }
.school-ranking-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.school-ranking-section-heading span { color: #aa1c41; font-size: .68rem; font-weight: 900; letter-spacing: .08em; }
.school-ranking-section-heading h2 { margin: 5px 0 6px; color: #272126; font-size: clamp(1.45rem, 3vw, 2.1rem); font-weight: 900; }
.school-ranking-section-heading p { margin: 0; color: #777077; font-size: .82rem; }
.school-ranking-section-heading > a { flex: none; color: #aa1c41; font-size: .8rem; font-weight: 900; text-decoration: none; }
.school-ranking-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
.school-ranking-card { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 15px; padding: 18px; border-radius: 19px; background: #ffffff; box-shadow: 0 10px 30px -20px rgba(20,25,35,.38); }
.school-ranking-card-rank { display: grid; place-content: center; width: 56px; height: 56px; border-radius: 17px; color: #ffffff; background: #aa1c41; text-align: center; }
.school-ranking-card-rank strong, .school-ranking-card-rank span { display: block; }
.school-ranking-card-rank strong { font-size: 1.2rem; line-height: 1; }
.school-ranking-card-rank span { margin-top: 3px; font-size: .58rem; }
.school-ranking-card-body { min-width: 0; }
.school-ranking-card-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.school-ranking-card-title > div { min-width: 0; }
.school-ranking-card-title span { color: #aa1c41; font-size: .7rem; font-weight: 900; }
.school-ranking-card-title h3 { margin: 2px 0; color: #2c252a; font-size: 1rem; font-weight: 900; }
.school-ranking-card-title small { display: block; overflow: hidden; color: #878087; font-size: .67rem; text-overflow: ellipsis; white-space: nowrap; }
.school-ranking-card-title > strong { flex: none; color: #aa1c41; font-size: .8rem; }
.school-ranking-card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 11px 0; }
.school-ranking-card-tags span { padding: 5px 8px; border-radius: 9999px; color: #655c62; background: #f3eef1; font-size: .64rem; font-weight: 700; }
.school-ranking-card-body > p { margin: 0; color: #625b60; font-size: .76rem; line-height: 1.65; }
.school-ranking-method-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.school-ranking-method-grid article { padding: 22px; border-radius: 19px; background: #f8fafc; }
.school-ranking-method-grid i { display: grid; place-items: center; width: 42px; height: 42px; margin-bottom: 18px; border-radius: 14px; color: #aa1c41; background: #f8e8ed; }
.school-ranking-method-grid strong { display: block; margin-bottom: 7px; color: #2d252a; font-size: .96rem; }
.school-ranking-method-grid p { margin: 0; color: #6f686e; font-size: .77rem; line-height: 1.65; }
.school-ranking-basis-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.school-ranking-basis-grid article { padding: 24px; border-radius: 20px; background: #ffffff; box-shadow: 0 10px 30px -22px rgba(20,25,35,.35); }
.school-ranking-basis-code { display: inline-flex; padding: 6px 10px; border-radius: 9999px; color: #aa1c41; background: #f8e8ed; font-size: .7rem; font-weight: 900; }
.school-ranking-basis-grid h3 { margin: 15px 0 8px; color: #2c252a; font-size: 1.05rem; font-weight: 900; }
.school-ranking-basis-grid p { margin: 0; color: #675f65; font-size: .8rem; line-height: 1.75; }
.school-ranking-source-note { display: flex; gap: 12px; margin-top: 15px; padding: 17px; border-radius: 17px; color: #5e565c; background: #f1e8ec; }
.school-ranking-source-note i { margin-top: 3px; color: #aa1c41; }
.school-ranking-source-note strong { display: block; margin-bottom: 3px; font-size: .82rem; }
.school-ranking-source-note p { margin: 0; font-size: .74rem; line-height: 1.65; }
.school-ranking-cta { padding: 30px 0 64px; background: #f8fafc; }
.school-ranking-cta .container > div { padding: clamp(25px, 5vw, 48px); border-radius: 24px; color: #ffffff; background: #6f1833; text-align: center; }
.school-ranking-cta h2 { margin: 0 0 8px; font-size: clamp(1.35rem, 3vw, 2rem); font-weight: 900; }
.school-ranking-cta p { margin: 0 0 18px; color: rgba(255,255,255,.82); font-size: .85rem; }
.school-ranking-cta .btn { border-color: #ffffff; color: #6f1833; background: #ffffff; font-weight: 900; }
.school-ranking-footer { padding: 22px 0; color: #867d83; background: #ffffff; font-size: .72rem; }
.school-ranking-footer .container { display: flex; justify-content: space-between; gap: 14px; }
.school-ranking-footer a { color: #aa1c41; font-weight: 900; text-decoration: none; }

@media (max-width: 767.98px) {
  .school-ranking-hero-inner { grid-template-columns: 1fr; }
  .school-ranking-hero h1 span { display: inline; }
  .school-ranking-hero-summary { max-width: none; }
  .school-ranking-section-heading { align-items: flex-start; flex-direction: column; }
  .school-ranking-cards, .school-ranking-method-grid, .school-ranking-basis-grid { grid-template-columns: 1fr; }
  .school-ranking-card { grid-template-columns: 44px minmax(0, 1fr); padding: 15px; }
  .school-ranking-card-rank { width: 44px; height: 44px; border-radius: 14px; }
  .school-ranking-card-title { align-items: flex-start; }
  .school-ranking-footer .container { flex-direction: column; }
}
.business-call-availability {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin: .75rem 0 1rem;
}

.business-call-status-badge {
  display: inline-flex;
  align-items: center;
  min-height: 2rem;
  padding: .35rem .75rem;
  border-radius: 9999px;
  font-size: .82rem;
  font-weight: 700;
  background: rgba(100, 116, 139, .12);
  color: #475569;
}

.business-call-status-available { background: rgba(34, 197, 94, .13); color: #15803d; }
.business-call-status-away { background: rgba(234, 179, 8, .16); color: #a16207; }
.business-call-status-offline { background: rgba(71, 85, 105, .13); color: #475569; }

.business-call-panel {
  margin-top: 1rem;
  padding: 1rem 1.1rem;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 8px 24px -4px rgba(0,0,0,.06);
}

.business-call-panel-heading,
.business-call-panel-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  flex-wrap: wrap;
}

.business-call-panel-actions { justify-content: flex-start; }
