:root{
 --tr-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
 --tr-font-display:38px;--tr-font-page-title:38px;--tr-font-section-title:17px;--tr-font-card-title:15px;
 --tr-font-body:14px;--tr-font-secondary:12px;--tr-font-label:12px;--tr-font-input:14px;--tr-font-button:14px;
 --tr-font-navigation:14px;--tr-font-tab:13px;--tr-font-table:12px;--tr-font-price:15px;--tr-font-kpi:25px;
 --tr-font-badge:11px;--tr-font-caption:11px;--tr-font-tooltip:12px;--tr-font-modal:14px;
 --tr-ui-scale:1;--tr-page-font-scale:1;--tr-ui-control:44px;--tr-ui-gap:12px;--tr-ui-card-pad:16px;--tr-ui-page-pad:20px;
}
body:not(.customer-direct){font-family:var(--tr-font-family);font-size:calc(var(--tr-font-body) * var(--tr-page-font-scale));line-height:1.42}
body:not(.customer-direct) :is(button,input,select,textarea){font-family:var(--tr-font-family)}
body:not(.customer-direct) .page :is(h1,.tr-page-title,.production-title){font-size:calc(var(--tr-font-page-title) * var(--tr-page-font-scale));line-height:1.15;letter-spacing:-.035em}
body:not(.customer-direct) .page :is(h2,.tr-section-title){font-size:calc(var(--tr-font-section-title) * var(--tr-page-font-scale));line-height:1.32}
body:not(.customer-direct) .page :is(h3,h4,.card-title,.metric-label,.tr-card-title){font-size:calc(var(--tr-font-card-title) * var(--tr-page-font-scale));line-height:1.35}
body:not(.customer-direct) .page :is(p,li,.body,.tr-body){font-size:calc(var(--tr-font-body) * var(--tr-page-font-scale))}
body:not(.customer-direct) .page :is(small,.muted,.subtitle,.help,.tr-secondary){font-size:calc(var(--tr-font-secondary) * var(--tr-page-font-scale));line-height:1.42}
body:not(.customer-direct) .page label{font-size:calc(var(--tr-font-label) * var(--tr-page-font-scale))}
body:not(.customer-direct) .page :is(input,select,textarea){font-size:calc(var(--tr-font-input) * var(--tr-page-font-scale));min-height:calc(var(--tr-ui-control) * var(--tr-ui-scale))}
body:not(.customer-direct) .page button{font-size:calc(var(--tr-font-button) * var(--tr-page-font-scale));min-height:calc(var(--tr-ui-control) * var(--tr-ui-scale))}
body:not(.customer-direct) :is(.production-nav,.topmenu,.management-top-menu,.mainnav) button{font-size:calc(var(--tr-font-navigation) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is(.tabs,[role="tablist"],.tr-tabs) button{font-size:calc(var(--tr-font-tab) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is(table,.table){font-size:calc(var(--tr-font-table) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is(.price,.product-price,.total-price){font-size:calc(var(--tr-font-price) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is(.metric-value,.kpi-value,.stat-value){font-size:calc(var(--tr-font-kpi) * var(--tr-page-font-scale));line-height:1.05}
body:not(.customer-direct) :is(.badge,.pill,.status-badge){font-size:calc(var(--tr-font-badge) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is(.caption,figcaption){font-size:calc(var(--tr-font-caption) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is([role="tooltip"],.tooltip){font-size:calc(var(--tr-font-tooltip) * var(--tr-page-font-scale))}
body:not(.customer-direct) :is(dialog,.modal,.modalbody){font-size:calc(var(--tr-font-modal) * var(--tr-page-font-scale))}
body:not(.customer-direct) .page :is(.card,.panel,.advancedcard){padding:calc(var(--tr-ui-card-pad) * var(--tr-ui-scale))}
body:not(.customer-direct) .page :is(.grid,.cards,.suitegrid){gap:calc(var(--tr-ui-gap) * var(--tr-ui-scale))}
@media(max-width:820px){:root{--tr-ui-page-pad:14px}.page :is(h1,.tr-page-title){font-size:clamp(28px,calc(var(--tr-font-page-title) * var(--tr-page-font-scale)),40px)!important}}
@media(max-width:560px){:root{--tr-ui-page-pad:10px}.page :is(h1,.tr-page-title){font-size:clamp(26px,calc(var(--tr-font-page-title) * var(--tr-page-font-scale)),36px)!important}}
@media print{:root{--tr-ui-scale:1;--tr-page-font-scale:1}body{font-family:Arial,sans-serif!important;font-size:initial!important}}

/* I token vincono solo sulla tipografia; layout, visibilità e logica restano ai componenti. */
html#tr-management-layout body:not(.customer-direct) :is(.main>.page,#waiterApp,#bookingMobile,.pos-overlay,.ag-dialog) :is(h1,.tr-page-title,.production-title){font-size:calc(var(--tr-font-page-title) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) :is(.main>.page,#waiterApp,#bookingMobile,.pos-overlay,.ag-dialog) :is(h2,.tr-section-title){font-size:calc(var(--tr-font-section-title) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) :is(.main>.page,#waiterApp,#bookingMobile,.pos-overlay,.ag-dialog) :is(h3,h4,.card-title,.tr-card-title){font-size:calc(var(--tr-font-card-title) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) :is(.main>.page,#waiterApp,#bookingMobile,.pos-overlay,.ag-dialog) :is(input,select,textarea){font-size:calc(var(--tr-font-input) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) :is(.main>.page,#waiterApp,#bookingMobile,.pos-overlay,.ag-dialog) button{font-size:calc(var(--tr-font-button) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) :is(.main>.page,#waiterApp,#bookingMobile,.pos-overlay,.ag-dialog) table{font-size:calc(var(--tr-font-table) * var(--tr-page-font-scale))!important}

/* Ordini e Sessioni sono componenti legacy, ma la loro gerarchia tipografica ora
   deriva esclusivamente dagli stessi token dell'interfaccia. I breakpoint possono
   cambiare il layout, non la dimensione scelta dal locale. */
html#tr-management-layout body:not(.customer-direct) #ordini .session-kpi-label{font-size:calc(var(--tr-font-card-title) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini .session-kpi-value{font-size:calc(var(--tr-font-kpi) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini :is(.session-toolbar label,.datatable thead th){font-size:calc(var(--tr-font-label) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini :is(.session-toolbar input,.session-toolbar select){font-size:calc(var(--tr-font-input) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini :is(.session-summary b,.session-summary small,.session-section-count,.session-section-total,.orderempty){font-size:calc(var(--tr-font-body) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini .ordertype>header h2{font-size:calc(var(--tr-font-section-title) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini .datatable tbody td{font-size:calc(var(--tr-font-table) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini :is(.order-inserted,.session-cancelled-note){font-size:calc(var(--tr-font-caption) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini :is(.session-cancelled-badge,.order-paid-label){font-size:calc(var(--tr-font-badge) * var(--tr-page-font-scale))!important}
html#tr-management-layout body:not(.customer-direct) #ordini .order-col-actions button{font-size:calc(var(--tr-font-button) * var(--tr-page-font-scale))!important}

.tr-type-card{display:grid;gap:10px}.tr-type-card>button{justify-self:start}
.tr-type-dialog{width:min(1060px,calc(100vw - 28px));max-height:min(860px,calc(100dvh - 28px));padding:0;border:0;border-radius:20px;box-shadow:0 30px 90px #0b2b4d55;color:#173956;background:#f7fbff;overflow:hidden}
.tr-type-dialog::backdrop{background:#09223b88;backdrop-filter:blur(3px)}
.tr-type-dialog form{display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:inherit}
.tr-type-dialog header{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;background:linear-gradient(135deg,#eaf6ff,#fff);border-bottom:1px solid #d8e8f5}
.tr-type-dialog header h2{margin:0;font-size:22px}.tr-type-dialog header p{margin:3px 0 0;color:#597187}
.tr-type-dialog [data-close]{width:42px;border:0;border-radius:12px;background:#e5f0fa;color:#173956;font-size:22px}
.tr-type-body{overflow:auto;padding:18px 22px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:18px}
.tr-type-controls,.tr-type-preview{display:grid;align-content:start;gap:14px}
.tr-type-block{border:1px solid #d5e4ef;border-radius:16px;background:#fff;padding:15px;box-shadow:0 8px 22px #163b5a0c}
.tr-type-block h3{margin:0 0 12px}.tr-type-row{display:grid;grid-template-columns:minmax(145px,1fr) minmax(150px,1fr);align-items:center;gap:12px;margin:10px 0}.tr-type-row label{font-weight:750}
.tr-type-row :is(select,input[type="number"]){width:100%;box-sizing:border-box;border:1px solid #c8d9e6;border-radius:10px;padding:9px;background:#fbfdff}
.tr-type-scale{display:grid;grid-template-columns:1fr 64px;gap:8px}.tr-type-scale input[type="range"]{width:100%}
.tr-type-advanced{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px}.tr-type-advanced .tr-type-row{grid-template-columns:1fr 74px;margin:0}
.tr-type-preview{position:sticky;top:0}.tr-type-sample{--preview-family:var(--tr-font-family);font-family:var(--preview-family);border-radius:18px;padding:20px;background:linear-gradient(145deg,#fff,#edf7ff);border:1px solid #cfe1ef;box-shadow:0 16px 35px #143d6118}
.tr-type-sample h1{margin:0 0 12px;font-size:var(--preview-title,38px)}.tr-type-sample h2{font-size:var(--preview-section,17px)}.tr-type-sample p{font-size:var(--preview-body,14px)}.tr-type-sample small{display:block;font-size:var(--preview-secondary,12px);color:#668097}.tr-type-sample button,.tr-type-sample input{font-family:inherit;font-size:var(--preview-button,14px);min-height:44px;border-radius:11px}.tr-type-sample button{margin:14px 8px 14px 0;border:0;background:linear-gradient(#2d8df0,#0862c2);color:#fff;padding:0 18px;font-weight:800}.tr-type-sample input{width:100%;box-sizing:border-box;border:1px solid #c6d9e8;padding:0 12px}.tr-type-sample b{font-size:var(--preview-price,15px)}.tr-type-sample em{display:inline-block;margin-left:10px;border-radius:20px;background:#dff5ea;color:#08734c;padding:5px 9px;font-size:var(--preview-badge,11px);font-style:normal;font-weight:800}
.tr-type-warning{color:#9a5b00;background:#fff5d9;border-radius:10px;padding:9px;font-size:12px}.tr-type-dialog footer{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:14px 22px;background:#fff;border-top:1px solid #d8e4ed}.tr-type-dialog footer div{display:flex;gap:8px;flex-wrap:wrap}.tr-type-dialog footer button{min-height:44px;border:1px solid #c5d8e7;border-radius:11px;background:#fff;color:#173956;padding:0 15px;font-weight:750}.tr-type-dialog footer [data-save]{background:linear-gradient(#2d8df0,#0862c2);color:#fff;border-color:#0862c2}.tr-type-dialog footer [data-reset-all]{color:#b42737;border-color:#efb9c0;background:#fff7f8}.tr-type-status{min-height:18px;color:#316181}.tr-type-status.error{color:#b42737}
@media(max-width:800px){.tr-type-body{grid-template-columns:1fr}.tr-type-preview{position:static}.tr-type-dialog{width:calc(100vw - 18px);max-height:calc(100dvh - 18px)}.tr-type-advanced{grid-template-columns:1fr}}
