/* 日日有鳥伴水晶貼圖鑑：僅作用於本路由模板 */
.bird-sticker-catalog {
      --paper: #f6f0e4;
      --paper-deep: #eadfcf;
      --ink: #29342f;
      --muted: #66716c;
      --blue: #71869f;
      --blue-deep: #526a83;
      --brown: #8d654b;
      --gold: #d69a37;
      --white: #fffdf8;
      --line: rgba(56, 67, 61, 0.16);
      --shadow: 0 16px 42px rgba(60, 48, 37, 0.13);
      --radius: 22px;
    }

    .bird-sticker-catalog * { box-sizing: border-box; }

    .bird-sticker-catalog { scroll-behavior: smooth; }

    .bird-sticker-catalog {
      margin: 0;
      color: var(--ink);
      background:
        radial-gradient(circle at 8% 2%, rgba(129, 157, 184, 0.22), transparent 31rem),
        radial-gradient(circle at 94% 12%, rgba(167, 119, 82, 0.16), transparent 28rem),
        var(--paper);
      font-family: "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif;
      min-height: 100vh;
    }

    .bird-sticker-catalog button, .bird-sticker-catalog input { font: inherit; }
    .bird-sticker-catalog button, .bird-sticker-catalog a { -webkit-tap-highlight-color: transparent; }

    .bird-sticker-catalog.member-gate-page {
      display: grid;
      place-items: center;
      width: 100%;
      min-height: min(760px, 82vh);
      padding: 48px 18px;
    }

    .bird-sticker-catalog .member-gate-card {
      width: min(620px, 100%);
      margin-inline: auto;
      padding: clamp(30px, 6vw, 58px);
      border: 1px solid rgba(118, 83, 56, .2);
      border-radius: 26px;
      background: rgba(255, 253, 248, .94);
      box-shadow: var(--shadow);
      text-align: center;
    }

    .bird-sticker-catalog .member-gate-mark {
      display: grid;
      place-items: center;
      width: 72px;
      height: 72px;
      margin: 0 auto 20px;
      border-radius: 50%;
      color: var(--gold);
      background: var(--paper);
      font-size: 2.5rem;
    }

    .bird-sticker-catalog .member-gate-card h1 {
      width: 100%;
      margin: 0;
      font-size: clamp(2rem, 7vw, 3.5rem);
      line-height: 1.2;
      text-align: center;
    }

    .bird-sticker-catalog .member-gate-card > p:not(.eyebrow) {
      margin: 18px auto 0;
      color: var(--muted);
      font-size: 1.2rem;
      line-height: 1.8;
    }

    .bird-sticker-catalog .member-gate-actions {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      gap: 10px;
      margin-top: 28px;
    }

    .bird-sticker-catalog .member-gate-actions a {
      min-width: 150px;
      padding: 13px 18px;
      border-radius: 13px;
      text-decoration: none;
      font-weight: 850;
    }

    .bird-sticker-catalog .member-gate-primary { color: #2c281f; background: #f0bd56; }
    .bird-sticker-catalog .member-gate-secondary { color: var(--ink); background: var(--paper-deep); }

    .bird-sticker-catalog .shell {
      width: min(1440px, calc(100% - 28px));
      margin: 0 auto;
      padding: 34px 0 132px;
    }

    .bird-sticker-catalog .hero {
      position: relative;
      min-height: 98px;
      margin-bottom: 20px;
    }

    .bird-sticker-catalog .hero > div:first-child {
      padding-inline: 110px;
      text-align: center;
    }

    .bird-sticker-catalog .hero h1 { text-align: center; }

    .bird-sticker-catalog .eyebrow {
      margin: 0 0 8px;
      color: var(--brown);
      font-size: 1.1rem;
      font-weight: 800;
      letter-spacing: 0.18em;
      text-transform: uppercase;
    }

    .bird-sticker-catalog h1 {
      margin: 0;
      font-family: "Noto Serif TC", "PMingLiU", serif;
      font-size: clamp(2.15rem, 6vw, 4.8rem);
      font-weight: 800;
      letter-spacing: -0.05em;
      line-height: 1;
    }

    .bird-sticker-catalog .hero-copy {
      max-width: 720px;
      margin: 14px auto 0;
      color: var(--muted);
      font-size: 1.5rem;
      line-height: 1.8;
    }

    .bird-sticker-catalog .hero-mark {
      position: absolute;
      right: 0;
      bottom: 0;
      display: grid;
      place-items: center;
      width: 98px;
      height: 98px;
      border: 1px solid var(--line);
      border-radius: 50%;
      background: rgba(255, 253, 248, 0.7);
      color: var(--gold);
      font-size: 3.4rem;
      box-shadow: var(--shadow);
      transform: rotate(8deg);
    }

    .bird-sticker-catalog .campaign {
      margin: 22px 0;
      overflow: hidden;
      border: 1px solid rgba(118, 83, 56, 0.22);
      border-radius: var(--radius);
      background: linear-gradient(135deg, rgba(255,253,248,.94), rgba(235,221,204,.9));
      box-shadow: 0 10px 30px rgba(73, 55, 41, 0.08);
    }

    .bird-sticker-catalog .campaign summary {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      padding: 18px 22px;
      cursor: pointer;
      font-weight: 800;
      list-style: none;
    }

    .bird-sticker-catalog .campaign summary::-webkit-details-marker { display: none; }
    .bird-sticker-catalog .campaign summary::after { content: "＋"; color: var(--brown); font-size: 1.25rem; }
    .bird-sticker-catalog .campaign[open] summary::after { content: "－"; }

    .bird-sticker-catalog .campaign-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
      gap: 12px;
      padding: 0 18px 18px;
    }

    .bird-sticker-catalog .campaign-item {
      min-height: 110px;
      padding: 17px;
      border-radius: 16px;
      background: rgba(255,255,255,.68);
      border: 1px solid rgba(118, 83, 56, 0.12);
    }

    .bird-sticker-catalog .campaign-item strong { display: block; margin-bottom: 8px; color: var(--brown); }
    .bird-sticker-catalog .campaign-item p { margin: 0; color: var(--muted); line-height: 1.65; }
    .bird-sticker-catalog .campaign-item p + p { margin-top: 8px; }

    .bird-sticker-catalog .toolbar {
      position: sticky;
      top: max(10px, env(safe-area-inset-top));
      z-index: 20;
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
      align-items: center;
      margin: 20px 0 22px;
      padding: 12px;
      border: 1px solid rgba(69, 82, 74, 0.14);
      border-radius: 20px;
      background: rgba(255, 253, 248, 0.88);
      box-shadow: 0 12px 34px rgba(55, 45, 35, 0.11);
      backdrop-filter: blur(14px);
    }

    .bird-sticker-catalog .search-wrap { position: relative; flex: 1 1 320px; min-width: 220px; }
    .bird-sticker-catalog .search-wrap::before {
      content: "⌕";
      position: absolute;
      left: 15px;
      top: 50%;
      transform: translateY(-53%);
      color: var(--blue-deep);
      font-size: 1.4rem;
    }

    .bird-sticker-catalog .search-wrap input {
      width: 100%;
      min-height: 46px;
      padding: 10px 16px 10px 43px;
      color: var(--ink);
      border: 1px solid var(--line);
      border-radius: 14px;
      outline: none;
      background: var(--white);
    }

    .bird-sticker-catalog .search-wrap input:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(113,134,159,.18); }

    .bird-sticker-catalog .toolbar-control { display: flex; align-items: center; gap: 8px; min-width: 0; }
    .bird-sticker-catalog .toolbar-label { flex: none; color: var(--muted); font-size: 1.5rem; font-weight: 800; white-space: nowrap; }

    .bird-sticker-catalog .tabs {
      display: flex;
      padding: 4px;
      border-radius: 14px;
      background: var(--paper-deep);
    }

    .bird-sticker-catalog .tab {
      min-height: 38px;
      padding: 7px 14px;
      border: 0;
      border-radius: 11px;
      color: var(--muted);
      background: transparent;
      cursor: pointer;
      font-weight: 800;
    }

    .bird-sticker-catalog .tab[aria-selected="true"] { color: var(--ink); background: var(--white); box-shadow: 0 3px 10px rgba(56,46,38,.11); }

    .bird-sticker-catalog .selected-filter {
      display: flex;
      align-items: center;
      gap: 8px;
      min-height: 42px;
      padding: 8px 12px;
      white-space: nowrap;
      border-radius: 13px;
      color: var(--ink);
      cursor: pointer;
      font-weight: 750;
    }

    .bird-sticker-catalog .selected-filter input { width: 18px; height: 18px; accent-color: var(--gold); }

    .bird-sticker-catalog .catalog-meta {
      display: flex;
      justify-content: space-between;
      gap: 20px;
      align-items: center;
      margin: 0 2px 14px;
    }

    .bird-sticker-catalog .catalog-meta h2 { margin: 0; font-family: "Noto Serif TC", "PMingLiU", serif; font-size: 2rem; }
    .bird-sticker-catalog .catalog-meta p { margin: 0; color: var(--muted); font-size: 1.5rem; }
    .bird-sticker-catalog .grid-switcher { display: inline-flex; align-items: center; gap: 4px; padding: 4px; border-radius: 12px; background: var(--paper-deep); }
    .bird-sticker-catalog .grid-option { min-width: 48px; min-height: 34px; padding: 6px 9px; border: 0; border-radius: 9px; color: var(--muted); background: transparent; cursor: pointer; font-size: 1.2rem; font-weight: 850; }
    .bird-sticker-catalog .grid-option[aria-pressed="true"] { color: var(--ink); background: var(--white); box-shadow: 0 3px 9px rgba(56,46,38,.12); }
    .bird-sticker-catalog .grid-option:focus-visible { outline: 3px solid rgba(82,106,131,.45); outline-offset: 2px; }
    .bird-sticker-catalog .grid-option--mobile { display: none; }

    .bird-sticker-catalog .catalog-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 16px;
    }
    .bird-sticker-catalog .catalog-grid[data-columns="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }

    .bird-sticker-catalog .sticker-card {
      position: relative;
      display: block;
      width: 100%;
      padding: 0;
      overflow: hidden;
      border: 2px solid transparent;
      border-radius: 18px;
      background: var(--white);
      box-shadow: 0 8px 22px rgba(56, 47, 40, 0.12);
      cursor: pointer;
      transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
    }

    .bird-sticker-catalog .sticker-card:hover { transform: translateY(-3px); box-shadow: 0 15px 30px rgba(56,47,40,.18); }
    .bird-sticker-catalog .sticker-card:focus-visible { outline: 3px solid rgba(82,106,131,.5); outline-offset: 3px; }
    .bird-sticker-catalog .sticker-card[aria-pressed="true"] { border-color: var(--gold); box-shadow: 0 13px 30px rgba(170,119,31,.28); }

    .bird-sticker-catalog .sticker-card img {
      display: block;
      width: 100%;
      aspect-ratio: 1;
      object-fit: cover;
      background: #cfd3d5;
    }

    .bird-sticker-catalog .sticker-caption {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
      align-items: center;
      gap: 0.2em 0.45em;
      min-height: 64px;
      padding: 9px 10px;
      color: var(--ink);
      background: var(--white);
      font-size: clamp(1.65rem, 1.7vw, 1.9rem);
      font-weight: 900;
      line-height: 1.2;
      text-align: center;
      transition: color .18s ease, background-color .18s ease;
    }

    .bird-sticker-catalog .sticker-card[aria-pressed="true"] .sticker-caption {
      color: #6f4813;
      background: #fff0bd;
    }

    .bird-sticker-catalog .sticker-card.just-selected .sticker-caption > span {
      animation: selected-caption-pop .22s ease-out;
    }

    @keyframes selected-caption-pop {
      0% { transform: scale(.94); opacity: .72; }
      100% { transform: scale(1); opacity: 1; }
    }

    .bird-sticker-catalog .star {
      position: absolute;
      top: 9px;
      right: 9px;
      display: grid;
      place-items: center;
      width: 40px;
      height: 40px;
      border: 1px solid rgba(46,51,47,.17);
      border-radius: 50%;
      color: #756e62;
      background: rgba(255,253,248,.9);
      box-shadow: 0 4px 14px rgba(30,30,30,.16);
      font-size: 1.52rem;
      line-height: 1;
    }

    .bird-sticker-catalog .sticker-card[aria-pressed="true"] .star { color: #9a6515; background: #fff3c7; border-color: rgba(154,101,21,.3); }

    .bird-sticker-catalog .empty {
      grid-column: 1 / -1;
      padding: 70px 20px;
      border: 1px dashed rgba(74,85,78,.28);
      border-radius: var(--radius);
      color: var(--muted);
      text-align: center;
      background: rgba(255,253,248,.54);
    }

    .bird-sticker-catalog .wishlist-bar {
      position: fixed;
      z-index: 40;
      left: 50%;
      bottom: calc(max(18px, env(safe-area-inset-bottom)) + var(--wishlist-footer-offset, 0px));
      transform: translateX(-50%);
      display: flex;
      align-items: center;
      gap: 14px;
      width: min(540px, calc(100% - 28px));
      padding: 10px 12px 10px 18px;
      border: 1px solid rgba(35,46,40,.18);
      border-radius: 20px;
      color: var(--white);
      background: rgba(41,52,47,.95);
      box-shadow: 0 18px 42px rgba(28,31,29,.3);
      backdrop-filter: blur(14px);
      transition: bottom .18s ease;
    }

    .bird-sticker-catalog .wishlist-bar-copy { flex: 1; min-width: 0; }
    .bird-sticker-catalog .wishlist-bar-copy strong { display: block; }
    .bird-sticker-catalog .wishlist-bar-copy small { color: rgba(255,255,255,.7); }

    .bird-sticker-catalog .primary, .bird-sticker-catalog .secondary, .bird-sticker-catalog .text-button {
      border: 0;
      border-radius: 13px;
      cursor: pointer;
      font-weight: 850;
    }

    .bird-sticker-catalog .primary { padding: 13px 18px; color: #2c281f; background: #f0bd56; }
    .bird-sticker-catalog .primary:hover { background: #f6c96f; }
    .bird-sticker-catalog .secondary { padding: 11px 14px; color: var(--ink); background: var(--paper-deep); }
    .bird-sticker-catalog .secondary:hover { background: #e1d1bd; }
    .bird-sticker-catalog .text-button { padding: 9px 11px; color: var(--blue-deep); background: transparent; }
    .bird-sticker-catalog .text-button.danger { color: #9b443d; }

    .bird-sticker-catalog dialog {
      width: min(760px, calc(100% - 28px));
      max-height: min(860px, calc(100dvh - 34px));
      margin: auto;
      padding: 0;
      overflow: hidden;
      border: 0;
      border-radius: 26px;
      color: var(--ink);
      background: var(--white);
      box-shadow: 0 30px 80px rgba(26,31,28,.36);
    }

    .bird-sticker-catalog dialog::backdrop { background: rgba(30,36,33,.6); backdrop-filter: blur(4px); }

    .bird-sticker-catalog .dialog-shell { display: grid; grid-template-rows: auto 1fr; max-height: inherit; }
    .bird-sticker-catalog .dialog-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
      padding: 21px 24px;
      border-bottom: 1px solid var(--line);
    }
    .bird-sticker-catalog .dialog-head h2 { margin: 0; font-family: "Noto Serif TC", "PMingLiU", serif; }
    .bird-sticker-catalog .close-button { width: 42px; height: 42px; border: 0; border-radius: 50%; cursor: pointer; color: var(--ink); background: var(--paper); font-size: 1.3rem; }
    .bird-sticker-catalog .dialog-body { overflow-y: auto; padding: 22px 24px 32px; }

    .bird-sticker-catalog .summary-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }

    .bird-sticker-catalog .estimate {
      display: grid;
      gap: 8px;
      margin-bottom: 18px;
      padding: 18px;
      border-radius: 18px;
      background: linear-gradient(135deg, #eef2f4, #e4ebee);
      border: 1px solid rgba(82,106,131,.16);
    }

    .bird-sticker-catalog .estimate h3 { margin: 0 0 5px; }
    .bird-sticker-catalog .price-row { display: flex; justify-content: space-between; gap: 20px; color: var(--muted); }
    .bird-sticker-catalog .price-row strong { color: var(--ink); }
    .bird-sticker-catalog .price-row.total { margin-top: 4px; padding-top: 10px; border-top: 1px solid rgba(58,71,80,.15); font-size: 1.45rem; }
    .bird-sticker-catalog .estimate-note { margin: 5px 0 0; color: var(--muted); font-size: 1.5rem; line-height: 1.55; }

    .bird-sticker-catalog .purchase-group {
      margin-top: 14px;
      padding: 18px;
      border: 1px solid var(--line);
      border-radius: 18px;
      background: #fff;
    }

    .bird-sticker-catalog .purchase-group-head { display: flex; align-items: start; justify-content: space-between; gap: 16px; }
    .bird-sticker-catalog .purchase-group h3 { margin: 0; font-size: 1.5rem; }
    .bird-sticker-catalog .purchase-group .volume { display: inline-block; margin-top: 4px; color: var(--muted); font-size: 1.5rem; font-weight: 750; }
    .bird-sticker-catalog .purchase-group ul { margin: 14px 0; padding-left: 1.35em; color: var(--muted); line-height: 1.65; }
    .bird-sticker-catalog .group-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
    .bird-sticker-catalog .product-link { display: inline-block; padding: 11px 14px; border-radius: 13px; color: white; background: var(--blue-deep); text-decoration: none; font-weight: 850; }
    .bird-sticker-catalog .product-link:hover { background: #405970; }

    .bird-sticker-catalog .purchase-check {
      display: inline-flex;
      align-items: center;
      gap: 9px;
      min-height: 44px;
      padding: 9px 13px;
      border: 1px solid var(--line);
      border-radius: 13px;
      color: var(--muted);
      background: var(--paper);
      cursor: pointer;
      font-weight: 800;
    }

    .bird-sticker-catalog .purchase-check input { width: 20px; height: 20px; margin: 0; accent-color: #648052; }
    .bird-sticker-catalog .purchase-group.done { border-color: rgba(81, 116, 62, .38); background: #f7faF2; }
    .bird-sticker-catalog .purchase-group.done .purchase-check { color: #49603c; background: #e9f0df; }

    .bird-sticker-catalog .saving-tip {
      margin-top: 13px;
      padding: 13px 14px;
      border-radius: 14px;
      color: #664a1d;
      background: #fff3d6;
      border: 1px solid rgba(168,111,18,.18);
      font-size: 1.2rem;
      line-height: 1.6;
    }

    .bird-sticker-catalog .full-set-tip { margin: 16px 0 4px; padding: 16px; border-radius: 16px; background: #eef1e7; border: 1px solid rgba(81,104,62,.17); }
    .bird-sticker-catalog .full-set-tip strong { display: block; margin-bottom: 5px; }
    .bird-sticker-catalog .full-set-tip p { margin: 0 0 12px; color: var(--muted); line-height: 1.6; }

    .bird-sticker-catalog .empty-wishlist { padding: 55px 14px; text-align: center; color: var(--muted); }
    .bird-sticker-catalog .empty-wishlist .big-star { display: block; margin-bottom: 10px; color: #c5ae78; font-size: 3rem; }

    .bird-sticker-catalog .toast {
      position: fixed;
      z-index: 80;
      left: 50%;
      bottom: 98px;
      transform: translate(-50%, 15px);
      padding: 11px 16px;
      border-radius: 12px;
      color: #fff;
      background: rgba(35,44,40,.94);
      opacity: 0;
      pointer-events: none;
      transition: opacity .18s ease, transform .18s ease;
    }
    .bird-sticker-catalog .toast.show { opacity: 1; transform: translate(-50%, 0); }

    @media (max-width: 820px) {
      .bird-sticker-catalog .hero { min-height: 0; }
      .bird-sticker-catalog .hero > div:first-child { padding-inline: 0; }
      .bird-sticker-catalog .hero-mark { display: none; }
      .bird-sticker-catalog .campaign-grid { grid-template-columns: 1fr; }
      .bird-sticker-catalog .toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 8px; border-radius: 16px; }
      .bird-sticker-catalog .search-wrap { grid-column: 1; grid-row: 1; min-width: 0; }
      .bird-sticker-catalog .search-wrap input { min-height: 42px; }
      .bird-sticker-catalog .season-control { grid-column: 1; grid-row: 2; min-width: 0; }
      .bird-sticker-catalog .season-control .toolbar-label, .bird-sticker-catalog .view-control .toolbar-label { display: none; }
      .bird-sticker-catalog .tabs { flex: 1; width: 100%; min-width: 0; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; scroll-snap-type: x proximity; }
      .bird-sticker-catalog .tabs::-webkit-scrollbar { display: none; }
      .bird-sticker-catalog .tab { flex: 0 0 auto; min-height: 36px; padding: 6px 9px; white-space: nowrap; scroll-snap-align: start; }
      .bird-sticker-catalog .selected-filter { grid-column: 2; grid-row: 1; justify-content: center; min-height: 40px; padding: 6px 8px; }
      .bird-sticker-catalog .view-control { grid-column: 2; grid-row: 2; }
      .bird-sticker-catalog .grid-switcher { padding: 3px; }
      .bird-sticker-catalog .grid-option { min-width: 40px; min-height: 34px; padding: 5px 7px; }
      .bird-sticker-catalog .catalog-meta { align-items: flex-start; }
      .bird-sticker-catalog .grid-option--desktop { display: none; }
      .bird-sticker-catalog .grid-option--mobile { display: inline-block; }
      .bird-sticker-catalog .catalog-grid, .bird-sticker-catalog .catalog-grid[data-columns="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
      .bird-sticker-catalog .catalog-grid[data-columns="1"] { grid-template-columns: minmax(0, 1fr); }
    }
    @media (max-width: 560px) {
      .bird-sticker-catalog.member-gate-page { min-height: 72vh; padding: 28px 12px; }
      .bird-sticker-catalog .member-gate-actions { display: grid; }
      .bird-sticker-catalog .member-gate-actions a { width: 100%; }
      .bird-sticker-catalog .shell { width: min(100% - 20px, 1440px); padding-top: 22px; }
      .bird-sticker-catalog .hero-copy { line-height: 1.65; }
      .bird-sticker-catalog .campaign summary { padding: 15px 16px; }
      .bird-sticker-catalog .campaign-grid { padding: 0 12px 12px; }
      .bird-sticker-catalog .catalog-meta { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
      .bird-sticker-catalog .catalog-grid { gap: 10px; }
      .bird-sticker-catalog .sticker-card { border-radius: 14px; }
      .bird-sticker-catalog .sticker-caption { min-height: 64px; padding: 8px 6px; font-size: 1.65rem; line-height: 1.2; }
      .bird-sticker-catalog .star { width: 34px; height: 34px; top: 7px; right: 7px; font-size: 1.28rem; }
      .bird-sticker-catalog .wishlist-bar { gap: 8px; padding-left: 14px; }
      .bird-sticker-catalog .wishlist-bar-copy small { display: none; }
      .bird-sticker-catalog dialog { width: calc(100% - 16px); max-height: 92dvh; margin: auto auto 8px; border-radius: 24px; }
      .bird-sticker-catalog .dialog-head, .bird-sticker-catalog .dialog-body { padding-left: 17px; padding-right: 17px; }
      .bird-sticker-catalog .purchase-group-head { display: block; }
    }

    @media (prefers-reduced-motion: reduce) {
      .bird-sticker-catalog *, .bird-sticker-catalog *::before, .bird-sticker-catalog *::after { scroll-behavior: auto !important; transition: none !important; }
    }
