/* HEIWA 2.1: tarjeta, menú público y caja con QR. */
[hidden]{display:none!important}
.client-layout .main{padding-bottom:45px}
.client-bottom-nav{display:none}
.loyalty-card{background:radial-gradient(ellipse at top right,#56513b 0,transparent 55%),#292d24;box-shadow:0 12px 30px #29271f12}
.loyalty-goal{max-width:30ch;line-height:1.6;color:#efe4cf;font-size:.95rem;min-height:3em}
.loyalty-goal strong{color:#fff}
.loyalty-count{font-variant-numeric:tabular-nums}
.loyalty-progress{height:5px;background:#ffffff20;border-radius:8px;overflow:hidden;margin:0 0 10px}
.loyalty-progress span{display:block;height:100%;background:#e3cfaa;border-radius:8px}
.qr-button{margin-top:22px;background:#f7f1e6;color:#29271f;border-color:#f7f1e6;min-height:52px}
.qr-button:hover{background:#e8d8ba}
.qr-caption{font-size:.75rem;color:#ded6c3;text-align:center;margin-top:10px}
.reward-ready{margin-top:12px;color:#f7e8c6;font-size:.85rem;display:flex;gap:8px;align-items:center}
.reward-ready .icon{width:18px;height:18px}
.card-focus{display:grid;grid-template-columns:1.05fr 1fr;gap:24px;align-items:center}
.reward-illustration{height:155px;overflow:hidden;background:linear-gradient(135deg,#f0e6d5,#e2d3b8)}
.reward-illustration img{width:100%;height:100%;object-fit:cover}
.reward-card{padding:16px}
.reward-card>p,.reward-card>.row{padding-left:5px;padding-right:5px}
.reward-card .reward-bottom{gap:10px;align-items:center}
.home-shortcuts{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.profile-card{display:flex;gap:18px;align-items:center;margin-bottom:32px;overflow-wrap:anywhere}
.profile-card .avatar{width:60px;height:60px}
.visit-section{margin-top:32px}.visit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:18px}
.hours{white-space:pre-line;margin-top:8px;color:var(--muted)}
.image-preview{display:block;width:100%;max-width:500px;max-height:270px;object-fit:cover;border-radius:14px}
.qr-display{text-align:center;display:grid;justify-items:center;gap:18px}
.qr-display canvas{max-width:100%;height:auto!important;aspect-ratio:1;background:#fff;border-radius:12px;border:1px solid var(--line)}
.qr-display p{font-size:.9rem;max-width:33ch;color:var(--muted)}
.redemption-summary{text-align:center;margin-bottom:22px;display:grid;justify-items:center;gap:10px}
.redemption-summary h3{font-size:1.4rem}.redemption-summary p{font-size:.875rem;color:var(--muted)}
.redemption-status{text-align:center}.manual-code{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}
.manual-code summary{cursor:pointer;min-height:44px;align-content:center;color:var(--muted);font-size:.875rem}
.manual-code .code{font-size:1.4rem;letter-spacing:.1em;margin:10px 0}
.scan-help{margin:-8px 0 18px}
.scanner-frame{position:relative;margin:20px 0;border-radius:16px;overflow:hidden;background:#20241f;aspect-ratio:4/3}
.scanner-frame video{display:block;width:100%;height:100%;object-fit:cover}
.scanner-guide{position:absolute;inset:17% 24%;border:3px solid #f2e4bf;border-radius:20px;box-shadow:0 0 0 100vmax #0003;pointer-events:none}
.scanner-frame+ .hint{min-height:24px}
.menu-section h1{margin-top:8px}.menu-viewer{padding:12px;background:#f2eee5}
.pdf-toolbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;padding:8px 0 14px}
.pdf-toolbar .btn{min-height:44px;min-width:44px;font-size:1.1rem}
.pdf-page{min-width:65px;text-align:center;font-size:.85rem}
.pdf-scroll{overflow:auto;max-height:75vh;-webkit-overflow-scrolling:touch;border-radius:6px;background:#e8e1d6;text-align:center}
.pdf-scroll canvas{display:block;margin:0 auto;max-width:none;background:white}
#menu-preview{border:1px solid var(--line);border-radius:12px;padding:8px;overflow:hidden}
#menu-upload-status{overflow-wrap:anywhere;min-height:20px}
.public-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:20px max(20px,calc((100vw - 1020px)/2));border-bottom:1px solid var(--line);background:#fff}
.public-header .brand{text-decoration:none}.public-header .brand-name{font-size:1.5rem}
.public-main{max-width:1100px}.public-main>.visit-section{margin-top:48px}
@keyframes stamp-arrives{0%{box-shadow:0 0 0 0 #b79c5d77;transform:scale(.985)}50%{box-shadow:0 0 0 12px #b79c5d22;transform:scale(1.006)}100%{box-shadow:0 0 0 0 transparent;transform:scale(1)}}
.stamp-celebration{animation:stamp-arrives .8s ease-out}
@media(max-width:960px){.card-focus{grid-template-columns:1fr}.card-focus>.loyalty-card{width:100%;max-width:570px;margin:auto}}
@media(max-width:760px){
 .client-layout .sidebar{display:none}
 .client-layout .main{padding-bottom:112px}
 .client-layout .topbar .context{flex:1}.client-layout .topbar .saved{width:auto;margin-left:auto}
 .client-layout .topbar .saved .btn{padding:7px 9px;font-size:.8rem}
 .client-bottom-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;bottom:0;left:0;right:0;z-index:10;background:#fffdf8f5;border-top:1px solid #ddd5c5;backdrop-filter:blur(14px);padding:8px 8px max(10px,env(safe-area-inset-bottom));box-shadow:0 -5px 25px #29271f06}
 .bottom-link{background:transparent;border:0;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:55px;min-width:0;color:var(--muted);font-size:.72rem}
 .bottom-link.active{background:#f1e9d8;color:#70501f;font-weight:700}
 .bottom-link .icon{height:22px;width:22px}
 .client-layout .loyalty-count{font-size:3.4rem}
 body:has(.client-layout) .toast{bottom:100px}
 .client-hero{margin-bottom:28px}.client-hero .promo-banner{min-height:235px}
 .qr-button{min-height:54px}.loyalty-card{padding:24px}
 .public-header{padding:16px;flex-wrap:wrap}.public-header .brand-logo{width:40px;height:40px}
 .public-main{padding:26px 15px}.menu-viewer{padding:6px}
 .scanner-frame{aspect-ratio:1}
}
@media(prefers-reduced-motion:reduce){.stamp-celebration{animation:none}}
