/* ============================================================
   研途打卡 · 视觉质感增强层 polish-20260812-6
   叠加在 index-*.css 之后：只覆盖视觉表现，不改布局结构与交互逻辑。
   原则：奶油纸感 + 玉色墨韵；层叠阴影 + 发丝描边；零 JS、零图片请求。
   v2：移动端专项——悬浮盖章按钮、底部抽屉抓手、触控反馈与触控目标、
       首页模块顺序、触屏悬停粘滞清理。
   ============================================================ */

/* ---------- 0. 全局基调 ---------- */

/* iOS 橡皮筋回弹底色跟随浅色主界面（admin 深色端保持原样） */
body:has(.app-shell),
body:has(.login-gate) {
  background: #f4f9f6;
}

.app-shell ::selection,
.login-gate ::selection {
  background: #bfe8d7;
  color: #16342a;
}

/* 细化滚动条（仅桌面 WebKit 生效，移动端无感） */
@media (hover: hover) and (pointer: fine) {
  .app-shell ::-webkit-scrollbar,
  .login-gate ::-webkit-scrollbar {
    width: 10px;
    height: 10px;
  }
  .app-shell ::-webkit-scrollbar-thumb,
  .login-gate ::-webkit-scrollbar-thumb {
    background: #c3d8cc;
    border: 3px solid transparent;
    border-radius: 8px;
    background-clip: padding-box;
  }
  .app-shell ::-webkit-scrollbar-thumb:hover,
  .login-gate ::-webkit-scrollbar-thumb:hover {
    background-color: #a8c4b6;
    background-clip: padding-box;
  }
  .app-shell ::-webkit-scrollbar-track,
  .login-gate ::-webkit-scrollbar-track {
    background: transparent;
  }
}

/* ---------- 1. 主画布：纸感纹理 + 更沉稳的晨雾渐变 ---------- */

