:root {
  color-scheme: light;
  --cream: #fbf7f1;
  --paper: #fffdfa;
  --ink: #332e3a;
  --muted: #6f6875;
  --line: #e9e1e8;
  --lavender: #eee8f8;
  --lavender-strong: #75609b;
  --pink: #ad526f;
  --pink-soft: #fcecf1;
  --plum: #523f6d;
  --green: #55785f;
  --shadow: 0 10px 30px rgba(66, 48, 79, .07);
  font-family: 'DM Sans', 'Segoe UI', sans-serif;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: var(--cream);
  color: var(--ink);
}

* { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; background: var(--cream); }
button, input { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible, summary:focus-visible, a:focus-visible { outline: 3px solid #bd8be0; outline-offset: 3px; }
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.site-shell { max-width: 1180px; margin: 0 auto; padding: 24px 34px 0; }
.auth-gate { display: grid; min-height: 100vh; min-height: 100svh; place-items: center; padding: 24px 17px; }
.auth-card { position: relative; width: min(100%, 420px); padding: 38px clamp(23px, 7vw, 42px) 35px; overflow: hidden; border: 1px solid #ece1ec; border-radius: 27px; background: linear-gradient(145deg, #fffdfa 4%, #f8f1f9 72%, #fff0f2 100%); box-shadow: 0 18px 55px rgba(81, 60, 91, .09); }
.auth-card::after { position: absolute; top: -69px; right: -52px; width: 160px; height: 160px; border: 1px solid rgba(178, 143, 193, .25); border-radius: 50%; box-shadow: 0 0 0 17px rgba(255,255,255,.18), 0 0 0 35px rgba(216, 111, 145, .08); content: ''; pointer-events: none; }
.auth-card__mark { display: grid; width: 47px; height: 47px; place-items: center; margin-bottom: 24px; border: 1px solid #f0d99f; border-radius: 15px; background: linear-gradient(140deg, #fff3ce, #f3d484); box-shadow: inset 0 0 0 4px rgba(255,255,255,.27); color: #846637; font-size: 23px; }
.auth-card .eyebrow { margin-bottom: 8px; }
.auth-card h1 { max-width: 320px; margin: 0; color: #493b55; font-family: 'Manrope', sans-serif; font-size: clamp(30px, 8vw, 39px); font-weight: 800; letter-spacing: -.055em; line-height: 1.08; }
.auth-card__intro { margin: 12px 0 24px; color: #776e7c; font-size: 14px; line-height: 1.55; }
.auth-form { display: grid; gap: 14px; }
.auth-form .form-field { font-size: 12px; }
.auth-form .form-field input { min-height: 48px; font-size: 16px; }
.auth-submit { width: 100%; min-height: 48px; margin-top: 1px; font-size: 13px; }
.auth-submit span { margin-left: 9px; font-size: 17px; }
.auth-form .notice { margin: 0; font-size: 12px; }
.auth-noscript { margin: 13px 0 0; color: #8b747b; font-size: 11px; line-height: 1.5; }

.hero { position: relative; min-height: 270px; overflow: hidden; padding: 25px 42px 24px; border: 1px solid #eee6ef; border-radius: 28px; background: linear-gradient(116deg, #f7eef6 0%, #f7eff9 52%, #fcecf0 100%); }
.hero__topline { display: flex; align-items: center; gap: 9px; color: var(--plum); font-size: 13px; font-weight: 700; letter-spacing: .035em; }
.sparkle { color: var(--pink); font-size: 19px; }
.hero__content { display: flex; justify-content: space-between; align-items: center; min-height: 170px; }
.hero__copy { position: relative; z-index: 1; max-width: 650px; padding: 20px 0 12px; }
.eyebrow { margin: 0 0 9px; color: var(--pink); font-size: 11px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: 'Manrope', 'Segoe UI', sans-serif; }
h1 { max-width: 620px; margin: 0; color: #49375e; font-size: clamp(38px, 5.3vw, 64px); font-weight: 800; letter-spacing: -.055em; line-height: 1.06; }
.hero__intro { max-width: 510px; margin: 15px 0 0; color: #6a606f; font-size: 16px; line-height: 1.55; }
.hero__art { position: relative; flex: 0 0 220px; height: 190px; margin-right: 9px; }
.hero__orbit { position: absolute; top: 50%; left: 50%; border: 1px solid rgba(136, 105, 160, .3); border-radius: 50%; transform: translate(-50%, -50%) rotate(-22deg); }
.hero__orbit--one { width: 204px; height: 116px; }
.hero__orbit--two { width: 150px; height: 180px; transform: translate(-50%, -50%) rotate(48deg); border-color: rgba(216, 111, 145, .35); }
.hero__coin { position: absolute; top: 50%; left: 50%; display: grid; width: 100px; height: 100px; place-items: center; border: 1px solid #f0d495; border-radius: 50%; background: radial-gradient(circle at 34% 26%, #fff4cb 0, #f5d68c 60%, #dfb765 100%); box-shadow: 0 9px 24px rgba(168, 125, 61, .2), inset 0 0 0 6px rgba(255,255,255,.26); color: #785b2f; font-family: 'Manrope', sans-serif; font-size: 34px; font-weight: 800; transform: translate(-50%, -50%) rotate(-9deg); }
.hero__star, .hero__heart { position: absolute; color: var(--pink); font-size: 26px; }
.hero__star--one { top: 22px; right: 27px; font-size: 28px; }
.hero__star--two { bottom: 26px; left: 20px; color: var(--lavender-strong); font-size: 24px; }
.hero__heart { right: 28px; bottom: 20px; color: #d97796; font-size: 29px; transform: rotate(-15deg); }

.balance-bar { position: sticky; top: 0; z-index: 20; margin: 12px 0 35px; border: 1px solid #e6deeb; border-radius: 18px; background: rgba(255,253,250,.96); box-shadow: 0 5px 17px rgba(61, 43, 74, .08); backdrop-filter: blur(12px); }
.balance-bar__inner { position: relative; display: flex; align-items: center; min-height: 67px; padding: 11px 24px; gap: 22px; }
.balance-main { display: flex; align-items: center; gap: 12px; }
.balance-icon { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 13px; background: var(--lavender); color: var(--lavender-strong); font-size: 21px; }
.balance-main strong { display: block; color: #4b3b62; font-family: 'Manrope', sans-serif; font-size: 21px; font-weight: 800; line-height: 1; }
.balance-main small { display: block; margin-top: 4px; color: var(--muted); font-size: 11px; }
.balance-progress { width: 150px; height: 7px; margin-left: auto; overflow: hidden; border-radius: 99px; background: #eeeaf0; }
.balance-progress span { display: block; width: 100%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #a58cc7, #dc8aa4); transition: width .35s ease; }

.catalog-section, .history-section { margin: 0 5px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 18px; margin: 0 0 19px; }
.section-heading h2 { margin: 0; color: #43354f; font-size: clamp(28px, 3vw, 36px); font-weight: 800; letter-spacing: -.045em; line-height: 1.1; }
.section-heading .eyebrow { margin-bottom: 7px; }
.section-heading__aside { margin: 0 2px 3px 0; color: var(--muted); font-size: 12px; line-height: 1.6; text-align: right; }
.section-heading__aside span { color: var(--plum); font-size: 14px; font-weight: 700; }
.filter-panel { display: grid; grid-template-columns: minmax(220px, .82fr) 1.5fr; gap: 15px 21px; align-items: center; margin: 0 0 22px; padding: 18px 19px; border: 1px solid #eee6ec; border-radius: 20px; background: rgba(255,253,250,.78); }
.search-field { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 13px; border: 1px solid #e5dde6; border-radius: 13px; background: #fff; color: #8e8294; }
.search-field__icon { font-size: 24px; line-height: 1; transform: rotate(-18deg); }
.search-field input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 14px; }
.search-field input::placeholder { color: #a59eaa; }
.filter-row { display: flex; align-items: center; gap: 12px; min-width: 0; }
.filter-label { flex: 0 0 66px; color: #827987; font-size: 11px; font-weight: 700; }
.chip-list { display: flex; flex-wrap: wrap; gap: 7px; min-width: 0; }
.filter-chip { min-height: 32px; padding: 6px 11px; border: 1px solid #e8e0e9; border-radius: 999px; background: #fff; color: #655c6b; cursor: pointer; font-size: 11px; font-weight: 600; transition: background .15s, border-color .15s, color .15s; }
.filter-chip:hover { border-color: #c4b2d5; }
.filter-chip[aria-pressed="true"] { border-color: #796399; background: #786398; color: #fff; }
.filter-row--category { grid-column: 1 / -1; }
.toggle-filter { display: flex; align-items: center; justify-self: end; gap: 9px; color: #5f5765; cursor: pointer; font-size: 12px; font-weight: 600; }
.toggle-filter input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.toggle-filter__track { position: relative; width: 36px; height: 21px; border-radius: 99px; background: #d6d0da; transition: background .2s; }
.toggle-filter__track::after { position: absolute; top: 3px; left: 3px; width: 15px; height: 15px; border-radius: 50%; background: white; box-shadow: 0 1px 4px #0002; content: ''; transition: transform .2s; }
.toggle-filter input:checked + .toggle-filter__track { background: var(--lavender-strong); }
.toggle-filter input:checked + .toggle-filter__track::after { transform: translateX(15px); }
.toggle-filter input:focus-visible + .toggle-filter__track { outline: 3px solid #bd8be0; outline-offset: 3px; }

.venue-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.venue-card { min-width: 0; padding: 19px 19px 16px; border: 1px solid #ece4eb; border-radius: 20px; background: var(--paper); box-shadow: 0 4px 15px rgba(66, 48, 79, .035); }
.venue-card__heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.venue-card h3 { margin: 0; color: #41354d; font-size: 19px; font-weight: 800; letter-spacing: -.035em; line-height: 1.25; overflow-wrap: anywhere; }
.venue-location { margin: 5px 0 0; color: #7f7683; font-size: 12px; }
.venue-mark { flex: 0 0 auto; display: grid; width: 34px; height: 34px; place-items: center; border-radius: 12px; background: #f4edf7; color: #896da2; font-size: 18px; }
.venue-categories { display: flex; flex-wrap: wrap; gap: 6px; margin: 13px 0 12px; }
.category-tag { display: inline-flex; align-items: center; min-height: 24px; padding: 4px 8px; border-radius: 8px; background: #f5f0f8; color: #6f5c86; font-size: 10px; font-weight: 600; }
.category-tag--treats { background: #fff1ec; color: #a56651; }
.category-tag--entertainment { background: #f0effa; color: #625f9a; }
.category-tag--gacha { background: #fcecf2; color: #a95170; }
.action-list { display: grid; gap: 8px; }
.action-option { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px 10px; align-items: center; padding: 11px 12px; border: 1px solid #eee7ef; border-radius: 14px; background: #fdfbfe; }
.action-option__name { display: flex; align-items: center; gap: 7px; color: #4b4056; font-size: 13px; font-weight: 700; }
.action-option__name .mini-sparkle { color: var(--pink); font-size: 13px; }
.action-option__price { justify-self: end; color: #765f93; font-family: 'Manrope', sans-serif; font-size: 12px; font-weight: 800; text-align: right; white-space: nowrap; }
.action-option__description { grid-column: 1 / -1; margin: -2px 0 1px; color: #877e8c; font-size: 11px; line-height: 1.45; }
.action-option__repeat-hint { grid-column: 1 / -1; margin: -3px 0 1px; color: #8e8294; font-size: 10px; line-height: 1.4; }
.action-option__button { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 39px; padding: 8px 12px; border: 0; border-radius: 11px; background: #786297; color: #fff; cursor: pointer; font-size: 12px; font-weight: 700; transition: background .15s, transform .15s; }
.action-option__button:hover:not(:disabled) { background: #624c83; }
.action-option__button:active:not(:disabled) { transform: scale(.99); }
.action-option__button:disabled { background: #e8e3e9; color: #7e7781; cursor: not-allowed; }
.action-option__button span:last-child { font-size: 11px; font-weight: 500; }
.action-option__missing { color: #9a6570; font-size: 11px; }
.details-disclosure { margin-top: 12px; border-top: 1px solid #f0eaf0; }
.details-disclosure summary { display: flex; align-items: center; justify-content: space-between; min-height: 39px; color: #766c7a; cursor: pointer; font-size: 11px; font-weight: 700; list-style: none; }
.details-disclosure summary::-webkit-details-marker, .organizer-section summary::-webkit-details-marker { display: none; }
.details-disclosure summary::after { color: #a282b7; content: '+'; font-size: 19px; font-weight: 400; }
.details-disclosure[open] summary::after { content: '−'; }
.venue-details { display: grid; gap: 8px; padding: 0 0 4px; }
.venue-details p { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 8px; margin: 0; color: #746b78; font-size: 11px; line-height: 1.45; overflow-wrap: anywhere; }
.venue-details p span:first-child { color: #a097a3; }
.venue-details a { color: #765f93; font-weight: 700; text-decoration-thickness: 1px; text-underline-offset: 2px; }
.empty-state, .history-empty { padding: 30px 18px; border: 1px dashed #dcd1e0; border-radius: 18px; color: #817889; text-align: center; }
.empty-state > span, .history-empty > span { display: inline-block; margin-bottom: 7px; color: #b490c8; font-size: 23px; }
.empty-state h3 { margin-bottom: 6px; color: #544761; font-size: 17px; }
.empty-state p, .history-empty p { margin: 0; font-size: 13px; line-height: 1.55; }
.text-button { margin-top: 13px; padding: 5px; border: 0; background: transparent; color: var(--lavender-strong); cursor: pointer; font-size: 12px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

.history-section { margin-top: 55px; }
.section-heading--history { align-items: center; margin-bottom: 16px; }
.history-count { padding: 7px 11px; border-radius: 999px; background: #f3edf6; color: #786390; font-size: 11px; font-weight: 700; }
.history-list { display: grid; gap: 9px; }
.history-entry { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 13px 15px; border: 1px solid #ece4eb; border-radius: 15px; background: #fffdfa; }
.history-entry__icon { display: grid; width: 32px; height: 32px; place-items: center; border-radius: 11px; background: #f4edf7; color: #8b6da5; }
.history-entry__content { min-width: 0; }
.history-entry__title { margin: 0; color: #514558; font-size: 13px; font-weight: 700; line-height: 1.4; overflow-wrap: anywhere; }
.history-entry__meta { margin: 3px 0 0; color: #89818e; font-size: 11px; line-height: 1.45; }
.history-entry__right { display: flex; align-items: end; gap: 10px; }
.history-entry__amount { color: #765f93; font-family: 'Manrope', sans-serif; font-size: 12px; font-weight: 800; text-align: right; white-space: nowrap; }
.undo-button { min-height: 34px; padding: 6px 9px; border: 1px solid #e7dce9; border-radius: 9px; background: #fff; color: #795e91; cursor: pointer; font-size: 10px; font-weight: 700; }
.undo-button:hover { border-color: #cfb9d8; background: #faf6fc; }
.history-entry--cancelled { opacity: .62; }
.history-entry--cancelled .history-entry__title { text-decoration: line-through; }
.history-entry--cancelled .history-entry__icon { background: #efedee; color: #8d888e; }
.cancelled-label { color: #8f878f; font-size: 10px; font-weight: 700; }
.finale-card { display: flex; align-items: center; gap: 15px; margin: 0 0 12px; padding: 18px 20px; border: 1px solid #ead9e7; border-radius: 17px; background: linear-gradient(100deg, #f5edf8, #fff0f2); color: #594766; }
.finale-card > span { flex: 0 0 auto; color: var(--pink); font-size: 27px; }
.finale-card strong { display: block; margin-bottom: 4px; font-family: 'Manrope', sans-serif; font-size: 15px; }
.finale-card p { margin: 0; color: #786f7c; font-size: 12px; line-height: 1.5; }
.history-empty { margin-top: 3px; border-color: #e9e0e9; background: rgba(255,253,250,.56); }

.organizer-section { margin: 52px 5px 40px; border: 1px solid #e7dfe8; border-radius: 19px; background: rgba(255,253,250,.68); }
.organizer-section > summary { display: flex; align-items: center; gap: 12px; min-height: 75px; padding: 14px 20px; cursor: pointer; list-style: none; }
.organizer-summary-icon { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 13px; background: #f3edf6; color: #83689b; font-size: 19px; }
.organizer-section summary strong { display: block; color: #51465b; font-family: 'Manrope', sans-serif; font-size: 15px; }
.organizer-section summary small { display: block; margin-top: 3px; color: #8a818d; font-size: 11px; }
.summary-chevron { margin-left: auto; color: #8c749b; font-size: 25px; transition: transform .2s; }
.organizer-section[open] .summary-chevron { transform: rotate(180deg); }
.organizer-content { padding: 0 20px 20px; }
.organizer-note, .privacy-note { color: #837b87; font-size: 11px; line-height: 1.55; }
.organizer-note { max-width: 850px; margin: 12px 1px 0; }
.organizer-subsection { margin-top: 27px; padding-top: 22px; border-top: 1px solid #eee7ed; }
.subsection-heading { display: flex; align-items: end; justify-content: space-between; gap: 15px; margin-bottom: 12px; }
.subsection-heading h3 { margin: 0; color: #51465a; font-size: 16px; font-weight: 800; letter-spacing: -.02em; }
.subsection-heading p { margin: 4px 0 0; color: #8b828e; font-size: 11px; line-height: 1.5; }
.inline-form { display: flex; align-items: end; gap: 10px; }
.form-field { display: grid; gap: 6px; color: #817783; font-size: 10px; font-weight: 700; }
.form-field input { width: 100%; min-height: 41px; padding: 8px 11px; border: 1px solid #e5dde6; border-radius: 10px; background: #fff; color: var(--ink); font-size: 13px; }
.form-field input::placeholder { color: #aaa2ac; }
.form-field--grow { flex: 1 1 auto; min-width: 130px; }
.form-field--amount { flex: 0 0 116px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 41px; padding: 9px 14px; border: 1px solid transparent; border-radius: 11px; cursor: pointer; font-size: 11px; font-weight: 700; line-height: 1.25; text-align: center; transition: background .15s, border-color .15s; }
.button--primary { background: #756092; color: #fff; }
.button--primary:hover:not(:disabled) { background: #604c7d; }
.button--primary:disabled { background: #d8d2dc; cursor: not-allowed; }
.button--secondary { border-color: #e4dbe7; background: #fff; color: #715987; }
.button--secondary:hover { border-color: #cbb8d6; background: #fcf8fd; }
.button--danger { border-color: #e8cfd7; background: #fff8fa; color: #a5546b; }
.button--danger:hover { background: #fcecf1; }
.inline-warning { margin-top: 8px; color: #a3576c; font-size: 11px; line-height: 1.45; }
.ledger-list { display: grid; gap: 7px; margin-top: 11px; }
.ledger-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 9px 11px; border: 1px solid #f0e9ef; border-radius: 11px; background: #fff; }
.ledger-row__copy { min-width: 0; color: #5f5664; font-size: 11px; line-height: 1.4; overflow-wrap: anywhere; }
.ledger-row__copy small { display: block; margin-top: 2px; color: #9a929d; font-size: 10px; }
.ledger-row__right { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; }
.ledger-row__amount { color: #8d607a; font-size: 11px; font-weight: 700; white-space: nowrap; }
.remove-expense { display: grid; width: 30px; height: 30px; place-items: center; border: 1px solid #eee5ec; border-radius: 9px; background: #fff; color: #927f90; cursor: pointer; font-size: 17px; }
.disabled-venues { display: grid; gap: 9px; }
.disabled-place { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 11px 12px; border: 1px solid #eee6ed; border-radius: 12px; background: #fff; }
.disabled-place__name { color: #584e5d; font-size: 12px; font-weight: 700; }
.disabled-place__reason { margin-top: 3px; color: #968c98; font-size: 10px; line-height: 1.45; }
.disabled-place .button { min-height: 34px; padding: 7px 10px; font-size: 10px; }
.disabled-actions { margin-top: 8px; }
.disabled-actions:empty { display: none; }
.backup-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.file-button { position: relative; overflow: hidden; }
.file-button input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.privacy-note { margin: 9px 0 0; }
.reset-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 25px; padding-top: 18px; border-top: 1px solid #eee7ed; }
.reset-row p { margin: 0; color: #8d848e; font-size: 11px; }
.site-footer { display: flex; align-items: center; justify-content: center; gap: 9px; padding: 0 0 29px; color: #988c9b; font-size: 11px; }
.site-footer span { color: #bd91c8; }

.notice { margin: 14px 0; padding: 13px 16px; border-radius: 13px; font-size: 13px; line-height: 1.5; }
.notice--error { border: 1px solid #eac8d1; background: #fff2f4; color: #884859; }
.notice--info { border: 1px solid #ded2e7; background: #f7f2fb; color: #655474; }
.dialog-card { width: min(500px, calc(100vw - 28px)); max-width: 500px; padding: 29px; border: 1px solid #e6dce8; border-radius: 22px; background: #fffdfa; color: var(--ink); box-shadow: 0 24px 70px rgba(40, 26, 52, .22); }
.dialog-card::backdrop { background: rgba(46, 36, 52, .37); backdrop-filter: blur(3px); }
.dialog-dismiss { position: absolute; top: 12px; right: 12px; }
.icon-button { display: grid; width: 35px; height: 35px; place-items: center; border: 0; border-radius: 50%; background: #f5eff6; color: #766880; cursor: pointer; font-size: 24px; line-height: 1; }
.dialog-card h2 { margin: 0 30px 14px 0; color: #4a3b58; font-size: 25px; font-weight: 800; letter-spacing: -.04em; }
.dialog-details { display: grid; gap: 9px; margin: 15px 0 20px; padding: 15px; border-radius: 14px; background: #f8f3f9; }
.dialog-detail { display: flex; justify-content: space-between; gap: 12px; color: #756c7a; font-size: 12px; line-height: 1.45; }
.dialog-detail strong { color: #4c4056; text-align: right; }
.dialog-quantity-row { display: grid; grid-template-columns: minmax(0, 1fr) 86px; align-items: center; gap: 7px 12px; color: #756c7a; font-size: 12px; }
.dialog-quantity-row label { font-weight: 700; }
.dialog-quantity-row input { width: 100%; min-height: 40px; padding: 7px 9px; border: 1px solid #e5dde6; border-radius: 10px; background: #fff; color: var(--ink); font-size: 16px; }
.dialog-quantity-row small { grid-column: 1 / -1; color: #8b828e; font-size: 10px; line-height: 1.4; }
.dialog-warning { margin: -7px 0 15px; color: #a3576c; font-size: 12px; }
.dialog-actions { display: flex; justify-content: end; gap: 9px; }
.dialog-actions .button { min-height: 43px; }
.dialog-copy { margin: 13px 0 20px; color: #766d7a; font-size: 13px; line-height: 1.6; }
.toast { position: fixed; right: 22px; bottom: max(20px, env(safe-area-inset-bottom)); z-index: 50; max-width: min(390px, calc(100vw - 32px)); padding: 13px 17px; border: 1px solid #d9cce2; border-radius: 13px; background: #fffdfa; box-shadow: var(--shadow); color: #584666; font-size: 13px; font-weight: 700; line-height: 1.45; opacity: 0; pointer-events: none; transform: translateY(9px); transition: opacity .2s, transform .2s; }
.toast.is-visible { opacity: 1; transform: translateY(0); }

@media (max-width: 760px) {
  .site-shell { padding: 13px 16px 0; }
  .hero { min-height: 0; padding: 19px 21px 17px; border-radius: 23px; }
  .hero__topline { font-size: 11px; }
  .hero__content { min-height: 148px; }
  .hero__copy { max-width: 75%; padding: 17px 0 10px; }
  .hero__intro { margin-top: 11px; font-size: 13px; }
  h1 { font-size: clamp(35px, 8.5vw, 50px); }
  .hero__art { position: absolute; top: 44px; right: -49px; width: 158px; height: 150px; margin: 0; transform: scale(.76); transform-origin: center; }
  .hero__coin { width: 83px; height: 83px; font-size: 29px; }
  .hero__orbit--one { width: 171px; height: 100px; }
  .hero__orbit--two { width: 126px; height: 153px; }
  .balance-bar { margin: 9px 0 29px; border-radius: 15px; }
  .balance-bar__inner { min-height: 62px; padding: 9px 13px; gap: 12px; }
  .balance-icon { width: 34px; height: 34px; border-radius: 11px; font-size: 18px; }
  .balance-main { gap: 9px; }
  .balance-main strong { font-size: 18px; }
  .balance-main small { font-size: 9px; }
  .balance-progress { width: clamp(55px, 17vw, 120px); height: 6px; }
  .catalog-section, .history-section { margin-right: 1px; margin-left: 1px; }
  .section-heading { margin-bottom: 14px; }
  .section-heading h2 { font-size: 28px; }
  .section-heading__aside { font-size: 10px; }
  .section-heading__aside span { font-size: 12px; }
  .filter-panel { grid-template-columns: minmax(0, 1fr) auto; gap: 12px 13px; padding: 13px; border-radius: 17px; }
  .search-field { grid-column: 1 / -1; min-height: 42px; }
  .filter-row { grid-column: 1 / -1; align-items: start; gap: 6px; }
  .filter-label { flex-basis: 57px; padding-top: 8px; font-size: 10px; }
  .chip-list { gap: 6px; }
  .filter-chip { min-height: 31px; padding: 6px 9px; font-size: 10px; }
  .toggle-filter { grid-column: 1 / -1; justify-self: start; margin-top: 1px; }
  .venue-grid { grid-template-columns: 1fr; gap: 10px; }
  .venue-card { padding: 16px 15px 12px; border-radius: 18px; }
  .venue-card h3 { font-size: 18px; }
  .action-option { grid-template-columns: minmax(0, 1fr); }
  .action-option__price { justify-self: start; text-align: left; white-space: normal; }
  .history-section { margin-top: 42px; }
  .history-entry { grid-template-columns: 31px minmax(0, 1fr); gap: 9px; padding: 12px; }
  .history-entry__right { grid-column: 2; justify-content: space-between; align-items: center; }
  .history-entry__amount { text-align: left; }
  .organizer-section { margin: 40px 1px 31px; }
  .organizer-section > summary { min-height: 68px; padding: 12px 14px; }
  .organizer-content { padding: 0 14px 15px; }
  .inline-form { flex-wrap: wrap; }
  .inline-form .form-field--grow { flex-basis: calc(100% - 10px); }
  .inline-form .button { flex: 1 0 100%; }
  .inline-form--compact .form-field--amount { flex: 1; }
  .inline-form--compact .button { flex: 1; }
  .inline-form--cafe .form-field--grow { flex-basis: 100%; }
  .disabled-place { grid-template-columns: minmax(0, 1fr); }
  .disabled-place .button { justify-self: start; }
  .reset-row { align-items: start; flex-direction: column; }
  .dialog-card { padding: 25px 20px 19px; }
  .dialog-card h2 { font-size: 22px; }
  .dialog-actions { flex-direction: column-reverse; }
  .dialog-actions .button { width: 100%; }
}

@media (max-width: 385px) {
  .site-shell { padding-right: 12px; padding-left: 12px; }
  .hero { padding-right: 17px; padding-left: 17px; }
  .hero__copy { max-width: 78%; }
  .hero__art { right: -61px; transform: scale(.66); }
  h1 { font-size: 35px; }
  .balance-bar__inner { gap: 9px; }
  .balance-progress { width: 80px; }
  .balance-main small { font-size: 8px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
