body{background:#eef0f4}
.topbar{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:8px 14px;min-height:60px}
.tb-shop{line-height:1.25}.tb-shop b{font-size:17px;display:block}.tb-shop span{font-size:12px;color:var(--muted)}
.tb-right{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.conn{display:inline-flex;align-items:center;gap:6px;background:var(--pass-soft);color:var(--pass-ink);font-weight:600;font-size:13px;padding:6px 12px;border-radius:999px}
.conn i{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2)}
.nav-btn{appearance:none;border:0;background:#f1f3f6;border-radius:12px;min-height:42px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;cursor:pointer;color:var(--ink);position:relative;text-decoration:none}
.nav-btn:hover{background:#e6e9ef}
.nav-btn.on{background:var(--brand-soft);color:var(--brand);box-shadow:inset 0 0 0 1.5px #c8d5f5}
.nav-btn.voice{background:var(--brand);color:#fff}.nav-btn.voice.off{background:#f1f3f6;color:var(--muted)}
.nav-btn .cnt{background:var(--review);color:#3b2300;border-radius:999px;font-size:12px;padding:0 7px;min-width:20px;text-align:center}
.main{max-width:1240px;margin:0 auto;padding:16px 18px 40px}
.pg-title{display:flex;align-items:center;gap:10px;margin:2px 0 14px}.pg-title h1{font-size:22px;margin:0}.pg-title p{margin:0;color:var(--muted);font-size:13px}
/* dashboard */
.totals{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.tot{background:#fff;border-radius:14px;box-shadow:var(--shadow);padding:10px 14px}
.tot .k{font-size:12px;color:var(--muted);font-weight:600}.tot .v{font-size:22px;font-weight:800;line-height:1.3}.tot .s{font-size:12px;color:var(--muted)}
.tot.pass .v{color:var(--pass)}.tot.review .v{color:var(--review-deep)}.tot.fail .v{color:var(--fail)}
.dash{display:grid;grid-template-columns:1.45fr 1fr;gap:14px;min-height:560px}
.hero{border-radius:22px;color:#fff;padding:18px 22px;display:flex;flex-direction:column;position:relative;overflow:hidden;transition:background .3s}
.hero.pass{background:#17803d}.hero.review{background:#d98a05}.hero.fail{background:#b91c1c}.hero.idle{background:#334155}
.hero.flash{animation:flash 1s ease 2}@keyframes flash{50%{filter:brightness(1.25);transform:scale(1.01)}}
.hero .h-top{display:flex;justify-content:space-between;align-items:center}
.pill{background:rgba(255,255,255,.2);border-radius:999px;padding:3px 12px;font-size:13px;font-weight:700}
.hero .h-sent{font-weight:700;font-size:16px}
.hero .h-status{font-size:40px;font-weight:800;display:flex;align-items:center;gap:12px;margin-top:8px;line-height:1.2}
.hero .h-reason{font-size:17px;font-weight:600;opacity:.95;margin-top:4px}
.hero .h-amt-l{margin-top:auto;font-size:16px;font-weight:600;opacity:.9}
.hero .h-amt{font-size:60px;font-weight:800;line-height:1.1}.hero .h-amt small{font-size:26px;margin-left:6px}
.hero .tiles{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;margin-top:16px}
.hero .tile{background:rgba(255,255,255,.16);border-radius:16px;padding:10px 14px}
.hero .tile .k{font-size:13px;opacity:.9}.hero .tile .v{font-size:44px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.hero .tile.code .v{font-size:76px;letter-spacing:.04em}
.hero .h-disc{font-size:12px;opacity:.85;margin-top:10px;display:flex;gap:6px;align-items:center}
.hero .h-acts{display:flex;gap:8px;margin-top:10px}
.hero .h-acts .btn{background:#fff;color:#7c4a03}
.list-card{background:#fff;border-radius:22px;box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
.list-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);font-weight:700}
.list-head a{font-size:14px;text-decoration:none;font-weight:700;cursor:pointer}
.rows{overflow:auto;flex:1;max-height:520px}
.rw{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid #eef0f3;cursor:pointer}
.rw:hover{background:#f7f9fd}
.rw .t{font-weight:700;width:48px;color:var(--ink2)}.rw .a{font-weight:800;font-size:18px;min-width:88px}.rw .c{font-size:13px;color:var(--muted)}
.rw .chip{margin-left:auto}
.rw.new{animation:newrow 2.5s ease}@keyframes newrow{0%{background:#fff4c2}100%{background:#fff}}
.sim-bar{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin:10px 2px 0}
.sim-bar .dotlive{width:8px;height:8px;border-radius:50%;background:#22c55e;animation:pl 1.2s infinite}@keyframes pl{50%{opacity:.3}}
/* start overlay */
.start-bg{position:fixed;inset:0;background:rgba(15,23,42,.6);z-index:200;display:grid;place-items:center;padding:20px}
.start{background:#fff;border-radius:26px;padding:28px;max-width:460px;text-align:center}
.start .big{width:84px;height:84px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;margin:0 auto 10px;font-size:40px}
.start h2{margin:4px 0;font-size:26px}.start p{color:var(--ink2);margin:6px 0 18px}
/* review */
.rv{display:grid;grid-template-columns:320px 1fr;gap:14px}
.q-item{display:flex;gap:10px;align-items:center;padding:12px 14px;border-bottom:1px solid #eef0f3;cursor:pointer}
.q-item.on{background:var(--brand-soft)}.q-item:hover{background:#f7f9fd}
.q-code{font-size:24px;font-weight:800;width:62px;font-variant-numeric:tabular-nums}
.rv-detail{display:grid;grid-template-columns:260px 1fr;gap:18px}
.kv{display:grid;grid-template-columns:140px 1fr;gap:6px 12px;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600}
.rule-list{list-style:none;padding:0;margin:0;font-size:13px}
.rule-list li{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px dashed #eef0f3}
.rs{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;flex:none;color:#fff}
.rs.pass{background:var(--pass)}.rs.fail{background:var(--fail)}.rs.warn{background:var(--review)}.rs.skip{background:#cbd2dc}
.empty{padding:40px 20px;text-align:center;color:var(--muted)}
.empty .icon{font-size:44px;color:#b6bfcc}
/* history */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.filters .input{width:auto;min-height:40px}
.seg{display:inline-flex;background:#e6e9ef;border-radius:12px;padding:3px}
.seg button{border:0;background:none;padding:6px 12px;border-radius:9px;font-weight:700;cursor:pointer;font-size:14px;color:var(--ink2)}
.seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.sumline{font-size:13px;color:var(--muted);text-align:center;margin:4px 0 10px}
/* poster */
.poster-wrap{display:flex;justify-content:center;padding:6px 0 20px}
.poster{background:#fff;box-shadow:0 6px 30px rgba(0,0,0,.12);display:flex;flex-direction:column;text-align:center;overflow:hidden}
.poster.a5{width:420px;height:595px}.poster.a6{width:298px;height:420px;font-size:.72em}
.poster .ph{background:var(--brand);color:#fff;padding:22px 16px 18px}
.poster .ph .sn{font-size:1em;opacity:.9}.poster .ph .t1{font-size:2.1em;font-weight:800;line-height:1.2}.poster .ph .t2{font-size:1.2em;font-weight:700}
.poster .qrbox{margin:18px auto 8px;border:4px solid var(--brand);border-radius:10px;padding:8px;background:#fff}
.poster .qrbox svg{display:block}
.poster ol{text-align:left;margin:6px auto;padding-left:1.4em;font-size:1em;line-height:1.7}
.poster .ok{color:var(--pass);font-weight:700;margin-top:auto}
.poster .warnb{background:#fff1e6;color:#9a3412;font-weight:700;font-size:.85em;margin:10px 14px 14px;padding:8px;border-radius:8px}
@media print{
  body{background:#fff}.topbar,.no-print,.pg-title{display:none!important}.main{padding:0}
  .poster{box-shadow:none;margin:0 auto}.poster.a5{width:148mm;height:210mm;font-size:13pt}.poster.a6{width:105mm;height:148mm;font-size:9.5pt}
  .poster .ph,.poster .warnb{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
/* settings */
.set-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.set-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #eef0f3}
.set-row:last-child{border-bottom:0}
.acc{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #eef0f3}
.bank-dot{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}
input[type=range]{width:100%;accent-color:var(--brand)}
/* login */
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.auth-side{background:linear-gradient(160deg,#113566,#1b4a86);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:center}
.auth-side h2{font-size:34px;margin:10px 0}.auth-side li{margin:8px 0;font-size:17px}
.auth-main{display:grid;place-items:center;padding:30px}
.auth-card{width:100%;max-width:400px}
.logo{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:22px}
.logo .lg{width:40px;height:40px;border-radius:12px;background:#fff;color:var(--brand);display:grid;place-items:center;font-size:22px}
.auth-card .logo .lg{background:var(--brand);color:#fff}
.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;margin:16px 0}
.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}
.otp{display:flex;gap:8px;justify-content:space-between;margin:14px 0}
.otp input{width:52px;height:60px;text-align:center;font-size:26px;font-weight:800;border:1.5px solid var(--line);border-radius:12px}
.otp input:focus{border-color:var(--brand-2);outline:none;box-shadow:0 0 0 3px rgba(27,74,134,.12)}
/* onboarding */
.ob{max-width:760px;margin:0 auto}
.ob-steps{display:flex;gap:6px;margin:6px 0 16px}
.ob-steps div{flex:1;text-align:center;font-size:13px;font-weight:700;color:var(--muted)}
.ob-steps div i{display:block;height:6px;border-radius:9px;background:#dfe3ea;margin-bottom:6px}
.ob-steps div.on{color:var(--brand)}.ob-steps div.on i{background:var(--brand)}.ob-steps div.done i{background:var(--pass)}
.bank-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.bank-pick label{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:12px;padding:8px 10px;cursor:pointer;font-weight:600;font-size:14px}
.bank-pick input{display:none}.bank-pick input:checked+span{color:var(--brand)}
.bank-pick label:has(input:checked){border-color:var(--brand);background:var(--brand-soft)}
@media (max-width:900px){.dash,.rv,.set-grid,.auth{grid-template-columns:1fr}.totals{grid-template-columns:repeat(2,1fr)}.auth-side{display:none}.rv-detail{grid-template-columns:1fr}}
#heroWrap{display:flex}#heroWrap .hero{flex:1}
.sim-bar{padding-left:110px}

/* big confirm buttons (replace checkboxes) */
.confirm-exp{font-size:14px;color:var(--ink2);margin:12px 0 8px}
.confirm-btn{appearance:none;width:100%;min-height:58px;border-radius:14px;border:2.5px solid var(--brand);background:#fff;color:var(--brand);font-size:17px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;padding:8px 14px;margin-bottom:10px;transition:background .15s,transform .08s}
.confirm-btn .icon{font-size:22px}
.confirm-btn:hover{background:var(--brand-soft)}.confirm-btn:active{transform:scale(.985)}
.confirm-btn.pressed{background:var(--pass);border-color:var(--pass);color:#fff}

.shop-logo-lg{width:84px;height:84px;border-radius:22px;background:#f1f3f6;display:grid;place-items:center;font-size:44px;flex:none;overflow:hidden}
.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.logo-opt{width:40px;height:40px;border-radius:10px;border:1.5px solid var(--line);background:#fff;font-size:22px;cursor:pointer}
.logo-opt.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 2px var(--brand-2)}
.help.err{color:var(--fail);font-weight:600}.input.bad{border-color:var(--fail);background:#fff8f8}
.vh{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;left:-9999px}
@media (max-width:900px){.edit-grid{grid-template-columns:1fr}}

.h-row{display:flex;gap:14px;align-items:flex-start}.h-thumb{width:92px;flex:none;cursor:zoom-in;margin-top:6px}
.h-thumb .wm-slot{background:rgba(255,255,255,.2)}
.rw .wm-slot.thumb{margin-right:2px}

.bd-grid{display:grid;grid-template-columns:220px 1fr;gap:18px;align-items:center;margin-top:10px}
.bd-donut{display:grid;place-items:center}
.bd-h,.bd-row{display:grid;grid-template-columns:1.6fr 70px 150px 64px;gap:8px;align-items:center;font-size:14px}
.bd-h{font-size:12px;color:var(--muted);font-weight:700;padding:0 0 6px;border-bottom:1px solid var(--line)}
.bd-row{padding:6px 0 4px;border-bottom:1px dashed #eef0f3}
.bd-row .r,.bd-h .r{text-align:right}
.bd-name{display:flex;align-items:center;gap:8px;font-weight:700}
.bd-dot{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:10px;font-weight:800;flex:none}
.bd-bar{grid-column:1/-1;height:7px;border-radius:9px;background:#f0f2f5;overflow:hidden}.bd-bar i{display:block;height:100%;border-radius:9px}
.bd-sum{border-bottom:0;border-top:2px solid var(--line);font-weight:800}
@media (max-width:900px){.bd-grid{grid-template-columns:1fr}}
/* PromptPay poster page */
.pp-grid{display:grid;grid-template-columns:minmax(360px,1fr) auto;gap:18px;align-items:start}
.pp-types{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pp-types button{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:9px 8px;font-weight:700;font-size:14px;cursor:pointer;min-height:44px}
.pp-types button.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand)}
.help.okmsg{color:var(--pass);font-weight:600}
.pp-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.pp-canvas-wrap{position:relative;display:flex;justify-content:center}
.pp-canvas-wrap canvas{box-shadow:0 8px 30px rgba(15,23,42,.15);border-radius:6px;background:#fff}
.pp-canvas-wrap.gray canvas{filter:grayscale(1)}
.pp-invalid{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);background:#fff;border:2px solid var(--fail);color:var(--fail-ink);border-radius:14px;padding:12px 16px;max-width:340px;display:flex;flex-direction:column;gap:4px;text-align:center;box-shadow:var(--shadow)}
.pp-payload{margin-top:12px}.pp-payload summary{cursor:pointer;font-weight:700;font-size:14px;color:var(--brand)}
.pp-raw{word-break:break-all;background:#0f172a;color:#a5f3fc;border-radius:10px;padding:10px;font-size:12px;margin-top:8px}
@media print{
  body.pp-print-mode .main>*{display:none!important}
  .pp-grid{display:block}.pp-preview .no-print,.pp-form{display:none!important}
  .pp-canvas-wrap{display:block}.pp-canvas-wrap canvas{box-shadow:none!important;border-radius:0!important;filter:none!important;opacity:1!important;width:100%!important;height:auto!important}
  .pp-invalid{display:none!important}
}
@media (max-width:1100px){.pp-grid{grid-template-columns:1fr}}

/* ===== Header (all sizes): shop name + hamburger, then status pill + sound toggle ===== */
.topbar{display:block;padding:clamp(6px,1.6vw,10px) clamp(10px,3vw,18px) clamp(6px,1.4vw,9px);min-height:0;position:sticky;top:0}
.tb-row1{display:flex;align-items:center;gap:10px;min-width:0}
.tb-shop{min-width:0;flex:1}
.tb-name{display:block;font-size:clamp(16px,4.4vw,20px);font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-row2{display:flex;align-items:center;gap:8px;margin-top:4px;min-width:0;flex-wrap:nowrap}
.tb-sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.conn{flex:none;padding:4px 10px;font-size:12.5px}
.voice-tg{flex:none;appearance:none;border:0;border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:700;display:inline-flex;align-items:center;gap:5px;cursor:pointer;background:#eef0f4;color:var(--muted);min-height:30px}
.voice-tg.on{background:var(--brand);color:#fff}
.hamb{flex:none;position:relative;width:46px;height:44px;border-radius:12px;border:0;background:#f1f3f6;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}
.hamb span{display:block;width:22px;height:2.6px;border-radius:2px;background:var(--ink);transition:.2s}
.hamb.open span:nth-child(1){transform:translateY(7.6px) rotate(45deg)}.hamb.open span:nth-child(2){opacity:0}.hamb.open span:nth-child(3){transform:translateY(-7.6px) rotate(-45deg)}
.hamb:hover{background:#e6e9ef}
.hamb-cnt{position:absolute;top:-4px;right:-4px;background:var(--review);color:#3b2300;font-style:normal;font-size:11px;font-weight:800;border-radius:999px;min-width:19px;height:19px;display:grid;place-items:center;padding:0 5px}
.mmenu{position:absolute;right:clamp(8px,3vw,18px);top:calc(100% - 4px);width:min(320px,calc(100vw - 16px));background:#fff;border-radius:16px;box-shadow:0 18px 40px rgba(15,23,42,.22);padding:8px;z-index:60;display:flex;flex-direction:column}
.mmenu[hidden]{display:none}
.mmenu a,.mmenu button{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;color:var(--ink);text-decoration:none;font-weight:700;font-size:15px;border:0;background:none;cursor:pointer;text-align:left;min-height:46px}
.mmenu a .icon,.mmenu button .icon{font-size:19px;color:var(--brand)}
.mmenu a:hover,.mmenu button:hover{background:#f4f6fa}
.mmenu a.on{background:var(--brand-soft);color:var(--brand)}
.mmenu .cnt{margin-left:auto;background:var(--review);color:#3b2300;border-radius:999px;font-size:12px;padding:0 8px}
.mmenu button{border-top:1px solid var(--line);border-radius:0 0 10px 10px;margin-top:4px;color:var(--fail)}.mmenu button .icon{color:var(--fail)}
/* ===== History: period tabs with mini summary ===== */
.ptabs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 12px}
.ptabs button{appearance:none;border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:8px 10px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:0;min-width:0;box-shadow:var(--shadow)}
.ptabs .pt-l{font-weight:800;font-size:clamp(13px,3.6vw,15px);color:var(--ink2)}
.ptabs .pt-a{font-weight:800;font-size:clamp(16px,4.6vw,22px);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ptabs .pt-c{font-size:12.5px;color:var(--muted);font-weight:600}
.ptabs button.on{border-color:var(--brand);background:var(--brand);box-shadow:0 6px 16px rgba(30,58,138,.28)}
.ptabs button.on .pt-l,.ptabs button.on .pt-a,.ptabs button.on .pt-c{color:#fff}
.sum-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:12px;margin:0 0 12px}
.spark{width:100%;height:130px;display:block}
.top-h{display:flex;align-items:center;gap:8px;margin:8px 0 4px;font-size:14px}.top-n{width:24px;height:24px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-weight:800;font-size:12px}
.sec-h{font-size:clamp(17px,4.4vw,20px);margin:18px 0 10px;display:flex;align-items:center;gap:8px}
.bd{margin-bottom:6px}
/* ===== Fluid / responsive for the whole merchant app ===== */
.main{padding:clamp(10px,3vw,16px) clamp(10px,3vw,18px) 40px}
.pg-title{flex-wrap:wrap;gap:4px 10px}.pg-title h1{font-size:clamp(19px,5vw,22px)}
.totals{grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr))}
.tot .v{font-size:clamp(18px,5vw,22px)}
.hero{padding:clamp(12px,3.4vw,18px) clamp(14px,4vw,22px)}
.hero .h-status{font-size:clamp(24px,6.4vw,40px);gap:8px}
.hero .h-amt{font-size:clamp(36px,10vw,60px)}.hero .h-amt small{font-size:clamp(18px,4.6vw,26px)}
.hero .tile .v{font-size:clamp(28px,8vw,44px)}.hero .tile.code .v{font-size:clamp(44px,13vw,76px)}
.h-thumb{width:clamp(56px,16vw,92px)}
.dash{min-height:0}
.rows{overflow-x:auto}
.rw{gap:clamp(6px,2vw,12px);padding:clamp(7px,2vw,10px) clamp(10px,3vw,16px);min-width:0}
.rw .t{width:auto;flex:none}.rw .a{min-width:0;flex:none;white-space:nowrap;font-size:clamp(15px,4.2vw,18px)}
.rw .c{white-space:nowrap;flex:none}.rw .chip{min-width:0;max-width:46%;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}
.sim-bar{padding-left:0;flex-wrap:wrap;line-height:1.8}
.filters .input{min-width:0}
.card{min-width:0}
.kv dd{min-width:0;overflow-wrap:anywhere}
.mono{overflow-wrap:anywhere}
.otp{gap:clamp(4px,1.6vw,8px)}.otp input{width:clamp(38px,12vw,52px);height:clamp(48px,14vw,60px);font-size:clamp(20px,6vw,26px);min-width:0}
.poster.a5{width:min(420px,100%);height:auto;aspect-ratio:420/595}.poster.a6{width:min(298px,100%);height:auto;aspect-ratio:298/420}
.poster .qrbox svg{width:min(210px,50vw);height:auto}
.poster-wrap{overflow:hidden}
.filters span.mono{overflow-wrap:anywhere;min-width:0}
.pp-canvas-wrap canvas{max-width:100%;height:auto!important}
.pp-grid{grid-template-columns:minmax(0,1fr) auto}
.set-row{min-width:0}.set-row .grow{min-width:0}
.acc .grow{min-width:0;overflow-wrap:anywhere}
.tbl-wrap{overflow-x:auto;max-width:100%}
input[type=range]{min-width:0}
.modal{max-height:calc(100vh - 32px);overflow:auto;padding:clamp(16px,4vw,22px) clamp(16px,4.5vw,24px)}
.dm-grid{display:grid;grid-template-columns:190px 1fr;gap:14px;align-items:start}
@media (max-width:1100px){.pp-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:900px){.sum-grid{grid-template-columns:1fr}}
@media (max-width:640px){
  .ptabs{grid-template-columns:1fr 1fr}
  .tb-sub{display:none}
  .h-row{gap:10px}
  .hero .tiles{gap:8px}
  .rv-detail{grid-template-columns:1fr}.rv-detail>div:first-child{max-width:260px;margin:0 auto;width:100%}
  .kv{grid-template-columns:minmax(90px,34%) 1fr}
  .dm-grid{grid-template-columns:1fr}.dm-grid>div:first-child{max-width:220px;margin:0 auto;width:100%}
  .edit-grid{grid-template-columns:1fr}
  .bd-grid{grid-template-columns:1fr}
  .bd-h,.bd-row{grid-template-columns:minmax(0,1fr) 42px 92px 46px;gap:6px;font-size:13px}
  .bd-name{min-width:0;overflow:hidden}.bd-name>span:not(.bd-dot){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .bd-name .small{display:none}
  .hist-hide{display:none}
  .bank-pick{grid-template-columns:1fr 1fr}
  .auth-main{padding:18px}
  .set-row .switch{flex:none}
  .row.wrap-sm{flex-wrap:wrap}
  .pp-types{grid-template-columns:1fr 1fr}
  .filters .btn{flex:1}
}
@media (max-width:400px){.rw .wm-slot.thumb{display:none}.bd-h,.bd-row{grid-template-columns:minmax(0,1fr) 36px 84px 42px}}

.bd-t{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nowrap{white-space:nowrap}
@media (max-width:640px){.tbl td,.tbl th{padding:8px 8px}.hist-st .chip{font-size:11.5px;padding:2px 8px}}
.shop-view>.kv,.shop-view>dl{flex:1;min-width:0}
@media (max-width:640px){.shop-view{flex-direction:column;gap:10px!important}.shop-view .shop-logo-lg{width:64px;height:64px;font-size:34px}.shop-view .kv{grid-template-columns:100px minmax(0,1fr)!important;width:100%}}
.more-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 4px}
.ptabs .pt-l{display:flex;justify-content:space-between;align-items:baseline;gap:6px}.ptabs .pt-l small{font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap}
.ptabs button.on .pt-l small{color:#dbe4ff}
@media (max-width:640px){.totals{grid-template-columns:1fr 1fr;gap:8px}.tot{padding:10px 12px}.tot .l{font-size:12px}.tot .s{font-size:11.5px}}
.spark-w{position:relative}.spark{height:110px}
.spark-x{position:relative;height:18px;font-size:11.5px;color:var(--muted)}
.spark-x span{position:absolute;top:2px;transform:translateX(-50%);white-space:nowrap}.spark-x span.first{transform:none;left:0!important}.spark-x span.last{transform:translateX(-100%);left:auto!important;right:0}
.spark-x span.last{transform:none}
/* ===== PromptPay: 4-type selector + bank dropdown ===== */
.pp-typeset{border:0;margin:0;padding:0;min-width:0}.pp-typeset legend{padding:0}
.pp-types4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.pp-types4 button{appearance:none;position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:84px;padding:10px 12px;border:2px solid var(--line);border-radius:14px;background:#fff;cursor:pointer;text-align:left;min-width:0}
.pp-types4 .pt-ic{font-size:24px;line-height:1}
.pp-types4 .pt-tx{display:flex;flex-direction:column;min-width:0}.pp-types4 .pt-tx b{font-size:clamp(14px,3.8vw,15.5px);line-height:1.25}.pp-types4 .pt-tx small{font-size:12px;color:var(--muted);font-weight:600}
.pp-types4 .pt-ck{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:900;background:#eef0f4;color:transparent}
.pp-types4 button.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px rgba(27,74,134,.14)}
.pp-types4 button.on .pt-ck{background:var(--brand);color:#fff}
.pp-types4 button:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}
.req{color:var(--fail);font-size:12px;font-weight:700;margin-left:4px}
.bk-dd{position:relative}
.bk-dd-btn{display:flex;align-items:center;gap:10px;width:100%;min-height:54px;text-align:left;cursor:pointer;background:#fff;padding:8px 12px}
.bk-dd-btn.bad{border-color:var(--fail);box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.bk-dd-car{margin-left:auto;color:var(--muted);font-size:16px}
.bk-ph{color:var(--muted);font-weight:600}
.bk-nm{display:flex;flex-direction:column;min-width:0;line-height:1.25}.bk-nm b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bk-nm small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-dd-list{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 6px);background:#fff;border-radius:16px;box-shadow:0 18px 40px rgba(15,23,42,.22);padding:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;max-height:min(420px,60vh);overflow:auto}
.bk-dd-list[hidden]{display:none}
.bk-dd-list button{appearance:none;display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 10px;border:1.5px solid transparent;border-radius:12px;background:#f8fafc;cursor:pointer;text-align:left;min-width:0}
.bk-dd-list button:hover{background:#eef3ff}.bk-dd-list button.on{border-color:var(--brand);background:var(--brand-soft)}
.bk-dd-list button:focus-visible{outline:3px solid #93c5fd;outline-offset:1px}
.pp-bank-note{margin-top:8px;font-size:13px}
.okmsg{color:#15803d}
.bd-name .bk-logo{margin-right:2px}
.acc .bk-logo{margin-right:2px}
@media (max-width:1100px) and (min-width:641px){.pp-types4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.pp-types4{grid-template-columns:repeat(2,minmax(0,1fr))}.pp-types4 button{min-height:76px}.bk-dd-list{grid-template-columns:1fr 1fr;max-height:55vh}.bk-dd-list .bk-nm small{display:none}}
@media (max-width:380px){.bk-dd-list button{gap:6px;padding:6px 7px}.bk-dd-list .bk-logo{width:28px!important;height:28px!important}}
.sp-grid{grid-template-columns:auto minmax(0,1fr)}.sp-side{max-width:520px}.sp-url{overflow-wrap:anywhere;background:#f6f7f9;border-radius:10px;padding:8px 10px;margin:4px 0 10px}
@media (max-width:1100px){.sp-grid{grid-template-columns:minmax(0,1fr)}.sp-side{max-width:none}}
/* print: exactly one page per poster (A4/A5/A6 via @page from the size switch) */
@media print{
  html,body{margin:0!important;padding:0!important;height:auto!important;background:#fff!important}
  .demo-badge,.toast,.toasts,#toasts,.modal-bg{display:none!important}
  .main{padding:0!important;margin:0!important}
  .pp-grid,.pp-preview{margin:0!important;padding:0!important;gap:0!important}
  .pp-canvas-wrap{margin:0!important;padding:0!important;border:0!important;box-shadow:none!important;background:none!important;line-height:0;break-inside:avoid;page-break-after:avoid;overflow:hidden}
  .pp-canvas-wrap canvas{display:block!important;width:100vw!important;max-height:100vh;height:auto!important;margin:0 auto!important}
}
/* print v2: only the poster canvas, one full page, page size in mm (CSS has no A6 keyword) */
@media print{
  html,body{height:100vh!important;overflow:hidden!important}
  body *:not(.print-keep):not(.print-canvas){display:none!important}
  html body .print-keep.print-keep{display:block!important;position:static!important;margin:0!important;padding:0!important;border:0!important;min-height:0!important;height:auto!important;box-shadow:none!important;background:none!important}
  html body .pp-canvas-wrap canvas.print-canvas{display:block!important;visibility:visible!important;position:fixed!important;left:0!important;top:0!important;width:100vw!important;height:100vh!important;max-height:none!important;object-fit:contain;margin:0!important}
}

/* ===== billing UI ===== */
.tb-row1{position:relative}
.bell{position:relative;display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;color:#334155;margin-left:auto;margin-right:6px}
.bell svg{width:24px;height:24px}.bell:hover{background:#f1f5f9}
.bell-cnt{position:absolute;top:2px;right:2px;min-width:18px;height:18px;border-radius:9px;background:#dc2626;color:#fff;font-style:normal;font-size:11px;font-weight:800;display:grid;place-items:center;padding:0 4px}
.hamb{position:relative}.hamb-alert{position:absolute;bottom:-4px;right:-4px;width:18px;height:18px;border-radius:9px;font-style:normal;font-size:12px;font-weight:900;display:grid;place-items:center;border:2px solid #fff}
.hamb-alert.qv-n80,.mmenu .cnt.qv-n80{background:#eab308;color:#422006}.hamb-alert.qv-n90,.mmenu .cnt.qv-n90{background:#ea580c;color:#fff}.hamb-alert.qv-limit,.hamb-alert.qv-paused,.mmenu .cnt.qv-limit,.mmenu .cnt.qv-paused{background:#dc2626;color:#fff}
.tb-q{font-size:12px}
.cyc-switch{display:inline-flex;background:#eef2f7;border-radius:999px;padding:4px;gap:4px;margin-bottom:14px;flex-wrap:wrap}
.cyc-switch button{border:0;background:none;border-radius:999px;padding:8px 16px;font:inherit;font-weight:700;cursor:pointer;color:#475569;display:flex;gap:6px;align-items:center}
.cyc-switch button.on{background:#fff;color:#0f172a;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.up-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.up-card{border-top:4px solid var(--pc)}.up-card.cur{box-shadow:0 0 0 2px var(--pc),var(--shadow)}
.up-feat{padding-left:18px;margin:8px 0 12px;font-size:13.5px;line-height:1.7}
.pay-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
.pay-qr{text-align:center}.qr-box{display:inline-block;padding:10px;background:#fff;border:1px solid #e2e8f0;border-radius:12px}.qr-box svg{display:block;width:220px;height:220px}
.pay-amt{font-size:30px;font-weight:800;margin-top:6px}
.nlist{padding:0}.nitem{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-bottom:1px solid var(--line,#e5e7eb);background:#fff;border-left:4px solid transparent}
.nitem.qv-n80{border-left-color:#eab308}.nitem.qv-n90{border-left-color:#ea580c}.nitem.qv-limit,.nitem.qv-paused{border-left-color:#dc2626}.nitem.qv-ok{border-left-color:#16a34a}.nitem.qv-info{border-left-color:#3b82f6}
.nitem .n-dot{width:8px;height:8px;border-radius:4px;margin-top:8px;flex:none;background:transparent}.nitem.unread .n-dot{background:#dc2626}.nitem.unread b{font-weight:800}
.msg-prev{display:grid;grid-template-columns:1fr;gap:10px;margin-top:10px}.mp{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.mp.off{opacity:.45}
.mp-h{font-size:12.5px;font-weight:700;padding:6px 10px;background:#f8fafc;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.mp pre{margin:0;padding:10px;white-space:pre-wrap;word-break:break-word;font:13px/1.5 inherit;font-family:inherit}.mp-line{background:#e8f8ee}.mp-mail{background:#fff}
.demo-card{border:1.5px dashed #94a3b8}.demo-card .seg{flex-wrap:wrap}
@media (max-width:900px){.up-grid,.pay-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:480px){.qbanner{flex-wrap:wrap}.qbanner .qb-cta{margin-left:32px}.qbanners{padding:8px 10px 0}.bell{width:40px;height:40px;margin-right:2px}}
.mm-disc{font-size:11.5px;color:#64748b;padding:8px 14px 4px;border-top:1px solid #eef0f3;margin-top:4px}
.m-foot{font-size:12px;color:#64748b;text-align:center;padding:14px 12px 60px}
@media print{.m-foot{display:none!important}}
/* ---- shop brand color (owner-chosen; status colors unaffected) ---- */
.topbar{box-shadow:inset 0 4px 0 var(--shop,#113566)}
.tb-name{color:var(--brand)}
.btn-primary{background:var(--shop,var(--brand));color:var(--shop-ink,#fff);box-shadow:0 4px 12px rgba(15,23,42,.18)}
.btn-primary:hover{background:var(--shop-hover,var(--brand-2))}
.btn-primary svg{color:inherit}
.sc-dot{display:inline-block;width:14px;height:14px;border-radius:50%;vertical-align:-2px;box-shadow:0 0 0 2px #fff,0 0 0 3px var(--line)}
.sc-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:6px 0 10px}
.sc-sw{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:7px 9px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;color:var(--ink);min-width:0}
.sc-sw i{width:22px;height:22px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.sc-sw span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-sw.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink) inset}
.sc-custom{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sc-custom .lbl{font-weight:700;font-size:14px}
.sc-custom input[type=color]{width:44px;height:36px;border:1.5px solid var(--line);border-radius:10px;padding:2px;background:#fff;cursor:pointer}
#scHex.bad{border-color:var(--fail);outline-color:var(--fail)}
.sc-prev{margin-top:12px;border:1.5px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}
.sc-p-top{background:var(--shop);color:var(--shop-ink);padding:10px 14px;display:flex;justify-content:space-between;align-items:center;gap:8px}.sc-p-top span{font-size:12px;opacity:.85}
.sc-p-body{padding:10px 14px;display:flex;flex-direction:column;gap:8px}
.sc-p-tabs{display:flex;gap:6px}.sc-p-tabs span{padding:4px 12px;border-radius:999px;font-size:13px;font-weight:700;color:var(--muted)}.sc-p-tabs .on{background:var(--brand-soft);color:var(--brand)}
.sc-p-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sc-p-link{color:var(--brand);font-weight:700;font-size:13px;text-decoration:underline}
.sc-p-credit{font-size:11px;color:var(--muted)}
#scMeta{margin-top:8px}
@media(max-width:420px){.sc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* ---- referral ---- */
.ref-link{display:flex;gap:12px;align-items:center}.ref-link .grow{min-width:0;flex:1}.ref-link .input{width:100%;font-size:13px}
.ref-qr{width:84px;height:84px;padding:4px;border:1.5px solid var(--line);border-radius:10px;background:#fff;flex:none}.ref-qr svg{width:100%;height:100%}
.ref-cnt{margin:10px 0 6px;font-size:14px}
.ref-bal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;background:#fff6d6;border:1.5px solid #ffc83d;border-radius:12px;padding:10px 12px}
.ref-bal>div span{display:block;font-size:12px;color:#7a5a00;font-weight:700}.ref-bal b{font-size:20px;color:#113566}.ref-bal .tot b{color:#113566}
.ref-list .ref-row{display:flex;gap:10px;align-items:center;padding:10px 14px;border-top:1px solid var(--line);flex-wrap:wrap}
@media(max-width:480px){.ref-bal{grid-template-columns:1fr 1fr}.ref-bal .tot{grid-column:1/-1}}
/* home: quota banners moved to the bottom of the dashboard content (inside .main) */
.main>.qbanners{padding:14px 0 0}
/* ===== package redesign (แพ็กเกจของฉัน + อัปเกรดแพ็กเกจ) — promo-site v3 style: navy + gold, Kanit headings; accents follow shop colour (--shop) ===== */
.mp,.up-page{--pk-navy:#10265a;--pk-gold:#f5bd28;--pk-gold-t:#b07d05;--pk-head:'Kanit','Noto Sans Thai',sans-serif}
.mp{display:flex;flex-direction:column;gap:12px;border-radius:18px}
.mp-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mp-eb{display:inline-flex;align-items:center;gap:6px;font-family:var(--pk-head);font-weight:600;font-size:13px;color:var(--pk-gold-t);letter-spacing:.2px}.mp-eb svg{width:16px;height:16px}
.mp-link{font-size:13px;font-weight:600;color:var(--brand,var(--pk-navy));text-decoration:none}
.mp-plan{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.mp-name{margin:0;font-family:var(--pk-head);font-weight:700;font-size:24px;line-height:1.1;color:var(--pk-navy);display:flex;align-items:center;gap:8px}
.mp-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--pc,#64748b);flex:none}
.mp-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.mp-tag{font-size:11.5px;font-weight:600;line-height:1;padding:5px 8px;border-radius:999px;background:#eef1f6;color:#475569}.mp-tag.on{background:var(--brand-soft,#eef2f9);color:var(--brand,var(--pk-navy))}.mp-tag.ok{background:var(--pass-soft);color:var(--pass-ink)}
.mp-price{text-align:right;flex:none}
.mp-big{display:flex;align-items:baseline;justify-content:flex-end;gap:2px}.mp-big b{font-size:26px;font-weight:800;line-height:1;color:var(--pk-navy);letter-spacing:-.3px}.mp-big span{font-size:12.5px;color:var(--muted)}
.mp-vat{font-family:var(--pk-head);font-weight:600;font-size:11.5px;color:var(--pk-gold-t);margin-top:3px}
.mp-tot{font-size:11.5px;color:var(--muted);margin-top:1px}
.mp-use{background:#f6f8fb;border-radius:12px;padding:10px 12px}.mp-use .qbar{height:8px}.mp-use .qtxt{margin-top:6px;font-size:13px}
.mp-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.mp-f{display:flex;gap:8px;align-items:flex-start;min-width:0}
.mp-fi{flex:none;width:28px;height:28px;border-radius:9px;background:var(--brand-soft,#eef2f9);color:var(--brand,var(--pk-navy));display:grid;place-items:center}.mp-fi svg{width:15px;height:15px}
.mp-fb{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.mp-fk{font-size:11.5px;color:var(--muted)}.mp-fv{font-size:14px;color:var(--pk-navy)}.mp-fs{font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.mp-note{margin:0!important}
.mp-cta{margin-top:2px}
.mp-det{font-size:12.5px;color:var(--muted);border-top:1px solid var(--line);padding-top:8px}
.mp-det summary{cursor:pointer;font-weight:600;color:var(--ink2);list-style:none;display:flex;align-items:center;gap:6px}.mp-det summary::-webkit-details-marker{display:none}
.mp-det summary::after{content:'›';transform:rotate(90deg);transition:transform .15s;font-size:15px;line-height:1}.mp-det[open] summary::after{transform:rotate(270deg)}
.mp-det ul{margin:6px 0 0;padding-left:18px;line-height:1.6}
/* upgrade screen */
.up-page .pg-title h1{font-family:var(--pk-head);font-weight:700;color:var(--pk-navy)}
.up-page .cyc-switch{background:#fff;border:1px solid var(--line);box-shadow:0 2px 8px rgba(20,40,90,.05)}
.up-page .cyc-switch button{font-family:var(--pk-head);font-weight:600;color:#1b2e57}
.up-page .cyc-switch button.on{background:var(--shop,var(--pk-navy));color:var(--shop-ink,#fff);box-shadow:none}
.up-gold{font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;background:linear-gradient(180deg,#ffd84e,#f7c02c);color:#3a2a00}
.up-page .up-grid{gap:12px}
.up-page .up-card{border-top:0;border-radius:18px;padding:16px 16px 14px;display:flex;flex-direction:column;border:1px solid var(--line)}
.up-page .up-card.rec{border:2px solid var(--pk-gold);box-shadow:0 8px 24px rgba(240,180,30,.14)}
.up-page .up-card.cur{border:2px solid var(--shop,var(--pk-navy));box-shadow:0 0 0 3px var(--shop-ring,rgba(30,58,138,.15))}
.up-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.up-head h3{margin:0;font-family:var(--pk-head);font-weight:700;font-size:20px;line-height:1.1;color:var(--pk-navy);display:flex;align-items:center;gap:8px}
.up-badge{font-family:var(--pk-head);font-weight:700;font-size:11px;padding:3px 10px;border-radius:999px;background:linear-gradient(180deg,#ffd84e,#f5bd28);color:#2d2200;white-space:nowrap}
.up-badge.cur{background:var(--shop,var(--pk-navy));color:var(--shop-ink,#fff)}
.up-px{display:flex;align-items:baseline;gap:3px;margin-top:10px}.up-px b{font-size:32px;font-weight:800;line-height:1.05;color:var(--pk-navy);letter-spacing:-.3px}.up-px span{font-size:13px;color:var(--muted)}
.up-lab{font-family:var(--pk-head);font-weight:600;font-size:12px;color:var(--pk-gold-t);margin-top:2px}
.up-vat{font-size:11.5px;color:var(--muted);margin-top:2px}
.up-save{font-size:11.5px;color:#1a8a4a;font-weight:600;margin-top:4px;line-height:1.45}
.up-q{margin-top:10px;font-family:var(--pk-head);font-weight:700;font-size:15px;color:var(--pk-navy)}.up-q span{font-weight:600;font-size:12.5px;color:var(--muted)}
.up-page .up-feat{list-style:none;padding:0;margin:8px 0 14px;display:grid;gap:5px;font-size:13px;line-height:1.4;color:#2c3a58}
.up-feat li{display:flex;gap:7px;align-items:flex-start}
.up-ck{flex:none;width:16px;height:16px;border-radius:50%;background:var(--pass-soft);color:var(--pass);display:grid;place-items:center;margin-top:1px}.up-ck svg{width:10px;height:10px}
.up-page .up-card .btn-block,.up-free{margin-top:auto}
.up-free{text-align:center;font-size:13px;color:var(--muted);padding:9px 0;border-radius:12px;background:#f6f8fb}
.up-det{margin-top:14px;border-top:0;padding-top:0}
@media (max-width:420px){.mp-name{font-size:21px}.mp-big b{font-size:23px}}
.mp-f:last-child:nth-child(odd){grid-column:1/-1}
.up-px b.up-na{font-family:var(--pk-head);font-size:20px;font-weight:600;color:var(--muted)}

/* ซ่อนการ์ดเดโมจำลองแพ็กเกจ/การใช้งาน (2026-09-30) — ลบบรรทัดนี้เพื่อแสดงกลับ */
#demoCard,.demo-card{display:none!important}

/* ===== onboarding wizard (5 steps) ===== */
.ob-steps{list-style:none;padding:0}
.ob-steps li{flex:1;text-align:center;font-size:13px;font-weight:700;color:var(--muted)}
.ob-steps li i{display:block;height:6px;border-radius:9px;background:#dfe3ea;margin-bottom:6px}
.ob-steps li.on{color:var(--brand)}.ob-steps li.on i{background:var(--gold)}.ob-steps li.done i{background:var(--brand)}
.ob-h{margin:0 0 4px;font-size:22px}
.ob-nav .btn{min-height:48px}
.ob-poster{display:flex;gap:16px;align-items:flex-start;margin-top:14px;flex-wrap:wrap}
.ob-qr{width:150px;height:150px;background:#fff;border:3px solid var(--brand);border-radius:14px;padding:6px;flex:none}.ob-qr svg{width:100%;height:100%;display:block}
.ob-test{border-radius:14px;padding:14px 16px;background:var(--pass-soft);color:var(--pass-ink);display:grid;gap:6px}
.ob-test.review{background:var(--review-soft,#fff4d6);color:#4a2a00}.ob-test.fail{background:#fde8e8;color:#7f1d1d}
.ob-t-st{font-family:var(--head);font-weight:700;font-size:20px;display:flex;gap:8px;align-items:center}
.ob-t-row{display:flex;gap:18px;flex-wrap:wrap;font-size:16px}.ob-t-row b{font-family:var(--head);font-size:22px}
.ok-ic{width:80px;height:80px;border-radius:50%;background:var(--pass);color:#fff;display:grid;place-items:center;margin:0 auto 6px;font-size:40px}
@media (max-width:640px){.ob-steps li{font-size:0}.ob-steps li.on{font-size:12px}}

/* ===== forgot password ===== */
.auth-h{font-size:26px;margin:14px 0 4px}
.pw-wrap{position:relative}.pw-wrap .input{padding-right:48px}
.pw-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:none;color:var(--muted);cursor:pointer;border-radius:10px}


/* ===== kiosk entry card on dashboard ===== */
.kiosk-entry{display:flex;gap:12px;align-items:center;background:linear-gradient(90deg,var(--brand),#1b4a86);color:#fff;border-radius:16px;padding:12px 16px;margin-bottom:12px}
.kiosk-entry .muted{color:#d6def0!important}.kiosk-entry b{font-family:var(--head);font-size:17px;display:flex;gap:8px;align-items:center}
@media (max-width:640px){.kiosk-entry{flex-direction:column;align-items:stretch}.kiosk-entry .btn{width:100%}}

/* ===== counter / kiosk mode (full screen) ===== */
body.kiosk-on{background:#0b1f3d}
body.kiosk-on .m-foot{display:none}
.kiosk{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:#0b1f3d;color:#fff}
.k-top{display:flex;align-items:center;gap:14px;padding:14px 18px}
.k-shop{display:flex;flex-direction:column;min-width:0}.k-shop b{font-family:var(--head);font-size:clamp(18px,2.4vw,28px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.k-shop span{font-size:13px;color:#b9c6de}
.k-clock{margin-left:auto;font-family:var(--head);font-size:clamp(22px,3vw,36px);font-weight:600;color:var(--gold)}
.k-btns{display:flex;gap:8px}
.k-btn{white-space:nowrap;appearance:none;border:2px solid rgba(255,255,255,.28);background:rgba(255,255,255,.06);color:#fff;border-radius:12px;min-height:48px;padding:0 14px;font:inherit;font-weight:700;font-size:15px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.k-btn.on{border-color:var(--gold);color:var(--gold)}.k-btn:hover{background:rgba(255,255,255,.14)}.k-exit{border-color:rgba(255,255,255,.5)}
.k-main{flex:1;display:flex;padding:8px 18px}
.k-card{flex:1;border-radius:28px;padding:clamp(18px,3vw,40px);display:flex;flex-direction:column;justify-content:center;gap:clamp(8px,1.4vw,18px);position:relative;overflow:hidden;background:#15325f}
.k-card.pass{background:var(--pass)}.k-card.review{background:#f2a516;color:#2a1800}.k-card.fail{background:#b91c1c}
.k-card.flash{animation:kflash .9s ease-out}@keyframes kflash{0%{transform:scale(.97);filter:brightness(1.35)}100%{transform:none;filter:none}}
.kc-status{font-size:clamp(28px,5vw,64px);display:flex;align-items:center;gap:14px;line-height:1.1}.kc-status .icon{width:1em;height:1em}
.kc-grid{display:grid;grid-template-columns:1fr auto;gap:clamp(12px,3vw,40px);align-items:end}
.kc-l{font-size:clamp(14px,1.6vw,20px);opacity:.85;font-weight:700}
.kc-amt{font-size:clamp(56px,12vw,180px);line-height:1;letter-spacing:-1px}.kc-amt small{font-size:.28em;font-weight:600}
.kc-codebox{background:rgba(255,255,255,.16);border-radius:22px;padding:clamp(10px,1.6vw,20px) clamp(16px,2.4vw,32px);text-align:center}
.k-card.review .kc-codebox{background:rgba(0,0,0,.1)}
.kc-code{font-size:clamp(56px,10vw,150px);line-height:1;letter-spacing:.08em}
.kc-meta{font-size:clamp(15px,1.8vw,22px);opacity:.9}
.kc-note{display:inline-flex;gap:8px;align-items:center;align-self:flex-start;background:rgba(0,0,0,.18);border-radius:999px;padding:8px 16px;font-size:clamp(15px,1.8vw,22px)}
.kc-act{align-self:flex-start;background:#2a1800;color:#fff;min-height:56px;font-size:18px}
.kc-bar{position:absolute;left:0;right:0;bottom:0;height:6px;background:rgba(0,0,0,.15)}.kc-bar i{display:block;height:100%;background:rgba(255,255,255,.7);animation:kbar linear forwards;transform-origin:left}
@keyframes kbar{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.k-card.idle{align-items:center;text-align:center;background:#15325f;border:3px dashed rgba(255,200,61,.5)}
.k-idle-ic{font-size:clamp(60px,9vw,120px);color:var(--gold)}.k-idle-ic .icon{width:1em;height:1em}
.k-idle-p{font-size:clamp(16px,2vw,24px);color:#d6def0;margin:0;max-width:30em}
.k-last{margin-top:10px;font-size:clamp(14px,1.6vw,20px);color:#b9c6de}.k-last b{color:#fff;font-family:var(--head)}
.k-foot{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;padding:12px 18px 16px}
.k-recent{display:flex;gap:8px;flex-wrap:wrap}
.k-chip{border-radius:999px;padding:6px 12px;font-size:15px;background:rgba(255,255,255,.1)}.k-chip b{font-family:var(--head);margin-right:4px}
.k-chip.pass{box-shadow:inset 3px 0 0 #22c55e}.k-chip.review{box-shadow:inset 3px 0 0 #f2a516}.k-chip.fail{box-shadow:inset 3px 0 0 #ef4444}
.k-pend{margin-left:auto;font-size:16px;font-weight:700}.k-pend a{color:var(--gold)}.k-pend .icon{vertical-align:-3px}
.k-disc{width:100%;font-size:13px;color:#9fb0cf}
@media (max-width:700px){.kc-grid{grid-template-columns:1fr}.k-top{flex-wrap:wrap}.k-clock{margin-left:0}.k-btns{width:100%}.k-btn{flex:1;justify-content:center}}

/* ===== embed (promo site iframes): hide chrome that isn't part of the product screen ===== */
html.embed .sim-bar,html.embed .qbanners,html.embed .m-foot,html.embed .kiosk-entry,html.embed .start-bg{display:none!important}
html.embed.emb-poster .topbar,html.embed.emb-poster .no-print,html.embed.emb-poster .pg-title{display:none!important}
html.embed.emb-poster body{background:#fff}html.embed.emb-poster .main{padding:0}html.embed.emb-poster .poster{box-shadow:none;margin:0 auto}