.app-shell {
  --u-shadow-card:
    0 1px 2px #1c3f3010,
    0 14px 34px #305c4a14;
  --u-shadow-float:
    0 1px 2px #1c3f3012,
    0 16px 40px #2a52411f;
  --u-hairline: #22593f14;
  --u-ink: #1c2f27;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.028'/%3E%3C/svg%3E"),
    radial-gradient(circle at 6% 4%, #c4ecda9e, #0000 26rem),
    radial-gradient(circle at 95% 16%, #ece0fc8a, #0000 26rem),
    radial-gradient(circle at 50% 118%, #fdf3dd73, #0000 30rem),
    linear-gradient(#f9fcfa 0%, #f4faf6 52%, #faf9f4 100%);
}

/* ---------- 2. 排版气质：大标题衬线化、正文墨色加深 ---------- */

.app-shell .countdown h2,
.app-shell .view-heading h2,
.app-shell .calendar-heading h2,
.app-shell h2#services-title,
.app-shell .today-done__copy h2,
.app-shell .today-waiting__copy h2 {
  color: var(--u-ink);
  font-family: Georgia, "Songti SC", "Noto Serif SC", STSong, serif;
  font-weight: 700;
  letter-spacing: 0.015em;
}

.app-shell .section-heading h2,
.app-shell .week-panel h2 {
  color: #22382e;
  letter-spacing: 0.01em;
}

.app-shell .section-kicker {
  letter-spacing: 0.14em;
}

.app-shell .eyebrow {
  box-shadow: inset 0 0 0 1px #2e7c5f1c;
}

/* ---------- 3. 顶栏：更干净的玻璃胶囊 ---------- */

.app-shell .topbar {
  border: 1px solid #ffffffcf;
  box-shadow:
    0 1px 2px #1c3f3010,
    0 12px 34px #2a52411c,
    inset 0 1px 0 #ffffffd9;
  background: #fcfffdd6;
}

.app-shell .desktop-nav {
  background: #21563f0d;
  box-shadow: inset 0 0 0 1px #21563f0a;
}

.app-shell .desktop-nav button {
  transition: color 0.16s, background 0.16s, box-shadow 0.16s;
}

.app-shell .desktop-nav button:hover,
.app-shell .desktop-nav button.is-active {
  box-shadow:
    0 2px 10px #31604c1a,
    inset 0 0 0 1px #ffffffe6;
}

.app-shell .brand__mark {
  box-shadow:
    inset 0 0 0 1px #438f6e26,
    0 2px 6px #2f8d6d14;
}

.app-shell .user-chip {
  box-shadow: inset 0 0 0 1px #2e7c5f14;
}

.app-shell .icon-button,
.app-shell .topbar__logout {
  transition: color 0.16s, background 0.16s, border-color 0.16s, box-shadow 0.16s;
}

.app-shell .icon-button:hover {
  box-shadow: 0 3px 10px #2f8d6d1a;
}

/* ---------- 4. 首页：倒计时、统计卡、语录 ---------- */

.app-shell .countdown__days {
  border: 1px solid #ffffffd9;
  box-shadow:
    0 1px 2px #1c3f3010,
    0 16px 36px #30765417,
    inset 0 1px 0 #ffffffe8;
}

.app-shell .countdown__days strong {
  background: linear-gradient(168deg, #37a67e 8%, #1d6a50 88%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: none;
}

.app-shell .stat {
  box-shadow:
    0 1px 2px #1c3f300f,
    0 12px 30px #305c4a12,
    inset 0 1px 0 #ffffffb8;
  transition: transform 0.18s cubic-bezier(0.3, 0.7, 0.4, 1), box-shadow 0.18s, filter 0.18s;
}

.app-shell button.stat:hover {
  box-shadow:
    0 2px 4px #1c3f3012,
    0 20px 42px #305c4a1f,
    inset 0 1px 0 #ffffffcc;
}

.app-shell .stat__icon {
  box-shadow:
    inset 0 0 0 1px #387d601f,
    0 2px 6px #2f8d6d12;
}

.app-shell .stat--wallet strong {
  background: linear-gradient(170deg, #c08427, #94631a);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.app-shell .study-quote {
  box-shadow:
    0 1px 2px #1c3f300f,
    0 14px 34px #305c4a14,
    inset 0 1px 0 #ffffffd9;
}

.app-shell .study-quote > span {
  box-shadow:
    inset 0 0 0 1px #c26d6426,
    0 2px 6px #c26d6414;
}

/* ---------- 5. 卡片容器统一质感 ---------- */

.app-shell .week-panel,
.app-shell .today-panel,
.app-shell .makeup-wallet,
.app-shell .expense-tool,
.app-shell .home-actions,
.app-shell .calendar,
.app-shell .view-loading {
  border: 1px solid #ffffffd9;
  box-shadow:
    0 1px 2px #1c3f300e,
    0 14px 34px #305c4a12,
    inset 0 1px 0 #ffffffe0;
}

.app-shell .home-action {
  box-shadow:
    0 1px 2px #1c3f300c,
    0 8px 22px #36594a10,
    inset 0 1px 0 #ffffff8c;
  transition: transform 0.18s cubic-bezier(0.3, 0.7, 0.4, 1), box-shadow 0.18s, filter 0.18s;
}

.app-shell .home-action:hover {
  box-shadow:
    0 2px 4px #1c3f3010,
    0 16px 32px #36594a1f,
    inset 0 1px 0 #ffffffa6;
}

.app-shell .home-action__icon {
  box-shadow:
    inset 0 0 0 1px #3c7a5f1a,
    0 2px 5px #36594a12;
}

.app-shell .rules-band > div {
  box-shadow:
    0 1px 2px #1c3f300a,
    0 8px 20px #36594a0e,
    inset 0 1px 0 #ffffff8c;
}

/* ---------- 6. 按钮 ---------- */

.app-shell .button--primary {
  background: linear-gradient(180deg, #41ad86, #339070);
  box-shadow:
    0 1px 2px #1f5c4526,
    0 7px 18px #2f8a6b33,
    inset 0 1px 0 #ffffff40;
}

.app-shell .button--primary:hover:not(:disabled) {
  background: linear-gradient(180deg, #46b58d, #379976);
  box-shadow:
    0 1px 2px #1f5c4526,
    0 9px 22px #2f8a6b40,
    inset 0 1px 0 #ffffff4d;
}

.app-shell .button--secondary {
  background: #fff;
  border-color: #d3e2d9;
  box-shadow:
    0 1px 2px #1c3f300a,
    0 4px 12px #305c4a0d,
    inset 0 1px 0 #ffffffe6;
}

.app-shell .button--secondary:hover:not(:disabled) {
  background: #f4faf6;
  border-color: #bcd6c6;
}

.app-shell .button--ghost:hover:not(:disabled) {
  background: #f2f8f4;
}

/* ---------- 7. 表单 ---------- */

/* 修复：暗色主题的浅灰标签色在浅色卡片上对比度不足 */
.app-shell .field__label {
  color: #3d554a;
}

.app-shell .field input,
.app-shell .field textarea {
  background: #fff;
  border-color: #d6e4db;
  box-shadow:
    inset 0 1px 3px #1c3f300a,
    0 1px 0 #ffffffcc;
  transition: border-color 0.16s, box-shadow 0.16s, background 0.16s;
}

.app-shell .field input:focus-visible,
.app-shell .field textarea:focus-visible {
  border-color: #3aa47f;
  box-shadow:
    inset 0 1px 3px #1c3f3008,
    0 0 0 4px #3aa47f21;
}

.app-shell .dropzone {
  border-color: #b9d2c3;
  background:
    radial-gradient(circle at 50% 0, #eaf7f080, #0000 12rem),
    #f8fcf9;
  transition: border-color 0.18s, background 0.18s, box-shadow 0.18s;
}

.app-shell .dropzone--active {
  box-shadow: 0 0 0 4px #3aa47f1c;
}

.app-shell .dropzone__icon {
  box-shadow:
    inset 0 0 0 1px #2e7c5f1f,
    0 3px 8px #2f8d6d1a;
}

.app-shell .upload-item,
.app-shell .record__gallery button {
  border-color: #dbe7df;
  box-shadow:
    0 1px 2px #1c3f300d,
    0 6px 16px #305c4a12;
}

/* ---------- 8. 周进度 ---------- */

.app-shell .week-day__mark {
  background: #fbfdfc;
  border-color: #dfe9e2;
  box-shadow: inset 0 1px 3px #1c3f3008;
  transition: border-color 0.16s, background 0.16s, box-shadow 0.16s;
}

.app-shell .week-day--checked .week-day__mark {
  background: #fff4f0;
  border-color: #ecd2ca;
  box-shadow:
    inset 0 0 0 1px #d9776a14,
    0 2px 6px #d9776a14;
}

.app-shell .week-day--today .week-day__mark {
  border-color: #3aa47f;
  box-shadow:
    0 0 0 4px #3aa47f1a,
    inset 0 1px 3px #1c3f3008;
}

.app-shell .week-panel__reward {
  box-shadow: inset 0 0 0 1px #b7771f1c;
}

.app-shell .week-panel__status {
  box-shadow: inset 0 0 0 1px #2e7c5f10;
}

/* ---------- 9. 日历 ---------- */

.app-shell .calendar__weekdays {
  color: #55786a;
  font-weight: 700;
  box-shadow: inset 0 0 0 1px #2e7c5f0f;
}

.app-shell .calendar-day {
  border-color: #e2ebe5;
  background: #fdfefd;
  box-shadow: 0 1px 2px #1c3f3008;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}

.app-shell button.calendar-day:hover {
  background: #f1f9f4;
  border-color: #bfdccb;
  box-shadow:
    0 2px 4px #1c3f300d,
    0 10px 22px #305c4a17;
}

.app-shell .calendar-day--outside {
  background: #f5f8f6;
  border-color: #e9efeb;
  box-shadow: none;
}

.app-shell .calendar-day--checked {
  background: var(--u-lilac);
  border-color: #ded4f4;
  box-shadow:
    inset 0 0 0 1px #8f7cc71a,
    0 1px 2px #1c3f3008;
}

.app-shell .calendar-day--missed {
  background: var(--u-peach);
  border-color: #f0d3cd;
  box-shadow:
    inset 0 0 0 1px #c2685c14,
    0 1px 2px #1c3f3008;
}

.app-shell .calendar-day--today {
  border-color: #3aa47f;
  box-shadow:
    0 0 0 4px #3aa47f17,
    0 1px 2px #1c3f3008;
}

.app-shell .calendar-day--today .calendar-day__number {
  box-shadow:
    0 2px 6px #2f8a6b47,
    inset 0 1px 0 #ffffff42;
}

/* ---------- 10. 印章：轻微油墨立体感 ---------- */

.app-shell .stamp__ring {
  box-shadow:
    inset 0 1px 2px #ffffff59,
    0 1px 2px #8c3c3c14;
}

.app-shell .stamp--muted .stamp__ring {
  box-shadow: none;
}

/* ---------- 11. 补给与旅行 ---------- */

.app-shell .makeup-wallet {
  border-color: #ffffffd9;
}

.app-shell .expense-tool {
  border-color: #ffffffd9;
}

.app-shell .makeup-card-option {
  box-shadow:
    0 1px 2px #1c3f3008,
    inset 0 1px 0 #ffffffcc;
  transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}

.app-shell .makeup-card-option.is-selected {
  box-shadow:
    inset 0 0 0 1px #3aa47f2b,
    0 4px 12px #2f8a6b1f;
}

.app-shell .expense-recent__list > div {
  box-shadow:
    0 1px 2px #1c3f3008,
    inset 0 1px 0 #ffffffcc;
}

.app-shell .tool-header__icon {
  box-shadow:
    inset 0 0 0 1px #b45f7221,
    0 2px 6px #b45f7214;
}

.app-shell .tool-header__icon--expense {
  box-shadow:
    inset 0 0 0 1px #2f806321,
    0 2px 6px #2f806314;
}

/* ---------- 12. 弹窗与庆祝层 ---------- */

.app-shell .modal-backdrop {
  background:
    radial-gradient(circle at 50% 30%, #2c46392e, #0000 42rem),
    #23383052;
}

.app-shell .modal {
  border: 1px solid #ffffffe6;
  box-shadow:
    0 2px 6px #1f3e3021,
    0 30px 80px #1f3e3038,
    inset 0 1px 0 #ffffffd9;
}

.app-shell .celebration__content {
  box-shadow:
    0 2px 6px #23392f24,
    0 30px 90px #23392f45,
    inset 0 1px 0 #fffffff2;
}

/* ---------- 13. 移动端底栏 ---------- */

@media (max-width: 760px) {
  .app-shell .mobile-nav {
    border-top: 1px solid #ffffffe6;
    box-shadow:
      0 -1px 0 #22593f0f,
      0 -12px 32px #2b4b3e21;
  }
  .app-shell .mobile-nav button {
    transition: color 0.16s, background 0.16s, box-shadow 0.16s;
  }
  .app-shell .mobile-nav button.is-active {
    background: linear-gradient(180deg, #e7f6ee, #ddf1e6);
    box-shadow: inset 0 0 0 1px #2e7c5f1a;
  }
}

/* ---------- 14. 页脚与提示条 ---------- */

.app-shell .footer {
  border-top: 1px solid #22593f12;
}

.app-shell .page-warning {
  color: #8a6420;
  background: #fff7e2;
  border: 1px solid #ecd9ac;
  border-radius: 14px;
  box-shadow:
    0 1px 2px #1c3f300a,
    inset 0 1px 0 #ffffffb3;
}

.app-shell .form-error {
  box-shadow: inset 0 1px 0 #ffffff8c;
}

.app-shell .form-success,
.app-shell .page-success {
  box-shadow: inset 0 0 0 1px #2e7c5f14;
}

/* ---------- 15. 登录页：与主界面统一的浅色奶油风 ---------- */

.login-gate {
  color-scheme: light;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.028'/%3E%3C/svg%3E"),
    radial-gradient(circle at 12% 8%, #c4ecda9e, #0000 24rem),
    radial-gradient(circle at 90% 24%, #ece0fc8a, #0000 24rem),
    radial-gradient(circle at 50% 112%, #fdf3dd80, #0000 28rem),
    linear-gradient(#f9fcfa 0%, #f4faf6 55%, #faf9f4 100%);
}

.login-panel {
  color: #20332b;
  background: #fffffff5;
  border: 1px solid #ffffffd9;
  border-radius: 30px;
  box-shadow:
    0 1px 2px #1c3f3012,
    0 24px 60px #2a524126,
    inset 0 1px 0 #ffffffe8;
}

.login-panel__brand {
  color: #2e896a;
  background: linear-gradient(145deg, #dff3e9, #f2fbf6);
  border: 0;
  box-shadow:
    inset 0 0 0 1px #438f6e26,
    0 3px 10px #2f8d6d1a;
}

.login-panel .section-kicker {
  color: #2f8d6d;
  letter-spacing: 0.14em;
}

.login-panel h1 {
  color: #1c2f27;
  font-family: Georgia, "Songti SC", "Noto Serif SC", STSong, serif;
  font-weight: 700;
  letter-spacing: 0.015em;
}

.login-panel > p {
  color: #6f8179;
}

.login-panel .field__label {
  color: #3d554a;
}

.login-panel .field input {
  color: #20332b;
  background: #fff;
  border-color: #d6e4db;
  box-shadow:
    inset 0 1px 3px #1c3f300a,
    0 1px 0 #ffffffcc;
}

.login-panel .field input::placeholder {
  color: #9aa9a2;
}

.login-panel .field input:focus-visible {
  border-color: #3aa47f;
  box-shadow:
    inset 0 1px 3px #1c3f3008,
    0 0 0 4px #3aa47f21;
  outline: none;
}

.login-panel .password-field > svg {
  color: #8ba095;
}

.login-panel .password-field button {
  color: #7d9187;
  border-radius: 50%;
  transition: color 0.15s, background 0.15s;
}

.login-panel .password-field button:hover {
  color: #2d6f59;
  background: #edf6f0;
}

.login-panel .button--primary {
  color: #fff;
  background: linear-gradient(180deg, #41ad86, #339070);
  border-radius: 999px;
  box-shadow:
    0 1px 2px #1f5c4526,
    0 8px 20px #2f8a6b38,
    inset 0 1px 0 #ffffff40;
}

.login-panel .button--primary:hover:not(:disabled) {
  background: linear-gradient(180deg, #46b58d, #379976);
}

.login-panel .login-form__hint {
  color: #82938b;
}

.login-panel .form-error {
  color: #a65347;
  background: #fff3f0;
  border-color: #efd3ce;
}

.login-gate .skip-link {
  color: #071b16;
}

/* 登录页焦点圈配浅底 */
.login-gate button:focus-visible,
.login-gate input:focus-visible,
.login-gate a:focus-visible {
  outline-color: #3aa47f;
}

/* ---------- 16. 动效偏好：减少动态时收敛新增过渡 ---------- */

@media (prefers-reduced-motion: reduce) {
  .app-shell .stat,
  .app-shell .home-action,
  .app-shell .calendar-day,
  .app-shell .desktop-nav button,
  .app-shell .icon-button,
  .app-shell .field input,
  .app-shell .field textarea,
  .app-shell .week-day__mark,
  .app-shell .makeup-card-option,
  .app-shell .mobile-nav button {
    transition: none;
  }
}

/* ============================================================
   17. 移动端专项（v2）
   ============================================================ */

/* 17.1 触屏设备：清除悬停粘滞（点按后 hover 态残留），换成按压反馈 */
@media (hover: none) {
  .app-shell button.stat:hover,
  .app-shell .home-action:hover {
    transform: none;
  }
  .app-shell button.stat:active,
  .app-shell .home-action:active,
  .app-shell .makeup-card-option:active {
    transform: scale(0.985);
    transition-duration: 0.08s;
  }
  .app-shell button.calendar-day:active {
    background: var(--u-mint);
  }
  .app-shell .mobile-nav button:active {
    transform: scale(0.93);
    transition-duration: 0.08s;
  }
  /* 触控目标加大：退出、日历"今天"、图片删除角标 */
  .app-shell .topbar__logout {
    width: 42px;
    height: 42px;
  }
  .app-shell .calendar-actions .button--compact {
    min-height: 42px;
  }
  .app-shell .upload-item__remove {
    width: 38px;
    height: 38px;
  }
  .app-shell .record-edit__photos button > span {
    width: 34px;
    height: 34px;
  }
}

@media (max-width: 760px) {
  /* 17.2 首页顺序：把"今天想做什么"操作区提到"本周进度"之前，入口更顺手 */
  .app-shell .home-grid .home-actions {
    order: -1;
  }

  /* 17.3 盖章打卡按钮悬浮在底栏上方：长表单滚动时始终可按 */
  .app-shell .checkin-form .checkin-button {
    position: sticky;
    z-index: 6;
    bottom: calc(78px + env(safe-area-inset-bottom));
    box-shadow:
      0 1px 2px #1f5c452e,
      0 12px 28px #1f5c4547,
      inset 0 1px 0 #ffffff40;
  }

  /* 17.4 底部抽屉弹窗：加抓手示意条 */
  .app-shell .modal {
    position: relative;
  }
  .app-shell .modal::before {
    content: "";
    z-index: 7;
    pointer-events: none;
    background: #cdddd3;
    border-radius: 999px;
    width: 40px;
    height: 4px;
    position: absolute;
    top: 8px;
    left: calc(50% - 20px);
  }

  /* 17.5 底栏可读性与呼吸感 */
  .app-shell .mobile-nav span {
    font-size: 11px;
    letter-spacing: 0.02em;
  }

  /* 17.6 日历：日期数字更清晰，今日徽标不缩水 */
  .app-shell .calendar-day__number {
    font-size: 12px;
  }
  .app-shell .calendar-day__photos {
    font-size: 11px;
  }

  /* 17.7 页脚改为纵向排列，不再左右挤压 */
  .app-shell .footer {
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 5px;
    padding-top: 16px;
    padding-bottom: 16px;
  }
  .app-shell .footer p {
    text-align: left;
    line-height: 1.6;
  }
}

/* 17.8 减少动态偏好下同样收敛按压反馈 */
@media (prefers-reduced-motion: reduce) {
  .app-shell button.stat:active,
  .app-shell .home-action:active,
  .app-shell .makeup-card-option:active,
  .app-shell .mobile-nav button:active {
    transform: none;
  }
}

/* ============================================================
   18. 印章图案 2.0（v3）：24 枚全新手绘图案
   按 data-stamp 隐藏旧线稿图标与通用腮红，替换为多色 SVG 插画；
   未知印章 ID 自动保留旧渲染，不受影响。
   ============================================================ */

.stamp[data-stamp="sunrise"] .stamp__icon,
.stamp[data-stamp="sunrise"] .stamp__blush,
.stamp[data-stamp="sunny"] .stamp__icon,
.stamp[data-stamp="sunny"] .stamp__blush,
.stamp[data-stamp="book"] .stamp__icon,
.stamp[data-stamp="book"] .stamp__blush,
.stamp[data-stamp="pencil"] .stamp__icon,
.stamp[data-stamp="pencil"] .stamp__blush,
.stamp[data-stamp="sprout"] .stamp__icon,
.stamp[data-stamp="sprout"] .stamp__blush,
.stamp[data-stamp="coffee"] .stamp__icon,
.stamp[data-stamp="coffee"] .stamp__blush,
.stamp[data-stamp="cloud"] .stamp__icon,
.stamp[data-stamp="cloud"] .stamp__blush,
.stamp[data-stamp="medal"] .stamp__icon,
.stamp[data-stamp="medal"] .stamp__blush,
.stamp[data-stamp="mountain"] .stamp__icon,
.stamp[data-stamp="mountain"] .stamp__blush,
.stamp[data-stamp="ticket"] .stamp__icon,
.stamp[data-stamp="ticket"] .stamp__blush,
.stamp[data-stamp="thermos"] .stamp__icon,
.stamp[data-stamp="thermos"] .stamp__blush,
.stamp[data-stamp="paper-plane"] .stamp__icon,
.stamp[data-stamp="paper-plane"] .stamp__blush,
.stamp[data-stamp="rocket"] .stamp__icon,
.stamp[data-stamp="rocket"] .stamp__blush,
.stamp[data-stamp="star"] .stamp__icon,
.stamp[data-stamp="star"] .stamp__blush,
.stamp[data-stamp="moon"] .stamp__icon,
.stamp[data-stamp="moon"] .stamp__blush,
.stamp[data-stamp="compass"] .stamp__icon,
.stamp[data-stamp="compass"] .stamp__blush,
.stamp[data-stamp="lamp"] .stamp__icon,
.stamp[data-stamp="lamp"] .stamp__blush,
.stamp[data-stamp="clover"] .stamp__icon,
.stamp[data-stamp="clover"] .stamp__blush,
.stamp[data-stamp="sailboat"] .stamp__icon,
.stamp[data-stamp="sailboat"] .stamp__blush,
.stamp[data-stamp="camera"] .stamp__icon,
.stamp[data-stamp="camera"] .stamp__blush,
.stamp[data-stamp="headphones"] .stamp__icon,
.stamp[data-stamp="headphones"] .stamp__blush,
.stamp[data-stamp="backpack"] .stamp__icon,
.stamp[data-stamp="backpack"] .stamp__blush,
.stamp[data-stamp="trophy"] .stamp__icon,
.stamp[data-stamp="trophy"] .stamp__blush,
.stamp[data-stamp="flag"] .stamp__icon,
.stamp[data-stamp="flag"] .stamp__blush {
  display: none;
}

.stamp[data-stamp="sunrise"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 33 A10 10 0 0 1 34 33 Z' fill='%23fbe3e8' stroke='%23c95f77' stroke-width='2'/%3E%3Cpath d='M24 14.6 V19 M12.6 18.6 L15.6 21.6 M35.4 18.6 L32.4 21.6 M7.8 27.6 L11.8 28.6 M40.2 27.6 L36.2 28.6' stroke='%23e07d92' stroke-width='2' fill='none'/%3E%3Cpath d='M18.599999999999998 29.2 q1.6 -1.984 3.2 0 M24.599999999999998 29.2 q1.6 -1.984 3.2 0' stroke='%23c95f77' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cpath d='M21.7 30.6 q2.3 2.6679999999999997 4.6 0' stroke='%23c95f77' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='17.4' cy='31.2' rx='1.7' ry='1.05' fill='%23f2a4b6' opacity='0.8'/%3E%3Cellipse cx='30.6' cy='31.2' rx='1.7' ry='1.05' fill='%23f2a4b6' opacity='0.8'/%3E%3Cpath d='M7.5 33 H40.5' stroke='%23c95f77' stroke-width='2'/%3E%3Cpath d='M12 38 H20 M28 38 H36' stroke='%23eeb05c' stroke-width='1.9' stroke-dasharray='2.8 2.6'/%3E%3Cpath d='M38.6 9.899999999999999 L39.464 11.735999999999999 L41.300000000000004 12.6 L39.464 13.464 L38.6 15.3 L37.736000000000004 13.464 L35.9 12.6 L37.736000000000004 11.735999999999999 Z' fill='%23eeb05c'/%3E%3Ccircle cx='9.4' cy='13.6' r='1.3' fill='%23e07d92' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="sunny"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='24' cy='24.5' r='9.6' fill='%23f9dfe7' stroke='%23bf5375' stroke-width='2'/%3E%3Cpath d='M24 9.4 V13 M24 36 V39.6 M39.1 24.5 H35.5 M12.5 24.5 H8.9 M34.7 13.8 L32.1 16.4 M15.9 32.6 L13.3 35.2 M34.7 35.2 L32.1 32.6 M15.9 16.4 L13.3 13.8' stroke='%23d76d8e' stroke-width='2.1' fill='none'/%3E%3Cpath d='M18.849999999999998 23.2 q1.55 -1.922 3.1 0 M24.849999999999998 23.2 q1.55 -1.922 3.1 0' stroke='%23bf5375' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cpath d='M21.5 26.2 q2.5 2.9 5 0' stroke='%23bf5375' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='17.6' cy='26.4' rx='1.6' ry='1' fill='%23f0a8bc' opacity='0.8'/%3E%3Cellipse cx='30.4' cy='26.4' rx='1.6' ry='1' fill='%23f0a8bc' opacity='0.8'/%3E%3Cpath d='M40 7.500000000000001 L40.736 9.064 L42.3 9.8 L40.736 10.536000000000001 L40 12.100000000000001 L39.264 10.536000000000001 L37.7 9.8 L39.264 9.064 Z' fill='%2366bb93'/%3E%3Ccircle cx='8.6' cy='39' r='1.3' fill='%2366bb93' opacity='0.85'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="book"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 15 C19.6 12.2 13.8 11.8 9.8 13.2 V32.6 C13.8 31.2 19.6 31.6 24 34.4 Z' fill='%23faf7ff' stroke='%238a6dbd' stroke-width='2'/%3E%3Cpath d='M24 15 C28.4 12.2 34.2 11.8 38.2 13.2 V32.6 C34.2 31.2 28.4 31.6 24 34.4 Z' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='2'/%3E%3Cpath d='M13.2 18.4 C15.8 17.9 18.4 18.2 20.6 19.2 M13.2 22.4 C15.8 21.9 18.4 22.2 20.6 23.2 M13.2 26.4 C15.4 26 17.4 26.1 19.2 26.8' stroke='%23a289cf' stroke-width='1.5' fill='none' opacity='.8'/%3E%3Cpath d='M28.6 12.6 V20.4 L31.2 18.2 L33.8 20.4 V13.1' fill='%23e59a93' stroke='%23d47f78' stroke-width='1.4' stroke-linejoin='round'/%3E%3Cpath d='M40.6 7.4 L41.368 9.032 L43.0 9.8 L41.368 10.568000000000001 L40.6 12.200000000000001 L39.832 10.568000000000001 L38.2 9.8 L39.832 9.032 Z' fill='%23e59a93'/%3E%3Ccircle cx='8.2' cy='9.4' r='1.2' fill='%23a289cf' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="pencil"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='19.5' y='8.6' width='9' height='5' rx='2.4' fill='%23e893a8' stroke='%23d67890' stroke-width='1.6'/%3E%3Crect x='19.5' y='13.6' width='9' height='3' fill='%23f4fbfd' stroke='%235397ab' stroke-width='1.5'/%3E%3Cpath d='M19.5 16.6 H28.5 V32.5 H19.5 Z' fill='%23def0f5' stroke='%235397ab' stroke-width='2'/%3E%3Cpath d='M19.5 32.5 H28.5 L24 40.6 Z' fill='%23f4fbfd' stroke='%235397ab' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M22.6 38.1 L24 40.6 L25.4 38.1 Z' fill='%235397ab'/%3E%3Ccircle cx='21.9' cy='23.2' r='1.2' fill='%235397ab'/%3E%3Ccircle cx='26.1' cy='23.2' r='1.2' fill='%235397ab'/%3E%3Cpath d='M22.2 25.6 q1.8 2.088 3.6 0' stroke='%235397ab' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='20.1' cy='25.5' rx='1.35' ry='0.85' fill='%23e893a8' opacity='0.8'/%3E%3Cellipse cx='27.9' cy='25.5' rx='1.35' ry='0.85' fill='%23e893a8' opacity='0.8'/%3E%3Cpath d='M31.6 22.5 H34.8 M31.6 26.5 H34' stroke='%236db3c4' stroke-width='1.6'/%3E%3Cpath d='M29 39.8 Q33 41.8 36.6 39.9' stroke='%23d67890' stroke-width='1.7' fill='none'/%3E%3Cpath d='M35.2 9.9 L36.0 11.6 L37.7 12.4 L36.0 13.200000000000001 L35.2 14.9 L34.400000000000006 13.200000000000001 L32.7 12.4 L34.400000000000006 11.6 Z' fill='%23e893a8'/%3E%3Ccircle cx='13' cy='14.2' r='1.25' fill='%236db3c4' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="sprout"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 27.6 V19.4' stroke='%234da07c' stroke-width='2' fill='none'/%3E%3Cpath d='M24 21.2 Q16.6 20.4 15.4 13.6 Q22 12.9 24 18.6 Z' fill='%2366bb93' stroke='%234da07c' stroke-width='1.7' stroke-linejoin='round'/%3E%3Cpath d='M24 19 Q30.2 18.2 31.4 12.4 Q25.4 11.9 24 16.8 Z' fill='%23a5d8c0' stroke='%234da07c' stroke-width='1.7' stroke-linejoin='round'/%3E%3Cpath d='M15.2 27.6 H32.8 V30.4 H15.2 Z' fill='%23f9dfe7' stroke='%23bf5375' stroke-width='1.8'/%3E%3Cpath d='M16.6 30.4 H31.4 L30 38.6 Q24 40.2 18 38.6 Z' fill='%23fff6f4' stroke='%23bf5375' stroke-width='2' stroke-linejoin='round'/%3E%3Ccircle cx='21.2' cy='33.6' r='1.2' fill='%23bf5375'/%3E%3Ccircle cx='26.8' cy='33.6' r='1.2' fill='%23bf5375'/%3E%3Cpath d='M22.1 35.6 q1.9 2.2039999999999997 3.8 0' stroke='%23bf5375' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='18.9' cy='35.4' rx='1.35' ry='0.85' fill='%23f0a8bc' opacity='0.8'/%3E%3Cellipse cx='29.1' cy='35.4' rx='1.35' ry='0.85' fill='%23f0a8bc' opacity='0.8'/%3E%3Cpath d='M37.2 20.099999999999998 L37.936 21.663999999999998 L39.5 22.4 L37.936 23.136 L37.2 24.7 L36.464000000000006 23.136 L34.900000000000006 22.4 L36.464000000000006 21.663999999999998 Z' fill='%23d76d8e'/%3E%3Ccircle cx='10.6' cy='22' r='1.25' fill='%23d76d8e' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="coffee"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19.8 15.6 q-1.9 -2.5 0 -4.7 q1.6 -1.9 .2 -3.9 M26.2 16 q-1.9 -2.5 0 -4.7' stroke='%23e07d92' stroke-width='1.7' fill='none' opacity='.9'/%3E%3Cpath d='M31.2 23.6 Q37.4 24 36.9 28.5 Q36.4 32.4 31.2 32.1' fill='none' stroke='%23c95f77' stroke-width='2'/%3E%3Crect x='14.4' y='19' width='16.8' height='17' rx='4.4' fill='%23fff8f2' stroke='%23c95f77' stroke-width='2'/%3E%3Cpath d='M14.4 23.4 Q18 25.2 21.2 23.4 T27.6 23.4 Q29.6 24.4 31.2 23.4' stroke='%23e07d92' stroke-width='1.6' fill='none' opacity='.85'/%3E%3Ccircle cx='20.3' cy='28.2' r='1.25' fill='%23c95f77'/%3E%3Ccircle cx='25.7' cy='28.2' r='1.25' fill='%23c95f77'/%3E%3Cpath d='M21.1 30.3 q1.9 2.2039999999999997 3.8 0' stroke='%23c95f77' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='17.7' cy='30.5' rx='1.5' ry='0.9' fill='%23f2a4b6' opacity='0.8'/%3E%3Cellipse cx='28.3' cy='30.5' rx='1.5' ry='0.9' fill='%23f2a4b6' opacity='0.8'/%3E%3Cpath d='M28.2 34.7 C25.65 32.675000000000004 26.925 30.800000000000004 28.2 32.525000000000006 C29.474999999999998 30.800000000000004 30.75 32.675000000000004 28.2 34.7 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.1' stroke-linejoin='round'/%3E%3Cpath d='M12.2 38.8 H33.8' stroke='%23c95f77' stroke-width='2'/%3E%3Cpath d='M38.4 11.0 L39.168 12.632 L40.8 13.4 L39.168 14.168000000000001 L38.4 15.8 L37.632 14.168000000000001 L36.0 13.4 L37.632 12.632 Z' fill='%23eeb05c'/%3E%3Ccircle cx='9.2' cy='27.4' r='1.2' fill='%23e07d92' opacity='0.55'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="cloud"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13.4 33 C9.8 33 7.6 30.2 8.6 27.2 C9.3 25.2 11.2 24 13.3 24.2 C13.4 20.2 16.6 17.2 20.6 17.4 C23.4 17.5 25.8 19.2 26.9 21.6 C28 20.5 29.8 20 31.5 20.5 C34.5 21.3 36.2 24.2 35.5 27.2 C37.7 27.7 39 29.8 38.3 31.8 C37.7 33.5 36 34.4 34.1 34.2 L15.6 34.2 C14.8 34.2 14 33.8 13.4 33 Z' fill='%23f4fbfd' stroke='%235397ab' stroke-width='2'/%3E%3Cpath d='M18.05 26.6 q1.55 -1.922 3.1 0 M24.25 26.6 q1.55 -1.922 3.1 0' stroke='%235397ab' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cpath d='M20.599999999999998 28.8 q2.1 2.436 4.2 0' stroke='%235397ab' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='16.6' cy='28.9' rx='1.5' ry='0.9' fill='%23e893a8' opacity='0.8'/%3E%3Cellipse cx='29.2' cy='28.9' rx='1.5' ry='0.9' fill='%23e893a8' opacity='0.8'/%3E%3Cpath d='M6.4 20.8 H9.6 M5.2 25.6 H8' stroke='%236db3c4' stroke-width='1.7'/%3E%3Cpath d='M39.8 11.0 L40.632 12.767999999999999 L42.4 13.6 L40.632 14.432 L39.8 16.2 L38.967999999999996 14.432 L37.199999999999996 13.6 L38.967999999999996 12.767999999999999 Z' fill='%23e893a8'/%3E%3Ccircle cx='41.6' cy='36.4' r='1.3' fill='%236db3c4' opacity='0.6'/%3E%3Ccircle cx='10' cy='39' r='1.2' fill='%23e893a8' opacity='0.8'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="medal"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18.2 7.6 H29.8 L26.4 16.2 H21.6 Z' fill='%23e59a93' stroke='%23d47f78' stroke-width='1.6' stroke-linejoin='round'/%3E%3Ccircle cx='24' cy='26.8' r='10.2' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='2'/%3E%3Ccircle cx='24' cy='26.8' r='7.3' fill='none' stroke='%23a289cf' stroke-width='1.4' stroke-dasharray='2.5 2.7'/%3E%3Cpath d='M24.0 22.4 L25.1 25.3 L28.2 25.4 L25.8 27.4 L26.6 30.4 L24.0 28.7 L21.4 30.4 L22.2 27.4 L19.8 25.4 L22.9 25.3 Z' fill='%23faf7ff' stroke='%238a6dbd' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M8.6 18.299999999999997 L9.272 19.727999999999998 L10.7 20.4 L9.272 21.072 L8.6 22.5 L7.928 21.072 L6.5 20.4 L7.928 19.727999999999998 Z' fill='%23e59a93'/%3E%3Cpath d='M39.4 18.299999999999997 L40.071999999999996 19.727999999999998 L41.5 20.4 L40.071999999999996 21.072 L39.4 22.5 L38.728 21.072 L37.3 20.4 L38.728 19.727999999999998 Z' fill='%23e59a93'/%3E%3Ccircle cx='10.4' cy='34.6' r='1.2' fill='%23a289cf' opacity='0.6'/%3E%3Ccircle cx='37.6' cy='34.6' r='1.2' fill='%23a289cf' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="mountain"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M30.6 12.2 V6.8' stroke='%23bf5375' stroke-width='1.8'/%3E%3Cpath d='M30.6 6.8 h5.6 l-1.7 2.1 1.7 2.1 h-5.6 Z' fill='%2366bb93' stroke='%234da07c' stroke-width='1.4' stroke-linejoin='round'/%3E%3Cpath d='M21 35 L30.6 18.6 L40.4 35 Z' fill='%23f9dfe7' stroke='%23bf5375' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M7.6 38 L19 19.6 L30.4 38 Z' fill='%23fff6f4' stroke='%23bf5375' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M15.2 25.7 L19 19.6 L22.8 25.7 Q20.9 27.4 19 26.2 Q17.1 25 15.2 25.7 Z' fill='%23fff' stroke='%23bf5375' stroke-width='1.5' stroke-linejoin='round'/%3E%3Cpath d='M12.6 36 Q16.4 32.6 18 29.2' stroke='%23d76d8e' stroke-width='1.7' fill='none' stroke-dasharray='.5 3.4'/%3E%3Cpath d='M10.4 10.2 L11.168000000000001 11.831999999999999 L12.8 12.6 L11.168000000000001 13.368 L10.4 15.0 L9.632 13.368 L8.0 12.6 L9.632 11.831999999999999 Z' fill='%23d76d8e'/%3E%3Ccircle cx='42' cy='28.4' r='1.25' fill='%23d76d8e' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="ticket"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.5 16.5 H35.5 A3 3 0 0 1 38.5 19.5 V22.1 A2.7 2.7 0 0 0 38.5 27.3 V29.9 A3 3 0 0 1 35.5 32.9 H12.5 A3 3 0 0 1 9.5 29.9 V27.3 A2.7 2.7 0 0 0 9.5 22.1 V19.5 A3 3 0 0 1 12.5 16.5 Z' fill='%23fff8f2' stroke='%23c95f77' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M30.2 18.4 V31' stroke='%23e07d92' stroke-width='1.6' stroke-dasharray='2.2 2.6'/%3E%3Cpath d='M34.3 21.8 L35.0 23.7 L37.1 23.8 L35.5 25.1 L36.0 27.0 L34.3 25.9 L32.6 27.0 L33.1 25.1 L31.5 23.8 L33.6 23.7 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.2' stroke-linejoin='round'/%3E%3Cpath d='M13.6 27.8 Q18.6 24.6 24.4 26.6' stroke='%23e07d92' stroke-width='1.5' fill='none' stroke-dasharray='2.4 2.3'/%3E%3Cpath d='M24.2 26.7 l3.4 -.9 -2.1 2.8 Z' fill='%23c95f77'/%3E%3Cpath d='M15.8 22.5 C13.08 20.34 14.440000000000001 18.339999999999996 15.8 20.18 C17.16 18.339999999999996 18.52 20.34 15.8 22.5 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.1' stroke-linejoin='round'/%3E%3Cpath d='M13 37.4 H22 M26 37.4 H31' stroke='%23eeb05c' stroke-width='1.8' stroke-dasharray='2.8 2.6'/%3E%3Cpath d='M41 9.2 L41.768 10.831999999999999 L43.4 11.6 L41.768 12.368 L41 14.0 L40.232 12.368 L38.6 11.6 L40.232 10.831999999999999 Z' fill='%23eeb05c'/%3E%3Ccircle cx='7.4' cy='12' r='1.25' fill='%23e07d92' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="thermos"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.8 8.2 q-1.4 -1.9 0 -3.6 M26.2 8.2 q-1.4 -1.9 0 -3.6' stroke='%236db3c4' stroke-width='1.5' fill='none' opacity='.85'/%3E%3Crect x='16.6' y='10.4' width='14.8' height='4.8' rx='2' fill='%23def0f5' stroke='%235397ab' stroke-width='1.8'/%3E%3Cpath d='M17.4 15.2 H30.6 V33.6 A4.4 4.4 0 0 1 26.2 38 H21.8 A4.4 4.4 0 0 1 17.4 33.6 Z' fill='%23f4fbfd' stroke='%235397ab' stroke-width='2'/%3E%3Cpath d='M30.6 20.2 q4.4 .5 4 4.5 q-.3 3.3 -4 3.5' fill='none' stroke='%235397ab' stroke-width='1.8'/%3E%3Cpath d='M17.4 25.4 Q20.8 23.8 24 25.4 T30.6 25.4' stroke='%23e893a8' stroke-width='2' fill='none'/%3E%3Cpath d='M17.4 28.8 Q20.8 27.2 24 28.8 T30.6 28.8' stroke='%23e893a8' stroke-width='1.5' fill='none' opacity='.55'/%3E%3Ccircle cx='21.6' cy='19.6' r='1.2' fill='%235397ab'/%3E%3Ccircle cx='26.4' cy='19.6' r='1.2' fill='%235397ab'/%3E%3Cpath d='M22.2 21.4 q1.8 2.088 3.6 0' stroke='%235397ab' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cpath d='M38 31.000000000000004 L38.704 32.496 L40.2 33.2 L38.704 33.904 L38 35.400000000000006 L37.296 33.904 L35.8 33.2 L37.296 32.496 Z' fill='%23e893a8'/%3E%3Ccircle cx='10.4' cy='18.4' r='1.25' fill='%236db3c4' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="paper-plane"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M39 12.6 L9.8 23.8 L20.9 27.5 Z' fill='%23faf7ff' stroke='%238a6dbd' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M39 12.6 L20.9 27.5 L22.1 36 L27.6 29.7 Z' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M39 12.6 L27.6 29.7' stroke='%238a6dbd' stroke-width='1.5'/%3E%3Cpath d='M20 37.2 Q12.4 40.4 9.2 35.4 Q6.8 31.2 11.2 29.4' stroke='%23a289cf' stroke-width='1.7' fill='none' stroke-dasharray='2.7 2.7'/%3E%3Cpath d='M40.4 23.0 L41.168 24.631999999999998 L42.8 25.4 L41.168 26.168 L40.4 27.799999999999997 L39.632 26.168 L38.0 25.4 L39.632 24.631999999999998 Z' fill='%23e59a93'/%3E%3Cpath d='M9 10.4 L9.64 11.76 L11 12.4 L9.64 13.040000000000001 L9 14.4 L8.36 13.040000000000001 L7 12.4 L8.36 11.76 Z' fill='%23e59a93' opacity='0.9'/%3E%3Ccircle cx='33.4' cy='7.8' r='1.3' fill='%23a289cf' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="rocket"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 7.6 C28.7 10.7 30.7 15.9 30.7 21.4 C30.7 25.8 29.3 29.6 27.5 31.8 H20.5 C18.7 29.6 17.3 25.8 17.3 21.4 C17.3 15.9 19.3 10.7 24 7.6 Z' fill='%23fff8f2' stroke='%23c95f77' stroke-width='2'/%3E%3Ccircle cx='24' cy='19.8' r='3.5' fill='%23fbe3e8' stroke='%23c95f77' stroke-width='1.8'/%3E%3Ccircle cx='22.9' cy='18.7' r='0.95' fill='%23ffffff' opacity='0.95'/%3E%3Cpath d='M17.3 25.8 Q12.9 27.9 12.3 33.2 Q16 32.4 18.7 30.2 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M30.7 25.8 Q35.1 27.9 35.7 33.2 Q32 32.4 29.3 30.2 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M21.3 32.8 Q20.9 37.2 24 40.8 Q27.1 37.2 26.7 32.8 Q24 34.3 21.3 32.8 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M23.2 34.4 Q23.2 36.8 24 38.4 Q24.8 36.8 24.8 34.4' fill='%23fff' opacity='.9'/%3E%3Cpath d='M10.6 17.4 H14 M8.8 22.8 H12.2' stroke='%23e07d92' stroke-width='1.6'/%3E%3Cpath d='M37.8 9.7 L38.599999999999994 11.399999999999999 L40.3 12.2 L38.599999999999994 13.0 L37.8 14.7 L37.0 13.0 L35.3 12.2 L37.0 11.399999999999999 Z' fill='%23eeb05c'/%3E%3Ccircle cx='39.8' cy='38.6' r='1.3' fill='%23e07d92' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="star"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24.0 10.2 L27.6 18.3 L36.4 19.2 L29.8 25.1 L31.6 33.7 L24.0 29.3 L16.4 33.7 L18.2 25.1 L11.6 19.2 L20.4 18.3 Z' fill='%23def0f5' stroke='%235397ab' stroke-width='2' stroke-linejoin='round'/%3E%3Ccircle cx='21.5' cy='22.6' r='1.25' fill='%235397ab'/%3E%3Ccircle cx='26.5' cy='22.6' r='1.25' fill='%235397ab'/%3E%3Cpath d='M22.0 25.2 q2.0 2.32 4 0' stroke='%235397ab' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='19.1' cy='24.8' rx='1.5' ry='0.9' fill='%23e893a8' opacity='0.8'/%3E%3Cellipse cx='28.9' cy='24.8' rx='1.5' ry='0.9' fill='%23e893a8' opacity='0.8'/%3E%3Cpath d='M9.2 37.4 Q24 42.6 38.8 37.4' stroke='%236db3c4' stroke-width='1.5' fill='none' stroke-dasharray='2.6 2.8'/%3E%3Cpath d='M39.4 8.0 L40.168 9.632 L41.8 10.4 L40.168 11.168000000000001 L39.4 12.8 L38.632 11.168000000000001 L37.0 10.4 L38.632 9.632 Z' fill='%23e893a8'/%3E%3Cpath d='M8.6 9.399999999999999 L9.176 10.623999999999999 L10.4 11.2 L9.176 11.776 L8.6 13.0 L8.024 11.776 L6.8 11.2 L8.024 10.623999999999999 Z' fill='%23e893a8' opacity='0.85'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="moon"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M28.8 8.2 A13.6 13.6 0 1 0 39.8 27.2 A11 11 0 0 1 28.8 8.2 Z' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M15.100000000000001 23 q1.5 -1.8599999999999999 3 0 M21.3 23 q1.5 -1.8599999999999999 3 0' stroke='%238a6dbd' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cpath d='M18.0 26.4 q1.6 1.8559999999999999 3.2 0' stroke='%238a6dbd' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cellipse cx='13.9' cy='25.6' rx='1.5' ry='0.9' fill='%23eda9a2' opacity='0.8'/%3E%3Cellipse cx='25.7' cy='25.6' rx='1.5' ry='0.9' fill='%23eda9a2' opacity='0.8'/%3E%3Cpath d='M31.6 11.4 h4.6 l-4.6 5 h4.6' stroke='%23a289cf' stroke-width='1.6' fill='none' stroke-linejoin='round'/%3E%3Cpath d='M38.2 20 h3 l-3 3.4 h3' stroke='%23a289cf' stroke-width='1.35' fill='none' stroke-linejoin='round' opacity='.8'/%3E%3Cpath d='M38.4 32.199999999999996 L39.104 33.696 L40.6 34.4 L39.104 35.104 L38.4 36.6 L37.696 35.104 L36.199999999999996 34.4 L37.696 33.696 Z' fill='%23e59a93'/%3E%3Ccircle cx='10.2' cy='11.6' r='1.25' fill='%23e59a93' opacity='0.85'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="compass"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='24' cy='11.1' r='2.3' fill='%23fff6f4' stroke='%23bf5375' stroke-width='1.7'/%3E%3Ccircle cx='24' cy='25.4' r='11.2' fill='%23fff6f4' stroke='%23bf5375' stroke-width='2'/%3E%3Cpath d='M24 16.2 v2.3 M24 32.3 v2.3 M15.9 25.4 h2.3 M29.8 25.4 h2.3' stroke='%23d76d8e' stroke-width='1.6'/%3E%3Cpath d='M24 17.9 L27 25.4 L24 26 L21 25.4 Z' fill='%2366bb93' stroke='%234da07c' stroke-width='1.4' stroke-linejoin='round'/%3E%3Cpath d='M24 32.9 L21 25.4 L24 24.8 L27 25.4 Z' fill='%23f9dfe7' stroke='%23bf5375' stroke-width='1.4' stroke-linejoin='round'/%3E%3Ccircle cx='24' cy='25.4' r='1.7' fill='%23bf5375'/%3E%3Cpath d='M39.6 10.899999999999999 L40.336 12.463999999999999 L41.9 13.2 L40.336 13.936 L39.6 15.5 L38.864000000000004 13.936 L37.300000000000004 13.2 L38.864000000000004 12.463999999999999 Z' fill='%23d76d8e'/%3E%3Ccircle cx='8.4' cy='36.6' r='1.25' fill='%23d76d8e' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="lamp"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24 5.6 V11' stroke='%23c95f77' stroke-width='1.8'/%3E%3Cpath d='M15.6 20.6 A8.4 8.4 0 0 1 32.4 20.6 Z' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.9' stroke-linejoin='round'/%3E%3Ccircle cx='24' cy='23.4' r='2.5' fill='%23fff6d9' stroke='%23d98f3d' stroke-width='1.5'/%3E%3Cpath d='M16.6 27 L14.8 29.8 M24 28.2 V31.4 M31.4 27 L33.2 29.8' stroke='%23e07d92' stroke-width='1.7'/%3E%3Cpath d='M14.2 37 C17.6 34.8 21.4 34.6 24 36.2 C26.6 34.6 30.4 34.8 33.8 37 L33.8 39 C30.4 37 26.6 37 24 38.6 C21.4 37 17.6 37 14.2 39 Z' fill='%23fff8f2' stroke='%23c95f77' stroke-width='1.7' stroke-linejoin='round'/%3E%3Cpath d='M24 36.2 V38.6' stroke='%23c95f77' stroke-width='1.2'/%3E%3Cpath d='M38.8 8.899999999999999 L39.535999999999994 10.463999999999999 L41.099999999999994 11.2 L39.535999999999994 11.936 L38.8 13.5 L38.064 11.936 L36.5 11.2 L38.064 10.463999999999999 Z' fill='%23eeb05c'/%3E%3Ccircle cx='9.4' cy='14' r='1.3' fill='%23e07d92' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="clover"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cdefs%3E%3Cpath id='lf' d='M24 23.6 C21.6 21.2 16.4 21.8 15.2 17.6 C14.2 13.9 18.2 11.2 21.4 12.9 C22.8 13.6 23.8 14.9 24 16.4 C24.2 14.9 25.2 13.6 26.6 12.9 C29.8 11.2 33.8 13.9 32.8 17.6 C31.6 21.8 26.4 21.2 24 23.6 Z'/%3E%3C/defs%3E%3Cuse href='%23lf' fill='%2366bb93' stroke='%234da07c' stroke-width='1.7' stroke-linejoin='round'/%3E%3Cuse href='%23lf' fill='%23a5d8c0' stroke='%234da07c' stroke-width='1.7' stroke-linejoin='round' transform='rotate(90 24 24)'/%3E%3Cuse href='%23lf' fill='%2366bb93' stroke='%234da07c' stroke-width='1.7' stroke-linejoin='round' transform='rotate(180 24 24)'/%3E%3Cuse href='%23lf' fill='%23a5d8c0' stroke='%234da07c' stroke-width='1.7' stroke-linejoin='round' transform='rotate(270 24 24)'/%3E%3Cpath d='M24.6 27.8 Q24.4 33.6 28.6 38.2' stroke='%234da07c' stroke-width='1.9' fill='none'/%3E%3Ccircle cx='24' cy='24' r='3.2' fill='%23fff6f4' stroke='%234da07c' stroke-width='1.4'/%3E%3Ccircle cx='22.9' cy='23.5' r='0.8' fill='%234da07c'/%3E%3Ccircle cx='25.1' cy='23.5' r='0.8' fill='%234da07c'/%3E%3Cpath d='M22.9 24.9 q1.1 1 2.2 0' stroke='%234da07c' stroke-width='1.1' fill='none'/%3E%3Cpath d='M40 28.200000000000003 L40.768 29.832 L42.4 30.6 L40.768 31.368000000000002 L40 33.0 L39.232 31.368000000000002 L37.6 30.6 L39.232 29.832 Z' fill='%23d76d8e'/%3E%3Ccircle cx='8.4' cy='29.8' r='1.3' fill='%23d76d8e' opacity='0.65'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="sailboat"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M24.7 10.2 V31.6' stroke='%235397ab' stroke-width='1.9'/%3E%3Cpath d='M24.7 9.8 L30.2 11.5 L24.7 13.4 Z' fill='%23e893a8' stroke='%23d67890' stroke-width='1.3' stroke-linejoin='round'/%3E%3Cpath d='M26.3 13.2 C31 16.2 33.4 21.8 33.6 28.6 L26.3 28.6 Z' fill='%23f4fbfd' stroke='%235397ab' stroke-width='1.9' stroke-linejoin='round'/%3E%3Cpath d='M23 16.2 C18.7 19 16.7 23.4 16.3 28.6 L23 28.6 Z' fill='%23def0f5' stroke='%235397ab' stroke-width='1.9' stroke-linejoin='round'/%3E%3Cpath d='M12.4 31.6 H36.4 L33.2 37.6 Q24.4 39.4 15.6 37.6 Z' fill='%23f4fbfd' stroke='%235397ab' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M7 42 Q10 40.2 13 42 T19 42 M29 42 Q32 40.2 35 42 T41 42' stroke='%236db3c4' stroke-width='1.7' fill='none'/%3E%3Cpath d='M9.4 13.6 q1.7 -1.6 3.4 0 M12.8 13.6 q1.7 -1.6 3.4 0' stroke='%236db3c4' stroke-width='1.4' fill='none'/%3E%3Cpath d='M40.2 8.4 L40.968 10.032 L42.6 10.8 L40.968 11.568000000000001 L40.2 13.200000000000001 L39.432 11.568000000000001 L37.800000000000004 10.8 L39.432 10.032 Z' fill='%23e893a8'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="camera"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.2 16.4 L19.4 12.4 H28.6 L30.8 16.4 Z' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='1.8' stroke-linejoin='round'/%3E%3Crect x='9.4' y='16.4' width='29.2' height='19' rx='4.6' fill='%23faf7ff' stroke='%238a6dbd' stroke-width='2'/%3E%3Ccircle cx='24' cy='25.8' r='6.7' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='1.9'/%3E%3Ccircle cx='24' cy='25.8' r='3.7' fill='%23a289cf' opacity='.9'/%3E%3Ccircle cx='22.6' cy='24.3' r='1.05' fill='%23ffffff' opacity='0.95'/%3E%3Crect x='31.9' y='19.2' width='4.3' height='3' rx='1.4' fill='%23e59a93' stroke='%23d47f78' stroke-width='1.2'/%3E%3Ccircle cx='14' cy='20.6' r='1.6' fill='%23fff' stroke='%238a6dbd' stroke-width='1.4'/%3E%3Cpath d='M41.2 8.1 L42.0 9.799999999999999 L43.7 10.6 L42.0 11.4 L41.2 13.1 L40.400000000000006 11.4 L38.7 10.6 L40.400000000000006 9.799999999999999 Z' fill='%23e59a93'/%3E%3Ccircle cx='7' cy='11.8' r='1.25' fill='%23a289cf' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="headphones"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.4 27 C11.4 18.2 17 12.2 24 12.2 C31 12.2 36.6 18.2 36.6 27' stroke='%23c95f77' stroke-width='2.2' fill='none'/%3E%3Crect x='8.6' y='24.8' width='7' height='10.2' rx='3.2' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.7'/%3E%3Crect x='32.4' y='24.8' width='7' height='10.2' rx='3.2' fill='%23eeb05c' stroke='%23d98f3d' stroke-width='1.7'/%3E%3Ccircle cx='10.9' cy='27.6' r='1' fill='%23ffffff' opacity='0.85'/%3E%3Ccircle cx='34.7' cy='27.6' r='1' fill='%23ffffff' opacity='0.85'/%3E%3Ccircle cx='21.2' cy='39' r='1.7' fill='%23c95f77'/%3E%3Cpath d='M22.9 39 V32.6 Q25.4 33.2 25.9 35.4' stroke='%23c95f77' stroke-width='1.6' fill='none'/%3E%3Ccircle cx='27.8' cy='41' r='1.35' fill='%23e07d92'/%3E%3Cpath d='M29.1 41 V36.2 Q31 36.7 31.4 38.3' stroke='%23e07d92' stroke-width='1.4' fill='none'/%3E%3Cpath d='M41 14.099999999999998 L41.736 15.663999999999998 L43.3 16.4 L41.736 17.136 L41 18.7 L40.264 17.136 L38.7 16.4 L40.264 15.663999999999998 Z' fill='%23eeb05c'/%3E%3Ccircle cx='6.8' cy='16.8' r='1.25' fill='%23e07d92' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="backpack"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.4 14.8 Q24 10.8 27.6 14.8' stroke='%23bf5375' stroke-width='2' fill='none'/%3E%3Crect x='13.4' y='14.8' width='21.2' height='23.4' rx='6' fill='%23f9dfe7' stroke='%23bf5375' stroke-width='2'/%3E%3Cpath d='M13.4 23.2 Q24 18.6 34.6 23.2' stroke='%23bf5375' stroke-width='1.7' fill='none'/%3E%3Crect x='22.5' y='20.6' width='3' height='4.6' rx='1.2' fill='%2366bb93' stroke='%234da07c' stroke-width='1.3'/%3E%3Crect x='17.8' y='27' width='12.4' height='8.6' rx='3.4' fill='%23fff6f4' stroke='%23bf5375' stroke-width='1.8'/%3E%3Cpath d='M20.4 29.6 Q24 32.2 27.6 29.6' stroke='%23bf5375' stroke-width='1.5' fill='none'/%3E%3Cpath d='M24 31.6 V33.4' stroke='%23bf5375' stroke-width='1.4'/%3E%3Ccircle cx='24' cy='34.3' r='0.9' fill='%23bf5375'/%3E%3Cpath d='M31.1 20.1 C28.55 18.075000000000003 29.825000000000003 16.200000000000003 31.1 17.925 C32.375 16.200000000000003 33.65 18.075000000000003 31.1 20.1 Z' fill='%2366bb93' stroke='%234da07c' stroke-width='1.1' stroke-linejoin='round'/%3E%3Cpath d='M40.4 10.100000000000001 L41.135999999999996 11.664 L42.699999999999996 12.4 L41.135999999999996 13.136000000000001 L40.4 14.7 L39.664 13.136000000000001 L38.1 12.4 L39.664 11.664 Z' fill='%23d76d8e'/%3E%3Ccircle cx='8' cy='31.2' r='1.3' fill='%23d76d8e' opacity='0.65'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="trophy"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 13.4 Q10.4 13.9 10.9 18.6 Q11.3 22.6 16.6 22.7' fill='none' stroke='%238a6dbd' stroke-width='1.9'/%3E%3Cpath d='M32 13.4 Q37.6 13.9 37.1 18.6 Q36.7 22.6 31.4 22.7' fill='none' stroke='%238a6dbd' stroke-width='1.9'/%3E%3Cpath d='M16 11.4 H32 L31.1 22.2 C30.6 27 27.7 29.8 24 29.8 C20.3 29.8 17.4 27 16.9 22.2 Z' fill='%23ece4fa' stroke='%238a6dbd' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M24.0 16.2 L24.9 18.4 L27.2 18.5 L25.4 20.0 L26.0 22.4 L24.0 21.1 L22.0 22.4 L22.6 20.0 L20.8 18.5 L23.1 18.4 Z' fill='%23faf7ff' stroke='%238a6dbd' stroke-width='1.4' stroke-linejoin='round'/%3E%3Cpath d='M24 29.8 V33' stroke='%238a6dbd' stroke-width='2'/%3E%3Crect x='17.6' y='33' width='12.8' height='4.6' rx='1.8' fill='%23faf7ff' stroke='%238a6dbd' stroke-width='1.8'/%3E%3Ccircle cx='11.8' cy='8.6' r='1.4' fill='%23e59a93' opacity='0.95'/%3E%3Ccircle cx='36.4' cy='7.8' r='1.2' fill='%23a289cf' opacity='0.7'/%3E%3Cpath d='M40.6 25.0 L41.304 26.496 L42.800000000000004 27.2 L41.304 27.904 L40.6 29.4 L39.896 27.904 L38.4 27.2 L39.896 26.496 Z' fill='%23e59a93'/%3E%3Cpath d='M7.4 25.700000000000003 L8.008000000000001 26.992 L9.3 27.6 L8.008000000000001 28.208000000000002 L7.4 29.5 L6.792000000000001 28.208000000000002 L5.5 27.6 L6.792000000000001 26.992 Z' fill='%23e59a93' opacity='0.85'/%3E%3C/svg%3E") center / contain no-repeat;
}

.stamp[data-stamp="flag"] .stamp__motif {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='15.5' cy='7.8' r='1.5' fill='%235397ab'/%3E%3Cpath d='M15.5 9.3 V39.4' stroke='%235397ab' stroke-width='2.2'/%3E%3Cpath d='M9.6 40.2 Q15.5 37.8 21.4 40.2' stroke='%235397ab' stroke-width='1.8' fill='none'/%3E%3Cpath d='M15.5 11 Q23 8 29 10.4 Q34.4 12.5 37.9 10.6 L36 21.8 Q31.5 23.7 26.5 21.6 Q21 19.3 15.5 21.8 Z' fill='%23def0f5' stroke='%235397ab' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M26.4 13.0 L27.1 14.9 L29.2 15.0 L27.6 16.3 L28.1 18.2 L26.4 17.1 L24.7 18.2 L25.2 16.3 L23.6 15.0 L25.7 14.9 Z' fill='%23e893a8' stroke='%23d67890' stroke-width='1.2' stroke-linejoin='round'/%3E%3Cpath d='M8 16.4 H11 M6.8 21.4 H9.4' stroke='%236db3c4' stroke-width='1.6'/%3E%3Cpath d='M40.8 27.9 L41.535999999999994 29.464 L43.099999999999994 30.2 L41.535999999999994 30.936 L40.8 32.5 L40.064 30.936 L38.5 30.2 L40.064 29.464 Z' fill='%23e893a8'/%3E%3Ccircle cx='41.4' cy='15.2' r='1.25' fill='%236db3c4' opacity='0.6'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* 新图案下的印面微调：外圈略收敛，吉语更精致 */
.stamp__motto {
  letter-spacing: 0.08em;
  font-weight: 760;
}

.stamp__motif {
  z-index: 1;
}


/* ============================================================
   19. 流畅性专项（v4）：不改观感，只砍渲染开销
   ============================================================ */

/* 19.1 全站移除 backdrop 模糊（弱 GPU 设备的帧率杀手），
   用更高不透明度的同色底补偿，观感几乎不变 */
.topbar,
.admin-topbar,
.modal-backdrop,
.celebration,
.mobile-nav,
.app-shell .topbar,
.app-shell .mobile-nav {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

.app-shell .topbar {
  background: #fbfefcf7;
}

.admin-topbar {
  background: #0d1110fa;
}

.admin-shell .modal-backdrop,
.admin-console .modal-backdrop {
  background: #050807e0;
}

/* 19.2 照片瓦片视口外不绘制不解码：9 图记录打开明显变轻 */
.record__gallery button,
.record-edit__photos button,
.app-shell .upload-item {
  content-visibility: auto;
}

/* 19.3 弹窗滚动区独立绘制层，滚动不牵连全页重绘 */
.modal__body {
  contain: layout paint;
}

/* 19.4 收敛超大半径阴影（观感一致，光栅化更省） */
.app-shell .modal {
  box-shadow:
    0 2px 6px #1f3e3021,
    0 20px 48px #1f3e3036,
    inset 0 1px 0 #ffffffd9;
}

.app-shell .celebration__content {
  box-shadow:
    0 2px 6px #23392f24,
    0 22px 52px #23392f42,
    inset 0 1px 0 #fffffff2;
}

.modal {
  box-shadow: 0 22px 52px #00000059;
}

/* 19.5 桌面端：预留滚动条槽位，弹窗开合不再全页回流跳动 */
html {
  scrollbar-gutter: stable;
}


/* ============================================================
   20. 流畅性专项二（v5）：滚动光栅化减负
   ============================================================ */

/* 20.1 装饰性雾状渐变与纸纹挪到固定合成层：
   页面滚动时不再随内容重新光栅化，滚动画布只剩一个线性渐变 */
.app-shell {
  z-index: 0;
  background: linear-gradient(#f9fcfa 0%, #f4faf6 52%, #faf9f4 100%);
}

.app-shell::before {
  content: "";
  z-index: -1;
  pointer-events: none;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.028'/%3E%3C/svg%3E"),
    radial-gradient(circle at 6% 4%, #c4ecda9e, #0000 26rem),
    radial-gradient(circle at 95% 16%, #ece0fc8a, #0000 26rem),
    radial-gradient(circle at 50% 118%, #fdf3dd73, #0000 30rem);
}

/* 20.2 CJK 大页面关闭昂贵的连字/字距查找（视觉无差异，排版更快）；
   语录行保留原有的 optimizeLegibility */
:root {
  text-rendering: auto;
}

/* 20.3 首屏以下区块视口外跳过布局与绘制 */
.app-shell .rules-band {
  content-visibility: auto;
  contain-intrinsic-size: auto 360px;
}

.app-shell .footer {
  content-visibility: auto;
  contain-intrinsic-size: auto 120px;
}


/* ============================================================
   21. 全站 UI / 动效升级（v6）
   预算铁律：动画仅 transform / opacity / filter；
   无 backdrop 模糊动画、无几何属性动画。
   ============================================================ */

/* ---------- 21.1 共享缓动与关键帧 ---------- */

.app-shell,
.login-gate,
.admin-shell,
body.modal-open {
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-spring: cubic-bezier(0.34, 1.45, 0.44, 1);
}

@keyframes rise-in {
  0% { opacity: 0; transform: translateY(14px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes rise-in-soft {
  0% { opacity: 0; transform: translateY(9px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* ---------- 21.2 视图切换：固定层只平移 + 淡入，双端一致手感 ---------- */

@keyframes user-view-in {
  0% { opacity: 0; transform: translateY(12px); }
  100% { opacity: 1; transform: translateY(0); }
}

.app-shell .user-view {
  animation: 0.38s var(--ease-out) both user-view-in;
  will-change: transform, opacity;
}

.app-shell .view-loading {
  animation: 0.3s ease-out both modal-fade;
}

/* ---------- 21.3 首页区块级入场（滚动瞬间排好，不再逐次干扰滚动帧） ---------- */

.app-shell .dashboard-intro,
.app-shell .study-quote {
  animation: 0.5s var(--ease-out) both rise-in;
}

.app-shell .study-quote {
  animation-delay: 70ms;
}

.app-shell .home-grid > *,
.app-shell .calendar-section,
.app-shell .services-section {
  animation: 0.46s var(--ease-out) both rise-in-soft;
}

.app-shell .home-grid > :nth-child(2),
.app-shell .services-section {
  animation-delay: 60ms;
}

.app-shell .calendar-section {
  animation-delay: 110ms;
}

/* ---------- 21.4 印章重塑：更浓的油墨存在感 + 日历上"盖过章" ---------- */

.stamp__ring {
  box-shadow:
    inset 0 1px 3px #7c3f362e,
    0 1px 2px #ffffff40;
  background: color-mix(in srgb, var(--stamp-ink) 10%, transparent);
}

.stamp--tiny .stamp__ring {
  box-shadow: inset 0 1px 2px #7c3f361c;
}

/* 已盖章的日历格/周格：加一圈温柔底色，扫一眼即知"哪天盖过" */
.calendar-day--checked {
  background: #f6edda;
}

.app-shell .calendar-day--checked {
  background: color-mix(in srgb, var(--u-lilac) 62%, #fdf8ec);
}

/* ---------- 21.5 移动端按压手感（触屏专属，桌面不受影响） ---------- */

@media (hover: none) {
  .app-shell .button--primary:active:not(:disabled),
  .app-shell .button--secondary:active:not(:disabled),
  .app-shell .checkin-button:active:not(:disabled) {
    transform: translateY(1px) scale(0.98);
    filter: brightness(0.96);
    transition-duration: 0.06s;
  }

  .app-shell .icon-button:active,
  .app-shell .topbar__logout:active {
    transform: scale(0.9);
    transition-duration: 0.07s;
  }

  .app-shell .home-action:active {
    transform: translateY(1px) scale(0.985);
  }

  .app-shell .upload-item:active {
    transform: scale(0.98);
    transition-duration: 0.08s;
  }
}

/* ---------- 21.6 桌面端细腻悬停（Mac 管理端 + 桌面用户端） ---------- */

@media (hover: hover) and (pointer: fine) {
  .app-shell .home-action,
  .app-shell button.stat,
  .app-shell .makeup-card-option {
    transition:
      transform 0.24s var(--ease-out),
      box-shadow 0.24s var(--ease-out),
      filter 0.24s,
      background 0.24s,
      border-color 0.24s;
  }

  .app-shell .record__gallery button {
    transition: transform 0.24s var(--ease-out), box-shadow 0.24s var(--ease-out);
  }

  .app-shell .record__gallery button:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px #305c4a1f;
  }

  .admin-shell .admin-panel,
  .admin-console .admin-panel {
    transition: transform 0.22s var(--ease-out), box-shadow 0.22s var(--ease-out);
  }

  .admin-shell .admin-panel:hover,
  .admin-console .admin-panel:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 34px #0000002e;
  }

  .app-shell .button {
    transition:
      color 0.18s, border-color 0.18s, background 0.18s,
      transform 0.14s var(--ease-out), box-shadow 0.18s, filter 0.18s;
  }
}

/* ---------- 21.7 弹窗与浮层的开合更弹 ---------- */

@keyframes modal-rise {
  0% { opacity: 0; transform: translateY(16px) scale(0.985); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

.modal {
  animation: 0.3s var(--ease-out) both modal-rise;
  will-change: transform, opacity;
}

.modal-backdrop {
  animation: 0.2s ease-out both modal-fade;
}

@keyframes celebrate-rise {
  0% { opacity: 0; transform: translateY(22px) scale(0.94); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

.celebration__content {
  animation: 0.34s var(--ease-spring) both celebrate-rise;
  will-change: transform, opacity;
}

.celebration {
  animation-duration: 0.18s;
}

/* ---------- 21.8 盖章动画：更有"落下敲章"的重量感 ---------- */

@keyframes stamp-drop {
  0% { opacity: 0; transform: translate(var(--stamp-offset-x), -56px) scale(1.9) rotate(9deg); }
  52% { opacity: 1; transform: translate(var(--stamp-offset-x), 3px) scale(0.88) rotate(-7deg); }
  72% { transform: translate(var(--stamp-offset-x), -2px) scale(1.05) rotate(-4deg); }
  100% { transform: translate(var(--stamp-offset-x), 0) scale(1) rotate(var(--stamp-tilt)); }
}

.stamp--animate {
  animation: 0.6s cubic-bezier(0.2, 0.85, 0.28, 1) both stamp-drop;
}

/* ---------- 21.9 高光/亮部微动效（合成层 shimmer，几乎零成本） ---------- */

.app-shell .stat--wallet::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: linear-gradient(115deg, #0000 30%, #ffffff2e 45%, #0000 60%);
  background-size: 240% 100%;
  background-position: 130% 0;
  transition: background-position 0.9s ease;
}

.app-shell button.stat--wallet:hover::after {
  background-position: -30% 0;
}

/* ---------- 21.10 登录页：秋山夕照极简大屏 ---------- */

.login-gate {
  position: relative;
  overflow: hidden;
  background: linear-gradient(#eef3ee 0%, #f7f0df 55%, #f1dabc 100%);
}

.login-gate::before {
  content: "";
  pointer-events: none;
  position: absolute;
  inset: 0;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='2400' height='1200' viewBox='0 0 2400 1200'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23eaf1ea'/%3E%3Cstop offset='.45' stop-color='%23f7f0df'/%3E%3Cstop offset='.74' stop-color='%23f3dcbc'/%3E%3Cstop offset='1' stop-color='%23efd5b8'/%3E%3C/linearGradient%3E%3CradialGradient id='g' cx='.22' cy='.32' r='.45'%3E%3Cstop offset='0' stop-color='%23e89a63' stop-opacity='.55'/%3E%3Cstop offset='1' stop-color='%23e89a63' stop-opacity='0'/%3E%3C/radialGradient%3E%3CradialGradient id='h' cx='.5' cy='.5' r='.5'%3E%3Cstop offset='0' stop-color='%23ffe9c4' stop-opacity='.9'/%3E%3Cstop offset='.55' stop-color='%23ffd6a0' stop-opacity='.32'/%3E%3Cstop offset='1' stop-color='%23ffd6a0' stop-opacity='0'/%3E%3C/radialGradient%3E%3ClinearGradient id='s1' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%238ba798' stop-opacity='.62'/%3E%3Cstop offset='1' stop-color='%23b6c9b4' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='s2' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23658d7b' stop-opacity='.82'/%3E%3Cstop offset='1' stop-color='%239db8a0' stop-opacity='0'/%3E%3C/linearGradient%3E%3ClinearGradient id='s3' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%2339604f'/%3E%3Cstop offset='1' stop-color='%23638a70'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='2400' height='1200' fill='url(%23s)'/%3E%3Crect width='2400' height='1200' fill='url(%23g)'/%3E%3Ccircle cx='528' cy='380' r='300' fill='url(%23h)'/%3E%3Ccircle cx='528' cy='380' r='92' fill='%23f2a75f'/%3E%3Ccircle cx='512' cy='362' r='24' fill='%23ffce92' opacity='.85'/%3E%3Cg fill='%233c5a4c' opacity='.6'%3E%3Cpath d='M1710 250 q10 -11 21 0 q10 -11 20 0' fill='none' stroke='%233c5a4c' stroke-width='7' stroke-linecap='round'/%3E%3Cpath d='M1820 300 q8 -9 17 0 q8 -9 16 0' fill='none' stroke='%233c5a4c' stroke-width='6' stroke-linecap='round'/%3E%3Cpath d='M1910 246 q7 -8 14 0 q7 -8 14 0' fill='none' stroke='%233c5a4c' stroke-width='5' stroke-linecap='round'/%3E%3C/g%3E%3Cpath d='M0 1200 V640 Q300 500 620 600 T1240 570 Q1540 490 1840 580 T2400 660 V1200 Z' fill='url(%23s1)'/%3E%3Cpath d='M0 1200 V790 Q330 680 720 750 T1380 740 Q1720 690 2400 770 V1200 Z' fill='url(%23s2)'/%3E%3Cpath d='M0 1200 V950 Q400 860 820 920 T1600 910 Q2020 850 2400 930 V1200 Z' fill='url(%23s3)'/%3E%3Cpath d='M210 860 q28 -34 30 -76 q2 42 30 76 q-16 12 -30 12 q-14 0 -30 -12 Z' fill='%232f5343'/%3E%3Cpath d='M2090 800 q26 -30 28 -70 q2 38 28 70 q-15 11 -28 11 q-13 0 -28 -11 Z' fill='%232f5343' opacity='.85'/%3E%3Cpath d='M1500 900 q22 -26 24 -60 q2 34 24 60 q-13 10 -24 10 q-11 0 -24 -10 Z' fill='%232f5343' opacity='.7'/%3E%3C/svg%3E") center bottom / cover no-repeat;
  animation: 0.9s var(--ease-out) both modal-fade;
}

.login-panel {
  position: relative;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  border-radius: 26px;
  background: #fffdfabf;
  border: 1px solid #ffffffe0;
  box-shadow:
    0 2px 6px #4c3a2214,
    0 30px 70px #4c3a2233,
    inset 0 1px 0 #ffffffe6;
  animation: 0.55s var(--ease-out) both rise-in;
}

.login-panel__brand {
  color: #b7552f;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cpath d='M24 26 Q52 20 84 24 Q150 24 176 34 Q182 36 178 42 Q162 56 96 54 Q40 52 26 42 Q18 34 24 26 Z' fill='%23d9776a'/%3E%3Cpath d='M40 46 Q90 40 160 42' stroke='%238f3a2f' stroke-width='3' fill='none' stroke-linecap='round' opacity='.5'/%3E%3C/svg%3E") center / 84% no-repeat,
    linear-gradient(145deg, #fdf3e4, #fbeee0);
  box-shadow:
    inset 0 0 0 1px #c26d6433,
    0 4px 14px #c2855a2b;
}

.login-panel .section-kicker {
  color: #b7552f;
}

.login-panel h1 {
  color: #332c22;
  letter-spacing: 0.03em;
}

.login-panel > p {
  color: #7d7161;
}

.login-panel .button--primary {
  background: linear-gradient(180deg, #d98562, #c46448);
  box-shadow:
    0 1px 2px #7c2e1d26,
    0 9px 24px #c4644840,
    inset 0 1px 0 #ffffff45;
}

.login-panel .button--primary:hover:not(:disabled) {
  background: linear-gradient(180deg, #e08d6a, #cb6d4e);
}

.login-panel .button--primary:active:not(:disabled) {
  transform: translateY(1px) scale(0.99);
  transition-duration: 0.07s;
}

.login-panel .field input {
  background: #fffefb;
  border-color: #e6d9c8;
}

.login-panel .field input:focus-visible {
  border-color: #d98562;
  box-shadow:
    inset 0 1px 3px #4c3a220a,
    0 0 0 4px #d9856224;
}

.login-panel .password-field button:hover {
  color: #b7552f;
  background: #f7ead9;
}

.login-gate button:focus-visible,
.login-gate input:focus-visible,
.login-gate a:focus-visible {
  outline-color: #d98562;
}

/* ---------- 21.11 管理端动效收束（Mac 桌面深色端） ---------- */

.admin-shell .modal,
.admin-console .modal {
  animation: 0.3s var(--ease-out) both modal-rise;
}

/* ---------- 21.12 减少动态偏好：全局收敛新增动效 ---------- */

@media (prefers-reduced-motion: reduce) {
  .app-shell .user-view,
  .app-shell .dashboard-intro,
  .app-shell .study-quote,
  .app-shell .home-grid > *,
  .app-shell .calendar-section,
  .app-shell .services-section,
  .app-shell .view-loading,
  .login-panel,
  .login-gate::before {
    animation: none;
  }
  .app-shell .stat--wallet::after {
    display: none;
  }
  .modal,
  .celebration__content {
    animation-duration: 0.12s;
  }
}
