/* Frontend only: readable defaults and comfortable touch targets. */
html{font-size:max(18px,100%)}
[hidden]{display:none!important}
:root{--ink:#382b21;--ink-2:#514539;--muted:#65594e;--faint:#736659;--line:#e4d7c6;--line-2:#baa58b;--sun-600:#a44400;--sun-700:#8e3800;--gold-d:#805600;--ok:#216638;--danger:#ae2727;--info:#225e99;--nav-h:calc(5rem + env(safe-area-inset-bottom))}
body{font-size:1rem;line-height:1.75}
.app{overflow-x:visible}
button,a,input,select,textarea{touch-action:manipulation}
:focus-visible{outline:3px solid #175987;outline-offset:4px}
.skip-link{position:fixed;left:12px;top:-160px;z-index:1000;padding:12px 20px;background:#fff;color:#175987;border:3px solid #175987}
.skip-link:focus{top:12px}
.sec{margin-top:24px}
.sec-hd{gap:12px;flex-wrap:wrap;align-items:baseline}
.sec-hd h3,.sec-hd h2,.sec-hd h1{font-size:1.25rem;line-height:1.5}
.sec-hd .more,.sec-sub,.small,.field .hint,.li .s,.li .r .s,.mecard .sub,.quick span,.pcard .coin,.pcard .pr s,.cb-sub,.cb-mini .k,.cb-mini .d,.pt .n,.pt .d,.stat3 .k,.org3 .k,.step .txt span,.sitefoot .cr{font-size:.95rem;line-height:1.7;opacity:1}
.small{font-size:.95rem!important}
.card,.card-flat{padding:20px}
.btn,.btn-sm,.btn-lg,.banner .acts .btn,.dockbar .btn{min-height:52px;padding:12px 20px;font-size:1rem;line-height:1.5;white-space:normal;border-radius:14px;gap:8px}
.btn:active{transform:none}
.btn-primary,.pager .pg.active{background:#a74400;color:#fff}
.btn-soft,.btn-line,.btn-ghost{color:#8e3800}
.btn-line-share,.btn-line-share:hover,.btn-line-login{background:#087c3b;color:#fff}
.btn[disabled],.btn.disabled{opacity:1;background:#eee8e0;color:#65594e;box-shadow:none;cursor:not-allowed}
.btn-block{width:100%}
.field{margin-bottom:22px}
.field>label{font-size:1rem;margin-bottom:8px}
.inp,select.inp,textarea.inp,.searchbar input{font-size:1rem;min-height:54px;line-height:1.5;padding:13px 14px;border-color:#9d8b76}
select.inp{padding-right:38px}
.inp::placeholder,.searchbar input::placeholder{color:#736659;opacity:1}
.inp:focus{outline:3px solid #175987;outline-offset:2px}
.inp-group{flex-wrap:wrap}.inp-group .inp{min-width:160px}
.check,.radio-card{font-size:1rem;min-height:48px;gap:12px}
.check input,.radio-card input{width:24px;height:24px;flex-shrink:0;accent-color:#a74400}
.radio-card{padding:18px}
.searchbar form{border-radius:14px;padding:4px 12px}
.searchbar input{min-width:0;padding:10px 4px}
.searchbar button{min-width:48px;min-height:48px}
.support-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:4px 16px;max-width:var(--wrap);margin:auto;border-bottom:1px solid var(--line)}
.support-tools>a{display:inline-flex;align-items:center;min-height:44px;text-decoration:underline;text-underline-offset:4px;font-size:.9rem}
.support-tools .language-choice{margin-left:auto}
.topbar{display:block;position:relative;padding:12px 16px;background:#fff}
.topbar-in{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px}
.topbar .logo{min-width:0;flex:1}
.topbar .logo img.brandmark{max-width:100%;min-width:0;width:185px;height:auto;max-height:55px;object-fit:contain}
.topbar .spacer{display:none}
.icon-btn{min-width:52px;min-height:52px;width:auto;height:auto;flex-shrink:0}
.labeled-icon{display:flex;flex-direction:column;gap:1px;padding:3px 6px;font-size:.8rem;line-height:1.5}
.icon-btn .dot{top:-4px;right:0;font-size:12px;min-width:20px;height:20px}
.topbar .topbar-back{display:flex;align-items:center;font-size:1rem;width:auto;padding:8px;min-width:70px}
.page-heading{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;max-width:var(--wrap);margin:10px auto 0;padding-top:8px;border-top:1px solid var(--line)}
.page-heading h1{flex:1 1 180px;min-width:0;font-size:1.25rem;white-space:normal;overflow-wrap:anywhere;border:0;padding:0;line-height:1.5}
.topnav a{font-size:1rem;min-height:52px;padding:10px 14px}
.topnav a.on{background:#a74400;color:#fff}
.tabbar{height:var(--nav-h);padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:#fff;border-top:2px solid #d4bda1;gap:3px}
.tabbar a{font-size:.9rem;color:#514539;font-weight:700;border-radius:12px;gap:4px;line-height:1.4;text-align:center;padding:4px;min-width:0}
.tabbar a.on{color:#853500;background:#fff0da;box-shadow:inset 0 3px #a74400}
.tabbar svg{width:25px;height:25px}
.tabbar .nav-label{word-break:keep-all;overflow-wrap:normal}
.app-body{padding-bottom:calc(var(--nav-h) + 32px)}
.app-body.has-dock{padding-bottom:calc(11rem + env(safe-area-inset-bottom))}
.dockbar{flex-wrap:wrap;gap:12px;padding:14px 16px calc(14px + env(safe-area-inset-bottom))}
.dockbar .sum .k{font-size:.95rem}.dockbar .sum .v{font-size:1.25rem}
.badge,.rank-chip{font-size:.85rem;line-height:1.5;white-space:normal;padding:5px 10px}
.badge.warn{color:#795200}.badge.sun{color:#8e3800}
.li{padding:20px;gap:14px;min-height:76px;flex-wrap:wrap}
.li .main{min-width:min(12rem,100%);overflow-wrap:anywhere}
.li .t{font-size:1.1rem;white-space:normal;overflow:visible;line-height:1.6}
.li .ico{width:48px;height:48px;font-size:1.4rem}
.li .r{max-width:100%;overflow-wrap:anywhere}
.li .r b{font-size:1.1rem}
.kv{font-size:1rem;line-height:1.7;padding:12px 0;flex-wrap:wrap;gap:6px 16px;border-bottom:1px solid var(--line)}
.kv>*{min-width:0;max-width:100%;overflow-wrap:anywhere}.kv a{min-height:44px;display:inline-flex;align-items:center;text-decoration:underline}
.kv.total .v{font-size:1.25rem}
.kv .v{margin-left:auto;max-width:100%}
.alert,.flash{font-size:1rem;line-height:1.75}
.flash-wrap{position:relative;top:auto;left:auto;transform:none;max-width:var(--wrap);width:100%;margin:auto;padding:12px 16px;z-index:auto}
.flash{flex-wrap:wrap;animation:none}.flash>span:nth-child(2){flex:1;min-width:130px;overflow-wrap:anywhere}
.flash-close{margin-left:auto;min-height:44px;padding:8px 12px;border:1px solid currentColor;border-radius:10px;background:#fff;font:inherit;color:inherit;cursor:pointer}
.toast-wrap{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--nav-h) + 10px);z-index:200;width:calc(100% - 24px);max-width:560px;max-height:45vh;overflow:auto}
.empty h3{font-size:1.2rem}.empty p{font-size:1rem}
.pager .pg,.chip{min-width:48px;min-height:48px;height:auto;font-size:1rem;padding:9px 14px}
.chips{flex-wrap:wrap;overflow:visible;white-space:normal;gap:10px}
.row.between{flex-wrap:wrap;gap:12px}
.qty{flex-shrink:0}.qty button{width:48px;height:48px;font-size:1.3rem}.qty input{width:48px;font-size:1rem}
.mecard .row1{flex-wrap:wrap;gap:14px}.mecard .hi{font-size:1.35rem;line-height:1.5}.mecard .avatar{width:56px;height:56px}
.mecard .row1{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:start}
.mecard .row1>.avatar{grid-column:1;grid-row:1}
.mecard .row1>div:not(.avatar){grid-column:2;grid-row:1;min-width:0}
.mecard .row1>.btn{grid-column:1/-1;justify-self:start}
.mecard .hi,.mecard .sub{overflow-wrap:anywhere}
.member-summary{display:block}
.quick{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px}
.quick a{border:1px solid var(--line);padding:16px 8px;gap:10px}.quick span{font-weight:700}
.wallets,.points4{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.pt{padding:18px 12px!important;color:var(--ink)!important;border-color:var(--line-2)!important;background:#fffaf2!important}
.pt .v,.stat3 .v,.org3 .v{font-size:1.4rem;overflow-wrap:anywhere}
.pcard .bd{padding:16px}.pcard .nm{font-size:1.1rem;line-height:1.6;display:block;min-height:0;overflow:visible;-webkit-line-clamp:unset}
.pcard .pr b{font-size:1.25rem}.pcard .tag{font-size:.85rem}.hscroll .pcard{flex-basis:80%}
.grid2{grid-template-columns:repeat(2,minmax(0,1fr))}
.invite{background:#a74400}.invite h3{font-size:1.3rem}.invite p,.banner p{font-size:1rem;opacity:1}
.code-box{flex-wrap:wrap;overflow-wrap:anywhere}.code-box b{font-size:1.2rem}
.rich-text{font-size:1.05rem;line-height:1.9}.rich-text h1{font-size:1.8rem}.rich-text h2{font-size:1.5rem}.rich-text h3{font-size:1.3rem}
table.tbl,table.tbl th,.rich-text table,.tree,.step .txt b{font-size:1rem}
table.tbl th,table.tbl td{padding:14px}
.banner-controls{display:flex;gap:12px;justify-content:center;align-items:center;margin-top:12px;flex-wrap:wrap}
.common-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.common-action{display:flex;align-items:flex-start;gap:12px;min-height:112px;padding:20px;background:#fff;border:2px solid #dec9ae;border-radius:18px;box-shadow:var(--sh-1)}
.common-action:first-child{background:#fff0da;border-color:#ad4a0c}
.common-action>span{min-width:0;overflow-wrap:anywhere}.common-action .symbol{flex:none;font-size:1.5rem;line-height:1.4}.common-action strong{display:block;font-size:1.12rem;line-height:1.5}.common-action small{display:block;font-size:.9rem;line-height:1.6;color:var(--muted);margin-top:6px}
.member-welcome{margin-bottom:8px}.member-welcome h1{font-size:1.65rem}.member-welcome p{margin-top:8px}
.member-actions .common-action{flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:18px 10px;min-height:112px;background:#fff;border:1px solid #dec9ae}
.member-actions .common-action strong{font-size:1rem;line-height:1.5}
.profile-avatar{display:flex;align-items:flex-start;flex-wrap:wrap;gap:16px}.profile-avatar-field{flex:1 1 240px;min-width:0}
.wallet-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px;margin-top:14px}.wallet-options>.card{min-width:0;margin:0;overflow-wrap:anywhere}
.member-status{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.account-group{margin-top:24px}.account-group h3{font-size:1.15rem;margin-bottom:12px}
.recent-order{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:20px;border-bottom:1px solid var(--line)}
.recent-order:last-child{border-bottom:0}.recent-order .order-info{flex:1;min-width:160px}.recent-order .order-info p{margin:4px 0;overflow-wrap:anywhere}
.member-extra summary{cursor:pointer;font-size:1.1rem;font-weight:700;min-height:52px;padding:8px 0}.member-extra[open] summary{margin-bottom:12px}
.password-actions{margin-top:10px}.login-help{margin-top:16px}.login-help a{min-height:48px;display:inline-flex;align-items:center;text-decoration:underline}
.sec,.card,.list,.cols2>*,.grid2>*,.coinbox>*,.cb-side>*,.common-actions>*,.tbl-wrap{min-width:0;max-width:100%}
.row{flex-wrap:wrap}.row>*{min-width:0;max-width:100%}
.btn,.chip{max-width:100%;overflow-wrap:anywhere}.chip{white-space:normal}
.inp,select.inp,textarea.inp{min-width:0;max-width:100%}
.rich-text{overflow-wrap:anywhere}.rich-text img,.rich-text video,.rich-text iframe{max-width:100%}
.rich-text img{height:auto}.rich-text table{display:block;max-width:100%;overflow-x:auto}
.cols2{grid-template-columns:minmax(0,1fr)}
.sticky-sub{position:relative;top:auto}
@media(max-width:899px){.mecard .row1>.btn{width:100%}.li .main{flex-basis:calc(100% - 76px)}.li .r{margin-left:auto}.card,.card-flat{padding:16px}.topbar .logo img.brandmark{width:160px}.dockbar form.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.dockbar form.row .qty{grid-column:1/-1;justify-self:center}.dockbar form.row .btn{padding:12px 8px}.dockbar>.sum{flex-basis:100%}.dockbar>.btn{flex:1}.app-body.has-dock{padding-bottom:calc(12rem + env(safe-area-inset-bottom))}}
@media(max-width:599px){.grid2{grid-template-columns:1fr}.common-action{flex-direction:column;padding:16px}.sitefoot{display:none}.sec{padding:0 16px}.stat3,.org3{grid-template-columns:1fr;gap:12px}.stat3>div+div::before{display:none}.stat3>div{padding:10px;border-top:1px solid var(--line)}.cols2{grid-template-columns:1fr!important}}
@media(max-width:360px){.common-actions{grid-template-columns:1fr}.common-action{flex-direction:row}.tabbar a{font-size:.8rem}}
@media(min-width:900px){:root{--nav-h:0px}.topbar-in{padding:8px 0}.topnav{grid-row:2;grid-column:1/-1;width:100%;justify-content:center;margin:0;flex-wrap:wrap}.topbar .logo img.brandmark{width:230px}.common-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.quick{grid-template-columns:repeat(4,minmax(0,1fr))}.wallets,.points4{grid-template-columns:repeat(4,minmax(0,1fr))}.hscroll{grid-template-columns:repeat(4,minmax(0,1fr))}.sitefoot .in{font-size:.95rem}.sitefoot nav a{min-height:48px;display:flex;align-items:center}.narrow,body.page-login .sec,body.auth-page .sec{max-width:620px}.app-body{padding-bottom:70px}.cols2{grid-template-columns:repeat(2,minmax(0,1fr))}.mecard{grid-template-columns:repeat(2,minmax(0,1fr))}.coinbox{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.support-tools,.toast-wrap,.skip-link{display:none!important}}
@media(max-width:899px){.member-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.member-welcome h1{font-size:1.35rem}}

/* Content cards keep readable labels while displaying three columns on desktop. */
.catalog-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}
.catalog-grid>*,.catalog-grid>.card+.card{min-width:0;margin:0}
.catalog-grid .pcard,.event-card{display:flex;flex-direction:column;height:100%}
.catalog-grid .pcard .bd{display:flex;flex-direction:column;flex:1}
.catalog-grid .pcard .add{margin-top:auto;padding-top:12px}
.catalog-media,.catalog-grid .thumb{aspect-ratio:1 / 1;width:100%;height:auto!important;background:#fff;display:grid;place-items:center;overflow:hidden;border-radius:12px;margin-bottom:12px}
.catalog-media img,.catalog-grid .thumb img{width:100%;height:100%;object-fit:contain}
.catalog-media>span{font-size:3rem}
.event-card>a{flex:1}
.content-share{display:inline-flex;align-items:center;justify-content:center;gap:8px;align-self:flex-start;min-height:48px;padding:8px 14px;margin-top:14px;border:1px solid #087638;border-radius:12px;background:#087638;color:#fff;font-size:1rem;font-weight:700;text-decoration:none;max-width:100%;white-space:normal}
.content-share svg{width:20px;height:20px;flex:none}
.content-share:focus-visible{outline:3px solid #473727;outline-offset:3px}
.event-detail-cover{display:block;width:100%;max-height:650px;object-fit:contain;border-radius:12px;margin-bottom:12px}
.coupon-body{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
.coupon-value{padding-bottom:12px;border-bottom:1px dashed var(--line)}
@media(min-width:700px){.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.coupon-body{grid-template-columns:150px minmax(0,1fr)}.coupon-value{border-bottom:0;border-right:1px dashed var(--line);padding:0 16px 0 0}}
@media(min-width:1100px){.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.mobile-category{display:none}
@media(max-width:600px){.desktop-categories{display:none}.mobile-category{display:block;margin:12px 0}.sticky-sub{padding:0 16px}}
