:root{--touch-target:48px}html{touch-action:manipulation;-webkit-text-size-adjust:100%}body{overscroll-behavior-y:none}button,[role="button"],select,input{min-height:var(--touch-target)}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #6d5dfc;outline-offset:2px}@media(hover:none),(pointer:coarse){button:hover,.side-nav:hover{filter:none}.side-nav,.category-row button,.zone-tabs button,.top-actions button,.module-head button,.kds-card button,.settings-card button{min-height:52px}.floor-table{min-height:88px}.product-card{min-height:124px;padding:10px}.product-img{height:62px}.ticket-tools button,.send-btn,.pay-btn{min-height:56px}.row-tools button{width:48px!important;height:48px!important;min-width:48px!important;font-size:24px}.ticket-row{grid-template-columns:42px minmax(0,1fr) auto auto}.data-row button,.data-row select{min-height:48px}.category-row,.zone-tabs,.ticket-lines,.rt-card,.module-page{-webkit-overflow-scrolling:touch}}
.touch-fullscreen{white-space:nowrap}.touch-qty{border:0;border-radius:9px;background:#eef2ff;color:#3730a3;font-weight:900;min-width:48px;height:48px}.touch-overlay{display:none;position:fixed;inset:0;z-index:60000}.touch-overlay.open{display:block}.touch-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.72);display:grid;place-items:center;padding:16px}.touch-pad-card{width:min(430px,100%);max-height:96dvh;overflow:auto;background:#fff;border-radius:22px;padding:18px;box-shadow:0 30px 90px #0005}.touch-pad-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.touch-pad-head h3{margin:0;font-size:22px}.touch-pad-close{border:0;border-radius:12px;width:52px;height:52px;font-size:25px}.touch-pad-display{width:100%;height:64px;margin:14px 0;padding:8px 14px;text-align:right;font-size:30px;font-weight:900;border:2px solid #dbe3ec;border-radius:14px;background:#f8fafc}.touch-pad-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.touch-pad-grid button{border:0;border-radius:14px;min-height:64px;font-size:24px;font-weight:900;background:#eef2f7}.touch-pad-grid .accept{grid-column:2/4;background:#10b981;color:#fff}.touch-pad-grid .delete{color:#b42318}.touch-quick{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:10px 0}.touch-quick button{border:0;border-radius:11px;min-height:48px;font-weight:850;background:#eef2ff;color:#3730a3}.touch-cash{margin-top:12px;padding:14px;border-radius:14px;background:#f8fafc;border:1px solid #dbe3ec}.touch-cash label{display:grid;gap:6px;font-weight:850}.touch-cash input{width:100%;font-size:26px;font-weight:900;text-align:right;padding:10px;border:2px solid #cbd5e1;border-radius:12px;background:#fff}.touch-change{display:flex;justify-content:space-between;align-items:center;margin-top:10px;font-size:18px}.touch-change b{font-size:24px;color:#047857}@media(max-width:640px){.touch-backdrop{padding:0;align-items:end}.touch-pad-card{width:100%;border-radius:22px 22px 0 0;padding:max(14px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom))}.touch-quick{grid-template-columns:repeat(3,1fr)}}
.touch-cash-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.touch-cash-pad button{border:0;border-radius:12px;min-height:58px;background:#e8edf5;font-size:22px;font-weight:900}.touch-cash-pad button:last-child{color:#b42318}
.touch-field-keyboard{display:none;position:fixed;inset:0;z-index:59000;pointer-events:none}.touch-field-keyboard.open{display:block}.touch-field-backdrop{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(transparent 35%,rgba(15,23,42,.28));pointer-events:none}.touch-field-card{width:min(1100px,100%);max-height:58dvh;overflow:auto;background:#fff;border-radius:20px 20px 0 0;padding:12px max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));box-shadow:0 -18px 60px #0004;pointer-events:auto}.touch-field-card header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.touch-field-card header b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.touch-field-card header button{border:0;border-radius:10px;width:48px;min-width:48px;background:#eef2f7;font-size:22px}.touch-alpha-numbers,.touch-alpha-row{display:flex;justify-content:center;gap:6px;margin:6px 0}.touch-alpha-numbers button,.touch-alpha-row button,.touch-alpha-actions button,.touch-field-numeric button{border:0;border-radius:10px;min-width:50px;min-height:52px;background:#e8edf5;font-size:19px;font-weight:850}.touch-alpha-symbols{overflow-x:auto;justify-content:flex-start}.touch-alpha-actions{display:grid;grid-template-columns:1fr 3fr 1fr 1.5fr;gap:7px;margin-top:7px}.touch-alpha-actions .space{background:#f8fafc;border:1px solid #cbd5e1}.touch-alpha-actions .delete{color:#b42318}.touch-alpha-actions .accept,.touch-field-numeric .accept{background:#10b981;color:#fff}.touch-field-numeric{display:grid;grid-template-columns:repeat(3,minmax(70px,130px));justify-content:center;gap:8px}.touch-field-numeric button{min-height:58px;font-size:23px}.touch-field-numeric .accept{grid-column:2/4}body.touch-keyboard-open{padding-bottom:min(58dvh,440px)}@media(max-width:700px){.touch-field-card{max-height:62dvh}.touch-alpha-numbers button,.touch-alpha-row button{min-width:0;flex:1;min-height:48px;font-size:17px}.touch-alpha-row,.touch-alpha-numbers{gap:3px}.touch-alpha-actions{grid-template-columns:1fr 2fr 1fr}.touch-alpha-actions .accept{grid-column:1/-1}.touch-alpha-symbols button{min-width:44px;flex:0 0 44px}body.touch-keyboard-open{padding-bottom:62dvh}}
@media(min-width:768px) and (max-height:820px){.topbar{height:76px}.ticket-panel{top:88px;min-height:calc(100vh - 100px)}.floor-plan,.floor-tables{min-height:300px}.product-card{min-height:96px}.product-img{height:46px}}
/* Production desktop/touch fallback: never trap the TPV in a viewport-height shell. */
html,body.tpv-body{height:auto!important;min-height:100%!important;overflow-y:auto!important;overscroll-behavior-y:auto!important}
body.tpv-body #app,body.tpv-body .app-shell,body.tpv-body .main-area{height:auto!important;min-height:100vh!important;overflow:visible}
body.tpv-body .module-page,body.tpv-body .tpv-workspace{overflow:visible}
#runtimePay .rt-back{overflow-y:auto!important;align-items:flex-start!important;padding-top:24px!important;padding-bottom:24px!important}
#runtimePay .rt-card{max-height:none!important;overflow:visible!important;margin:auto}
@media (min-width:768px) and (pointer:coarse){
  body.tpv-body{overflow-y:auto!important}
  .sidebar{height:100vh;overflow-y:auto}
  .main-area{overflow:visible!important}
  .ticket-panel{max-height:none!important;overflow:visible!important}
}
