.account-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 11px 6px 6px;
  color: var(--green);
  text-decoration: none;
  font-size: 12px;
  font-weight: 700;
  background: var(--paper);
  white-space: nowrap;
  cursor: pointer;
  font-family: inherit;
}

/* Digital card face — shared by SPEDALIS BANK and SPEDALIS CLUB. The chip
   and portrait deliberately share the right-hand axis, matching a physical
   card while keeping the balance and masked card name easy to scan. */
.scan-card .scan-card__brand {
  box-sizing: border-box;
  min-height: 250px;
  padding: 30px;
  background: linear-gradient(145deg, #88462f 0%, #673222 58%, #3a1e17 100%);
}
.scan-card .scan-card__brand::after {
  width: 330px;
  height: 330px;
  right: -155px;
  left: auto;
  bottom: -205px;
  box-shadow: 0 0 0 38px #fff8e90c, 0 0 0 78px #fff8e908;
}
.scan-card--club.scan-card--tier-bronze .scan-card__brand {
  background: linear-gradient(145deg, #9a6848 0%, #70452c 58%, #44291d 100%);
}
.scan-card--club.scan-card--tier-gold .scan-card__brand {
  background: linear-gradient(145deg, #d9b75e 0%, #a87e27 58%, #6f4e13 100%);
}
.scan-card--club.scan-card--tier-platinum .scan-card__brand {
  background: linear-gradient(145deg, #9ba6b4 0%, #657181 58%, #394351 100%);
}
.scan-card__wordmark {
  position: relative;
  z-index: 1;
}
.scan-card__brand .scan-card__wordmark > span {
  display: block;
  font: 600 27px/1 "Fraunces", serif;
  letter-spacing: 0.14em;
}
.scan-card__brand .scan-card__wordmark > small {
  display: block;
  margin-top: 7px;
  font: 500 11px/1 "DM Sans", sans-serif;
  letter-spacing: 0.22em;
}
.scan-card .scan-card-chip {
  top: 29px;
  right: 29px;
  bottom: auto;
  left: auto;
  width: 49px;
  height: 37px;
  border: 1px solid #876628;
  border-radius: 10px;
  background: linear-gradient(135deg, #faeab8 0%, #dfbf6d 48%, #b88a3c 100%);
  box-shadow: 0 3px 8px #2b17052e, inset 0 1px 2px #fff7d4c7,
    inset 0 -2px 3px #7957194d;
}
.scan-card .scan-card-chip::before {
  inset: 8px 7px;
  border: 1px solid #84601f55;
  border-radius: 4px;
  background:
    linear-gradient(90deg, transparent 47%, #84601f55 48% 52%, transparent 53%),
    linear-gradient(transparent 47%, #84601f55 48% 52%, transparent 53%);
}
.scan-card__balance {
  position: absolute;
  z-index: 1;
  top: 104px;
  left: 30px;
  display: grid;
  gap: 8px;
}
.scan-card__brand .scan-card__balance small {
  color: #fff8e9d9;
  font: 500 14px/1.2 "DM Sans", sans-serif;
  letter-spacing: 0;
}
.scan-card__balance strong {
  color: #fff8e9;
  font: 700 39px/1 "Fraunces", serif;
}
.scan-card__holder {
  position: absolute;
  z-index: 1;
  right: 112px;
  bottom: 30px;
  left: 30px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.scan-card__brand .scan-card__holder em {
  position: static;
  min-width: 0;
  overflow: hidden;
  color: #fff8e9d9;
  font: 600 11px/1.2 "DM Sans", sans-serif;
  font-style: normal;
  letter-spacing: 0.08em;
  text-overflow: ellipsis;
  text-transform: uppercase;
  white-space: nowrap;
}
.scan-card__brand .scan-card__identifier {
  display: block;
  flex: 0 0 auto;
  color: #fff8e9;
  font: 600 13px/1 "DM Sans", sans-serif;
  letter-spacing: 0.09em;
  white-space: nowrap;
}
.scan-card .scan-card__brand > i {
  right: 28px;
  bottom: 23px;
  width: 62px;
  height: 62px;
  font-size: 34px;
}
.scan-card .scan-card__details > div:first-child {
  justify-content: flex-start;
}
@media (max-width: 400px) {
  .scan-card .scan-card__brand {
    min-height: 235px;
    padding: 24px;
  }
  .scan-card .scan-card-chip {
    top: 24px;
    right: 24px;
  }
  .scan-card__balance {
    top: 96px;
    left: 24px;
  }
  .scan-card__balance strong {
    font-size: 35px;
  }
  .scan-card__holder {
    right: 96px;
    bottom: 25px;
    left: 24px;
  }
  .scan-card__brand .scan-card__holder em {
    max-width: 105px;
  }
  .scan-card .scan-card__brand > i {
    right: 23px;
    bottom: 19px;
    width: 56px;
    height: 56px;
  }
}
.account-link__avatar {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--green);
  color: #fff;
  overflow: hidden;
}
.account-link:hover { background: #f4e7d6; }
.home-account-dialog {
  width: min(520px, calc(100% - 24px));
  max-height: min(760px, calc(100dvh - 32px));
  margin: auto;
  border: 0;
  border-radius: 26px;
  padding: 30px 24px 26px;
  background: var(--paper);
  color: var(--green);
  box-shadow: 0 28px 80px #1b241c52;
  overflow-y: auto;
}
.home-account-dialog::backdrop { background: #1a211aa8; backdrop-filter: blur(2px); }
.home-account-close { position:absolute; top:max(18px,env(safe-area-inset-top)); right:18px; display:grid; place-items:center; width:38px; height:38px; border:0; border-radius:50%; background:#f1eee6; color:var(--green); font:500 28px/1 "DM Sans"; cursor:pointer; }
.home-account-heading { padding-right:44px; }
.home-account-heading h1,.home-account-heading h2 { margin:7px 0 0; font:700 34px/1.04 "Fraunces",serif; letter-spacing:-.035em; }
.home-account-heading > p:not(.eyebrow) { margin:10px 0 20px; color:var(--muted); font-size:14px; line-height:1.45; }
.home-account-form { display:grid; gap:11px; }
.home-account-form label { display:grid; gap:6px; font-size:13px; font-weight:700; }
.home-account-form input { width:100%; min-width:0; border:1px solid var(--line); border-radius:12px; padding:14px; background:#fff; color:var(--green); font:14px "DM Sans"; }
.home-account-form input[type="date"] { -webkit-appearance:none; appearance:none; text-align:left; }
.home-account-primary { display:flex; justify-content:space-between; align-items:center; width:100%; margin-top:5px; border:0; border-radius:13px; padding:15px 17px; background:var(--green); color:#fff; font:700 14px "DM Sans"; cursor:pointer; }
.home-account-primary:disabled { opacity:.5; cursor:wait; }
.home-account-switch,.home-account-logout { border:0; background:transparent; color:var(--green); padding:10px 0 0; font:700 13px "DM Sans"; cursor:pointer; }
.home-account-divider { display:flex; align-items:center; gap:10px; margin:16px 0; color:var(--muted); font-size:12px; }
.home-account-divider::before,.home-account-divider::after { content:""; flex:1; height:1px; background:var(--line); }
.home-account-google { display:flex; align-items:center; justify-content:center; gap:10px; width:100%; border:1px solid var(--line); border-radius:13px; padding:13px 17px; background:#fff; color:var(--ink); font:700 14px "DM Sans"; cursor:pointer; }
.home-account-google:hover { background:var(--paper); }
.home-account-google img { width:18px; height:18px; }
.home-account-error,.home-account-message { margin:0 0 12px; padding:11px 12px; border-radius:10px; background:#f8e4dc; color:#8f351d; font-size:13px; }
.home-account-message.success { background:#e5f2e4; color:#245333; }
.home-account-tabs { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; padding:4px; margin:15px 0 18px; border-radius:13px; background:#f3f0e8; }
.home-account-tabs button { border:0; border-radius:10px; padding:9px 5px; background:transparent; color:var(--muted); font:700 12px "DM Sans"; cursor:pointer; }
.home-account-tabs button.active { background:#fff; color:var(--green); box-shadow:0 2px 9px #253b2d14; }
.home-account-panel { display:none; }.home-account-panel.active { display:block; }
.home-points-card { margin:4px 0 14px; padding:18px; border-radius:18px; background:var(--green); color:#fff; }
.home-points-card p { margin:0; color:#dfe8db; font-size:13px; }.home-points-card strong { display:block; margin-top:7px; font:700 42px/1 "Fraunces",serif; }
.home-credit-row { display:flex; justify-content:space-between; align-items:center; padding:16px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }.home-credit-row h3 { margin:0; font:700 20px "Fraunces",serif; }.home-credit-row p { margin:4px 0 0; color:var(--muted); font-size:12px; }.home-credit-row strong { font-size:21px; }
.home-spedalis-card { position:relative; overflow:hidden; min-height:190px; margin:18px 0 0; padding:20px; border-radius:21px; background:linear-gradient(145deg,#7a3f2a 0%,#5b2b1f 62%,#321a14 100%); color:#fff8e9; box-shadow:0 15px 35px #4b25182b; transition:opacity .2s ease; }
.home-spedalis-card::after { content:""; position:absolute; width:210px; height:210px; right:-92px; bottom:-118px; border:1px solid #fff8e938; border-radius:50%; box-shadow:0 0 0 28px #fff8e90c,0 0 0 57px #fff8e908; }
.home-spedalis-card.is-loading { opacity:.78; }
.home-spedalis-card__top,.home-spedalis-card__bottom { position:relative; z-index:1; display:flex; justify-content:space-between; align-items:center; }
.home-spedalis-card__top > span:first-child { font:600 22px/1 "Fraunces",serif; letter-spacing:.12em; }
.home-spedalis-card__chip { width:39px; height:28px; border-radius:7px; background:linear-gradient(135deg,#f4dfaa,#bd9046); box-shadow:inset 0 0 0 1px #6e491e44; }
.home-spedalis-card__balance { position:relative; z-index:1; display:grid; gap:6px; margin:34px 0 25px; }
.home-spedalis-card__balance span { color:#f3dfcf; font-size:12px; }
.home-spedalis-card__balance strong { font:700 33px/1 "Fraunces",serif; }
.home-spedalis-card__bottom { color:#f3dfcf; font-size:12px; letter-spacing:.05em; }
.home-card-help { margin:9px 2px 0; color:var(--muted); font-size:12px; text-align:center; }
.home-account-section h3 { margin:0; font:700 23px "Fraunces",serif; }.home-account-section > p { margin:6px 0 16px; color:var(--muted); font-size:12px; }
.home-marketing { grid-template-columns:auto 1fr!important; align-items:start; }.home-marketing input { width:20px; margin-top:1px; }.home-field-optional { color:var(--muted); font-weight:500; }
.home-account-logout { display:block; margin:14px auto 0; }
.home-account-menu { margin:8px 0 4px; border-top:1px solid var(--line); }
.home-account-menu-row { display:flex; align-items:center; justify-content:space-between; width:100%; border:0; border-bottom:1px solid var(--line); background:transparent; padding:16px 2px; font:700 15px "DM Sans"; color:var(--ink); text-decoration:none; cursor:pointer; text-align:left; }
.home-account-menu-row i { color:var(--muted); font-style:normal; font-size:17px; }
.home-account-signout { display:block; margin:20px 0 0; border:0; background:transparent; color:#8f351d; font:700 14px "DM Sans"; cursor:pointer; padding:0; }
.home-account-external { margin-top:30px; }
.home-account-external > p { margin:0 0 4px; color:var(--muted); font:700 11px "DM Sans"; text-transform:uppercase; letter-spacing:.05em; }
.home-account-external a { display:block; padding:11px 0; color:var(--muted); font:600 14px "DM Sans"; text-decoration:none; border-bottom:1px solid var(--line); }
.home-account-back { display:inline-flex; align-items:center; gap:4px; border:0; background:transparent; color:var(--green); font:700 13px "DM Sans"; cursor:pointer; padding:0; margin-bottom:14px; }
.home-account-section-title { margin:0 0 16px; font:700 24px "Fraunces",serif; }
.home-account-subheading { margin:28px 0 4px; font:700 18px "Fraunces",serif; }
.home-account-loading { color:var(--muted); font-size:14px; }
.home-order-item { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; padding:14px 0; border-bottom:1px solid var(--line); }
.home-order-item small { display:block; margin-top:3px; color:var(--muted); font-size:12px; }
.home-card-row { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:14px 0; border-bottom:1px solid var(--line); font-size:14px; }
.home-card-row small { display:block; color:var(--muted); font-size:12px; }
.home-card-row button { border:0; background:transparent; color:#8f351d; font:700 13px "DM Sans"; cursor:pointer; }
.home-add-card-form { margin-top:16px; }
.home-account-link-button { text-decoration:none; box-sizing:border-box; }
@media (max-width: 720px) {
  body { padding-bottom:calc(92px + env(safe-area-inset-bottom)); }
  .site-header { display:none; }
  .account-link + .order-trigger { display: none; }
  .home-account-dialog { width:100%; max-width:none; max-height:calc(100dvh - 12px); margin:auto 0 0; border-radius:25px 25px 0 0; padding:28px 20px max(24px,env(safe-area-inset-bottom)); }
  .app-scan {
    min-height:calc(100dvh - 82px);
    padding:max(30px,env(safe-area-inset-top)) 18px 112px;
    background:#fffaf3;
  }
  /* Scan already hid its own topbar here; Account and Book never needed to
     before, since their topbar only ever showed the small brand mark on
     mobile — but now that both also carry the account chip and Order Now
     button (added for desktop nav consistency), those need hiding too. */
  #appScan > .topbar,
  #clubDialog > .topbar,
  #bookingDialog > .topbar { display:none; }
  .app-scan__topline { display:flex; justify-content:flex-start; align-items:end; gap:16px; max-width:540px; margin:0 auto 20px; }
  .app-scan__topline .eyebrow,
  .app-scan__topline h1 { display:none; }
  .app-scan__topline > strong { padding-bottom:0; color:var(--green); font:700 24px "Fraunces",serif; white-space:nowrap; }
  .scan-mode-tabs { position:sticky; z-index:2; top:0; display:grid; grid-template-columns:1fr 1fr; max-width:540px; margin:0 auto 24px; border-bottom:1px solid var(--line); background:#fffaf3; }
  .scan-mode-tabs button { position:relative; min-height:48px; border:0; background:transparent; color:var(--muted); font:700 14px "DM Sans"; cursor:pointer; }
  .scan-mode-tabs button::after { content:""; position:absolute; left:12px; right:12px; bottom:-1px; height:3px; border-radius:3px 3px 0 0; background:transparent; }
  .scan-mode-tabs button.is-active { color:var(--green); }
  .scan-mode-tabs button.is-active::after { background:var(--green); }
  .scan-content { max-width:500px; margin:auto; }
  .scan-loading,.scan-signin { padding:54px 25px; text-align:center; color:var(--muted); }
  .scan-signin__mark { display:grid; place-items:center; width:66px; height:66px; margin:0 auto 18px; border-radius:50%; background:var(--green); color:#fff8e9; font:700 34px "Fraunces",serif; }
  .scan-signin h2 { margin:0; color:var(--green); font:700 29px "Fraunces",serif; }
  .scan-signin p { margin:10px auto 22px; max-width:330px; line-height:1.5; }
  .scan-primary { display:flex; justify-content:space-between; width:100%; border:0; border-radius:16px; padding:16px 18px; background:var(--green); color:#fff; font-weight:700; }
  .scan-primary:disabled { opacity:.5; }
  .scan-card,.scan-points-card { overflow:hidden; border:1px solid var(--line); border-radius:25px; background:#fff; box-shadow:0 13px 32px #4b25181c; }
  .scan-card__brand { position:relative; min-height:180px; padding:27px; overflow:hidden; background:linear-gradient(145deg,#8b4931,#54271c); color:#fff8e9; }
  .scan-card__brand::after { content:""; position:absolute; width:260px; height:260px; left:-125px; bottom:-175px; border:1px solid #fff8e93d; border-radius:50%; box-shadow:0 0 0 32px #fff8e914,0 0 0 67px #fff8e90b; }
  .scan-card--club .scan-card__brand { background:linear-gradient(145deg,#d4af5f,#8a6a1f); }
  .scan-card__brand span { display:block; font:600 25px "Fraunces",serif; letter-spacing:.13em; }
  .scan-card__brand small { letter-spacing:.2em; }
  .scan-card__brand em { position:absolute; left:27px; bottom:32px; font:600 12px "DM Sans"; font-style:normal; letter-spacing:.08em; text-transform:uppercase; color:#fff8e9cc; }
  .scan-card__brand i { position:absolute; right:28px; bottom:26px; display:grid; place-items:center; width:72px; height:72px; border:2px solid #fff8e9; border-radius:50%; font:700 39px "Fraunces",serif; overflow:hidden; }
  .scan-card__brand i img { display:block; width:100%; height:100%; object-fit:cover; }
  .scan-card-chip { position:absolute; left:27px; bottom:70px; width:40px; height:30px; border-radius:6px; background:linear-gradient(135deg,#f6e2ab,#cda355 55%,#a3803e); box-shadow:0 2px 5px #00000030, inset 0 1px 1px #ffffff80, inset 0 -1px 2px #00000030; }
  .scan-card-chip::before { content:""; position:absolute; inset:6px; border-radius:3px; background:repeating-linear-gradient(to bottom,#00000030 0,#00000030 1px,transparent 1px,transparent 7px); }
  .scan-card__details { padding:22px; text-align:center; }
  .scan-card__details > div:first-child { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; text-align:left; }
  .scan-card__details > div:first-child span { font-weight:700; }.scan-card__details > div:first-child strong { font-size:25px; }.scan-card__name { display:flex; flex-direction:column; gap:2px; }.scan-card__name small { color:var(--muted); font-weight:600; font-size:12px; }
  .scan-qr { display:block; width:min(220px,72%); height:auto; margin:0 auto 8px; }
  .scan-card code { color:var(--muted); font:600 12px "DM Sans"; letter-spacing:.15em; }
  .scan-card__actions { display:grid!important; grid-template-columns:1fr 1fr; gap:10px; margin:20px 0 0!important; }
  .scan-card__actions button { border:1px solid var(--line); border-radius:999px; padding:11px 8px; background:#fffaf3; color:var(--green); font-weight:700; }
  .scan-points-card__hero { padding:30px 25px; background:var(--green); color:#fff8e9; text-align:center; }
  .scan-points-card__hero > span { display:block; color:#f3c159; font-size:55px; line-height:1; }
  .scan-points-card__hero h2 { margin:9px 0 4px; font:700 28px "Fraunces",serif; }
  .scan-points-card__hero p { margin:0; color:#f3dfcf; }
  .scan-points-card__body { padding:22px; text-align:center; }
  .scan-qr--large { width:min(260px,82%); }
  .scan-points-card__body .scan-credit-earned { justify-content:center; margin-top:6px; font-size:15px; }
  .scan-rewards { margin-top:8px; text-align:left; }
  .scan-points-card .scan-rewards { padding:0 22px 22px; margin-top:0; }
  .scan-rewards h3 { margin:0 0 10px; color:var(--muted); font:700 11px "DM Sans"; text-transform:uppercase; letter-spacing:.05em; }
  .scan-reward-row { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:13px 15px; border:1px solid var(--line); border-radius:14px; background:#fff; margin-bottom:8px; }
  .scan-reward-row b { display:block; font:700 14px "DM Sans"; color:var(--ink); }
  .scan-reward-row small { display:block; margin-top:2px; color:var(--muted); font-size:12px; }
  .scan-reward-redeem { flex-shrink:0; border:0; border-radius:999px; padding:9px 16px; background:var(--green); color:#fff; font:700 13px "DM Sans"; cursor:pointer; }
  .scan-points-card__body p,.scan-help { color:var(--muted); font-size:12px; line-height:1.45; text-align:center; }
  .scan-help { margin:15px 18px 0; }
  body.scan-layer-open { overflow:hidden; }
  .scan-layer { position:fixed; z-index:41; inset:0 0 calc(72px + env(safe-area-inset-bottom)); display:flex; flex-direction:column; background:#fffaf3; color:var(--green); animation:scan-slide .22s ease-out; }
  .scan-layer > header { display:grid; grid-template-columns:44px 1fr 44px; align-items:center; min-height:68px; padding:max(8px,env(safe-area-inset-top)) 14px 8px; border-bottom:1px solid var(--line); background:#fffaf3; }
  .scan-layer > header h2 { margin:0; font:700 25px "Fraunces",serif; }
  .scan-back { width:42px; height:42px; border:0; background:transparent; color:var(--green); font-size:38px; line-height:1; text-align:left; }
  .scan-refresh { width:42px; height:42px; border:0; background:transparent; color:var(--green); font-size:20px; line-height:1; text-align:right; cursor:pointer; }
  .scan-refresh:disabled { opacity:.5; }
  .scan-layer__body { flex:1; overflow:auto; padding:22px 20px 120px; }
  .scan-layer__footer { position:absolute; right:0; bottom:0; left:0; display:grid; gap:10px; padding:14px 20px; border-top:1px solid var(--line); background:#fffaf3ef; backdrop-filter:blur(18px); }
  .scan-manage-summary { display:flex; align-items:center; gap:20px; max-width:520px; margin:0 auto 20px; }
  .scan-manage-summary strong { display:block; font:700 29px "Fraunces",serif; }.scan-manage-summary small { color:var(--muted); }
  .scan-card-mini { display:grid; place-items:center; width:48px; aspect-ratio:1.55; border-radius:7px; background:linear-gradient(145deg,#8b4931,#54271c); color:#fff8e9; font:700 20px "Fraunces"; box-shadow:0 5px 14px #4b251824; }
  .scan-card-mini--large { width:min(58vw,270px); min-height:150px; border-radius:16px; font-size:65px; }
  .scan-card-name,.scan-sheet-copy label { display:block; max-width:520px; margin:16px auto; color:var(--muted); font-size:13px; }
  .scan-card-name input,.scan-sheet-copy select,.scan-sheet-copy input,.scan-square-card { box-sizing:border-box; width:100%; min-height:58px; margin-top:5px; border:1px solid #a99d91; border-radius:12px; padding:0 15px; background:#fff; color:var(--green); font:600 16px "DM Sans"; }
  .scan-amount-quick,.wallet-amounts { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:4px; }
  .scan-amount-quick button,.wallet-amounts button { min-height:46px; border:1px solid #a99d91; border-radius:12px; background:#fff; color:var(--green); font:700 14px "DM Sans"; cursor:pointer; }
  .scan-amount-quick button.is-active,.wallet-amounts button.is-active,.wallet-amounts button.active { border-color:var(--green); background:var(--green); color:#fff; }
  .scan-manage-links { max-width:520px; margin:24px auto; border-top:1px solid var(--line); }
  .scan-manage-links button { display:grid; grid-template-columns:1fr auto auto; gap:12px; align-items:center; width:100%; min-height:62px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--green); font:600 16px "DM Sans"; text-align:left; }
  .scan-manage-links em { color:var(--muted); font-style:normal; }.scan-manage-links b { font-size:28px; font-weight:400; }
  .scan-card-icon { width:20px; height:20px; flex-shrink:0; vertical-align:-5px; margin-right:8px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
  .scan-payment-row { display:flex; align-items:center; gap:2px; min-height:56px; border-bottom:1px solid var(--line); font:600 16px "DM Sans"; color:var(--green); max-width:520px; margin:0 auto; }
  .scan-square-card + .scan-status, #scanCardsAddArea .scan-status { margin:10px 0; }
  #scanCardsAddArea { margin-top:20px; }
  #scanCardsAddArea .scan-outline, #scanCardsAddArea .scan-primary { width:100%; }
  .scan-outline { min-height:54px; border:1.5px solid var(--green); border-radius:999px; background:transparent; color:var(--green); font:700 16px "DM Sans"; }
  .scan-empty-state { max-width:520px; margin:45px auto; text-align:center; }.scan-empty-state > span { font-size:44px; }.scan-empty-state h3 { margin:14px 0 5px; font:700 24px "Fraunces"; }.scan-empty-state p { margin:0 0 28px; color:var(--muted); line-height:1.5; }
  .scan-wallet-row { display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; max-width:520px; margin:0 auto 28px; padding-bottom:20px; border-bottom:1px solid var(--line); }
  .scan-sheet-copy { max-width:520px; margin:auto; }.scan-sheet-copy p { color:var(--muted); line-height:1.5; }.scan-square-card { height:auto; padding:10px; }
  .scan-setting { display:flex; justify-content:space-between; align-items:center; min-height:60px; border-bottom:1px solid var(--line); font-weight:700; }
  .scan-setting__control { display:flex; align-items:center; gap:10px; }
  .scan-setting__control em { font-style:normal; color:var(--muted); font-weight:600; font-size:14px; }
  .scan-switch { width:58px; height:34px; border:0; border-radius:999px; padding:3px; background:#aaa; }.scan-switch i { display:block; width:28px; height:28px; border-radius:50%; background:#fff; transition:transform .18s; }.scan-switch.is-on { background:var(--green); }.scan-switch.is-on i { transform:translateX(24px); }
  .scan-disclosure,.scan-status { font-size:12px; }.scan-status { min-height:18px; text-align:center; }
  @keyframes scan-slide { from { transform:translateX(18px); opacity:.4 } }
}
@media (min-width: 721px) {
  /* .account-page's own top padding (menu-hierarchy.css) is meant for
     mobile, where Scan/Account/Book have no header at all and need their
     own top spacing — on desktop it pushes their .topbar down below where
     Home's and Order's headers sit, since the topbar is inside the padded
     box rather than above it. Placed here (rather than alongside .topbar's
     other desktop rules in styles.css) because menu-hierarchy.css loads
     after styles.css and would otherwise win the specificity tie. */
  .account-page { padding-top: 0; }
  .app-scan__topline { display:flex; justify-content:space-between; align-items:end; gap:16px; max-width:540px; margin:0 auto 28px; }
  .app-scan__topline .eyebrow { margin-bottom:5px; }
  .app-scan__topline h1 { margin:0; color:var(--green); font:700 38px/1 "Fraunces",serif; letter-spacing:-.04em; }
  .app-scan__topline > strong { padding-bottom:4px; color:var(--green); font-size:14px; }
  .scan-mode-tabs { display:grid; grid-template-columns:1fr 1fr; max-width:540px; margin:0 auto 28px; border-bottom:1px solid var(--line); background:var(--paper); }
  .scan-mode-tabs button { position:relative; min-height:48px; border:0; background:transparent; color:var(--muted); font:700 14px "DM Sans"; cursor:pointer; }
  .scan-mode-tabs button::after { content:""; position:absolute; left:12px; right:12px; bottom:-1px; height:3px; border-radius:3px 3px 0 0; background:transparent; }
  .scan-mode-tabs button.is-active { color:var(--green); }
  .scan-mode-tabs button.is-active::after { background:var(--green); }
  .scan-content { max-width:500px; margin:auto; }
  .scan-loading,.scan-signin { padding:54px 25px; text-align:center; color:var(--muted); }
  .scan-signin__mark { display:grid; place-items:center; width:66px; height:66px; margin:0 auto 18px; border-radius:50%; background:var(--green); color:#fff8e9; font:700 34px "Fraunces",serif; }
  .scan-signin h2 { margin:0; color:var(--green); font:700 29px "Fraunces",serif; }
  .scan-signin p { margin:10px auto 22px; max-width:330px; line-height:1.5; }
  .scan-primary { display:flex; justify-content:space-between; width:100%; border:0; border-radius:16px; padding:16px 18px; background:var(--green); color:#fff; font-weight:700; cursor:pointer; }
  .scan-primary:disabled { opacity:.5; cursor:not-allowed; }
  .scan-card,.scan-points-card { overflow:hidden; border:1px solid var(--line); border-radius:25px; background:#fff; box-shadow:0 13px 32px #4b25181c; }
  .scan-card__brand { position:relative; min-height:180px; padding:27px; overflow:hidden; background:linear-gradient(145deg,#8b4931,#54271c); color:#fff8e9; }
  .scan-card__brand::after { content:""; position:absolute; width:260px; height:260px; left:-125px; bottom:-175px; border:1px solid #fff8e93d; border-radius:50%; box-shadow:0 0 0 32px #fff8e914,0 0 0 67px #fff8e90b; }
  .scan-card--club .scan-card__brand { background:linear-gradient(145deg,#d4af5f,#8a6a1f); }
  .scan-card__brand span { display:block; font:600 25px "Fraunces",serif; letter-spacing:.13em; }
  .scan-card__brand small { letter-spacing:.2em; }
  .scan-card__brand em { position:absolute; left:27px; bottom:32px; font:600 12px "DM Sans"; font-style:normal; letter-spacing:.08em; text-transform:uppercase; color:#fff8e9cc; }
  .scan-card__brand i { position:absolute; right:28px; bottom:26px; display:grid; place-items:center; width:72px; height:72px; border:2px solid #fff8e9; border-radius:50%; font:700 39px "Fraunces",serif; overflow:hidden; }
  .scan-card__brand i img { display:block; width:100%; height:100%; object-fit:cover; }
  .scan-card-chip { position:absolute; left:27px; bottom:70px; width:40px; height:30px; border-radius:6px; background:linear-gradient(135deg,#f6e2ab,#cda355 55%,#a3803e); box-shadow:0 2px 5px #00000030, inset 0 1px 1px #ffffff80, inset 0 -1px 2px #00000030; }
  .scan-card-chip::before { content:""; position:absolute; inset:6px; border-radius:3px; background:repeating-linear-gradient(to bottom,#00000030 0,#00000030 1px,transparent 1px,transparent 7px); }
  .scan-card__details { padding:22px; text-align:center; }
  .scan-card__details > div:first-child { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; text-align:left; }
  .scan-card__details > div:first-child span { font-weight:700; }.scan-card__details > div:first-child strong { font-size:25px; }.scan-card__name { display:flex; flex-direction:column; gap:2px; }.scan-card__name small { color:var(--muted); font-weight:600; font-size:12px; }
  .scan-qr { display:block; width:min(220px,72%); height:auto; margin:0 auto 8px; }
  .scan-card code { color:var(--muted); font:600 12px "DM Sans"; letter-spacing:.15em; }
  .scan-card__actions { display:grid!important; grid-template-columns:1fr 1fr; gap:10px; margin:20px 0 0!important; }
  .scan-card__actions button { border:1px solid var(--line); border-radius:999px; padding:11px 8px; background:var(--paper); color:var(--green); font-weight:700; cursor:pointer; }
  .scan-points-card__hero { padding:30px 25px; background:var(--green); color:#fff8e9; text-align:center; }
  .scan-points-card__hero > span { display:block; color:#f3c159; font-size:55px; line-height:1; }
  .scan-points-card__hero h2 { margin:9px 0 4px; font:700 28px "Fraunces",serif; }
  .scan-points-card__hero p { margin:0; color:#f3dfcf; }
  .scan-points-card__body { padding:22px; text-align:center; }
  .scan-qr--large { width:min(260px,82%); }
  .scan-points-card__body .scan-credit-earned { justify-content:center; margin-top:6px; font-size:15px; }
  .scan-rewards { margin-top:8px; text-align:left; }
  .scan-points-card .scan-rewards { padding:0 22px 22px; margin-top:0; }
  .scan-rewards h3 { margin:0 0 10px; color:var(--muted); font:700 11px "DM Sans"; text-transform:uppercase; letter-spacing:.05em; }
  .scan-reward-row { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:13px 15px; border:1px solid var(--line); border-radius:14px; background:#fff; margin-bottom:8px; }
  .scan-reward-row b { display:block; font:700 14px "DM Sans"; color:var(--ink); }
  .scan-reward-row small { display:block; margin-top:2px; color:var(--muted); font-size:12px; }
  .scan-reward-redeem { flex-shrink:0; border:0; border-radius:999px; padding:9px 16px; background:var(--green); color:#fff; font:700 13px "DM Sans"; cursor:pointer; }
  .scan-points-card__body p,.scan-help { color:var(--muted); font-size:12px; line-height:1.45; text-align:center; }
  .scan-help { margin:15px 18px 0; }
  body.scan-layer-open { overflow:hidden; }
  .scan-layer { position:fixed; z-index:41; inset:0; display:flex; flex-direction:column; background:var(--paper); color:var(--green); animation:scan-slide .22s ease-out; }
  .scan-layer > header { display:grid; grid-template-columns:44px 1fr 44px; align-items:center; min-height:68px; padding:8px 14px; border-bottom:1px solid var(--line); background:var(--paper); }
  .scan-layer > header h2 { margin:0; font:700 25px "Fraunces",serif; }
  .scan-back { width:42px; height:42px; border:0; background:transparent; color:var(--green); font-size:38px; line-height:1; text-align:left; cursor:pointer; }
  .scan-refresh { width:42px; height:42px; border:0; background:transparent; color:var(--green); font-size:20px; line-height:1; text-align:right; cursor:pointer; }
  .scan-refresh:disabled { opacity:.5; }
  .scan-layer__body { flex:1; overflow:auto; padding:28px 20px 120px; max-width:540px; margin:0 auto; width:100%; }
  .scan-layer__footer { position:absolute; right:0; bottom:0; left:0; display:grid; gap:10px; max-width:540px; margin:0 auto; padding:14px 20px; border-top:1px solid var(--line); background:#fffaf3ef; backdrop-filter:blur(18px); }
  .scan-manage-summary { display:flex; align-items:center; gap:20px; max-width:520px; margin:0 auto 20px; }
  .scan-manage-summary strong { display:block; font:700 29px "Fraunces",serif; }.scan-manage-summary small { color:var(--muted); }
  .scan-card-mini { display:grid; place-items:center; width:48px; aspect-ratio:1.55; border-radius:7px; background:linear-gradient(145deg,#8b4931,#54271c); color:#fff8e9; font:700 20px "Fraunces"; box-shadow:0 5px 14px #4b251824; }
  .scan-card-mini--large { width:270px; min-height:150px; border-radius:16px; font-size:65px; }
  .scan-card-name,.scan-sheet-copy label { display:block; max-width:520px; margin:16px auto; color:var(--muted); font-size:13px; }
  .scan-card-name input,.scan-sheet-copy select,.scan-sheet-copy input,.scan-square-card { box-sizing:border-box; width:100%; min-height:58px; margin-top:5px; border:1px solid #a99d91; border-radius:12px; padding:0 15px; background:#fff; color:var(--green); font:600 16px "DM Sans"; }
  .scan-amount-quick,.wallet-amounts { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:4px; }
  .scan-amount-quick button,.wallet-amounts button { min-height:46px; border:1px solid #a99d91; border-radius:12px; background:#fff; color:var(--green); font:700 14px "DM Sans"; cursor:pointer; }
  .scan-amount-quick button.is-active,.wallet-amounts button.is-active,.wallet-amounts button.active { border-color:var(--green); background:var(--green); color:#fff; }
  .scan-manage-links { max-width:520px; margin:24px auto; border-top:1px solid var(--line); }
  .scan-manage-links button { display:grid; grid-template-columns:1fr auto auto; gap:12px; align-items:center; width:100%; min-height:62px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--green); font:600 16px "DM Sans"; text-align:left; cursor:pointer; }
  .scan-manage-links em { color:var(--muted); font-style:normal; }.scan-manage-links b { font-size:28px; font-weight:400; }
  .scan-card-icon { width:20px; height:20px; flex-shrink:0; vertical-align:-5px; margin-right:8px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
  .scan-payment-row { display:flex; align-items:center; gap:2px; min-height:56px; border-bottom:1px solid var(--line); font:600 16px "DM Sans"; color:var(--green); max-width:520px; margin:0 auto; }
  .scan-square-card + .scan-status, #scanCardsAddArea .scan-status { margin:10px 0; }
  #scanCardsAddArea { margin-top:20px; }
  #scanCardsAddArea .scan-outline, #scanCardsAddArea .scan-primary { width:100%; }
  .scan-outline { min-height:54px; border:1.5px solid var(--green); border-radius:999px; background:transparent; color:var(--green); font:700 16px "DM Sans"; cursor:pointer; }
  .scan-empty-state { max-width:520px; margin:45px auto; text-align:center; }.scan-empty-state > span { font-size:44px; }.scan-empty-state h3 { margin:14px 0 5px; font:700 24px "Fraunces"; }.scan-empty-state p { margin:0 0 28px; color:var(--muted); line-height:1.5; }
  .scan-wallet-row { display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; max-width:520px; margin:0 auto 28px; padding-bottom:20px; border-bottom:1px solid var(--line); }
  .scan-sheet-copy { max-width:520px; margin:auto; }.scan-sheet-copy p { color:var(--muted); line-height:1.5; }.scan-square-card { height:auto; padding:10px; }
  .scan-setting { display:flex; justify-content:space-between; align-items:center; min-height:60px; border-bottom:1px solid var(--line); font-weight:700; }
  .scan-setting__control { display:flex; align-items:center; gap:10px; }
  .scan-setting__control em { font-style:normal; color:var(--muted); font-weight:600; font-size:14px; }
  .scan-switch { width:58px; height:34px; border:0; border-radius:999px; padding:3px; background:#aaa; cursor:pointer; }.scan-switch i { display:block; width:28px; height:28px; border-radius:50%; background:#fff; transition:transform .18s; }.scan-switch.is-on { background:var(--green); }.scan-switch.is-on i { transform:translateX(24px); }
  .scan-disclosure,.scan-status { font-size:12px; }.scan-status { min-height:18px; text-align:center; }
}
