/* Maqaayad POS — layout: login → app shell (side rail on tablet/desktop, bottom bar on phone).
   Colors are tokens so each user can pick light, dark or system theme. */
:root{
  --bg:#f3f2ee; --surface:#ffffff; --sunk:#e9e7e0; --line:#dcd9cf;
  --fg:#1c2421; --muted:#5f6b66;
  --accent:#0f5c4a; --accent-fg:#ffffff; --accent-soft:#dcebe5;
  --spice:#d98a1c; --spice-fg:#1c1406; --spice-soft:#f7e6c8;
  --wa:#1a8f4c; --wa-fg:#ffffff;
  --ok:#2f7d4f; --ok-soft:#dcefe2; --warn:#a85f00; --warn-soft:#fbecd3; --bad:#b3362b; --bad-soft:#f6dcd8;
  --shadow:0 8px 28px rgba(16,30,26,.18);
  --font-display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;
  --font-body:"Figtree",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-num:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --fs:15px; --pad:12px; --tile:168px; --rail:212px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#121816; --surface:#1a2220; --sunk:#0e1312; --line:#2c3633; --fg:#e8ece9; --muted:#9aa7a2;
  --accent:#4fb898; --accent-fg:#06221b; --accent-soft:#183a31; --spice:#f0a945; --spice-soft:#3a2c14; --wa:#3cc274; --wa-fg:#04210f;
  --ok:#6fcf93; --ok-soft:#173326; --warn:#f0b04d; --warn-soft:#3a2c12; --bad:#f07a6e; --bad-soft:#3d1c19; --shadow:0 8px 28px rgba(0,0,0,.5); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#121816; --surface:#1a2220; --sunk:#0e1312; --line:#2c3633; --fg:#e8ece9; --muted:#9aa7a2;
  --accent:#4fb898; --accent-fg:#06221b; --accent-soft:#183a31; --spice:#f0a945; --spice-soft:#3a2c14; --wa:#3cc274; --wa-fg:#04210f;
  --ok:#6fcf93; --ok-soft:#173326; --warn:#f0b04d; --warn-soft:#3a2c12; --bad:#f07a6e; --bad-soft:#3d1c19; --shadow:0 8px 28px rgba(0,0,0,.5); color-scheme:dark}
:root[data-size="large"]{--fs:17px} :root[data-size="xlarge"]{--fs:19px}
:root[data-density="compact"]{--pad:8px}
:root[data-tile="small"]{--tile:132px} :root[data-tile="large"]{--tile:210px}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--fs);line-height:1.45;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent)}
img{max-width:100%}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--spice);outline-offset:2px}
h1,h2,h3,h4{font-family:var(--font-display);margin:0;text-wrap:balance;line-height:1.15}
.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}
.muted{color:var(--muted)} .small{font-size:.86em} .b{font-weight:700}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap} .spread{justify-content:space-between} .grow{flex:1;min-width:0}
.stack{display:flex;flex-direction:column;gap:10px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:10px}

/* ---------- Buttons & fields ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:11px;padding:10px 16px;font-weight:700;background:var(--accent);color:var(--accent-fg);text-decoration:none;min-height:42px;white-space:nowrap}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--fg);border:1px solid var(--line)}
.btn.soft{background:var(--accent-soft);color:var(--accent)}
.btn.small{font-size:.87em;padding:6px 12px;min-height:34px;border-radius:9px}
.btn.big{font-size:1.07em;padding:14px 18px;min-height:52px}
.btn.danger{background:var(--bad);color:#fff} .btn.warn{background:var(--spice);color:var(--spice-fg)} .btn.wa{background:var(--wa);color:var(--wa-fg)}
.btn.block{width:100%}
.btn svg{width:18px;height:18px;flex:none}
.icon-btn{border:0;background:transparent;width:38px;height:38px;border-radius:10px;display:inline-grid;place-items:center}
.icon-btn:hover{background:var(--sunk)}
.linkbtn{border:0;background:none;color:var(--muted);text-decoration:underline;padding:2px;font-size:.87em}
.field{display:flex;flex-direction:column;gap:4px;font-size:.8em;font-weight:600;color:var(--muted);min-width:0}
.field input,.field select,.field textarea,.input{border:1px solid var(--line);background:var(--bg);border-radius:9px;padding:9px 11px;font-size:var(--fs);font-weight:500;color:var(--fg);min-width:0;width:100%}
.field textarea{min-height:70px;resize:vertical}
.check{display:flex;align-items:center;gap:8px;font-weight:500;font-size:.95em;color:var(--fg)}
.check input{width:18px;height:18px;accent-color:var(--accent)}
.seg{display:flex;background:var(--sunk);border-radius:10px;padding:3px;gap:3px}
.seg button{flex:1;border:0;background:transparent;border-radius:8px;padding:7px 8px;font-weight:600;font-size:.88em;color:var(--muted);min-height:34px}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--fg);box-shadow:0 1px 2px rgba(0,0,0,.14)}
.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:7px 14px;font-weight:600;white-space:nowrap;font-size:.9em}
.chip[aria-pressed="true"]{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.pill{display:inline-block;font-size:.72em;font-weight:700;border-radius:99px;padding:2px 9px;white-space:nowrap;background:var(--sunk);color:var(--muted)}
.pill.ok{background:var(--ok-soft);color:var(--ok)} .pill.warn{background:var(--warn-soft);color:var(--warn)} .pill.bad{background:var(--bad-soft);color:var(--bad)} .pill.acc{background:var(--accent-soft);color:var(--accent)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:calc(var(--pad) + 2px)}
.panel-title{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.panel-title h3{font-size:1.05em}
.empty{color:var(--muted);text-align:center;padding:28px 10px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.kpi .k{font-size:.72em;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.kpi .v{font-family:var(--font-num);font-size:1.5em;font-weight:600}
.kpi .s{font-size:.8em;color:var(--muted)}
.kpi.good .v{color:var(--ok)} .kpi.bad .v{color:var(--bad)}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
table.t{width:100%;border-collapse:collapse;font-size:.93em}
table.t th{text-align:left;font-size:.75em;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding:9px 12px;border-bottom:1px solid var(--line);background:var(--sunk);white-space:nowrap;cursor:default}
table.t th[data-sort]{cursor:pointer} table.t th[data-sort]:hover{color:var(--fg)}
table.t td{padding:calc(var(--pad) - 2px) 12px;border-bottom:1px solid var(--line);vertical-align:middle}
table.t tr:last-child td{border-bottom:0}
table.t tr.click{cursor:pointer} table.t tr.click:hover td{background:var(--sunk)}
.r{text-align:right}
.bars .bar{display:grid;grid-template-columns:minmax(0,1.2fr) 2fr auto;gap:10px;align-items:center;padding:4px 0;font-size:.92em}
.bars .track{height:10px;background:var(--sunk);border-radius:99px;overflow:hidden}
.bars .track i{display:block;height:100%;background:var(--spice);border-radius:99px}
.bars .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cols{display:flex;align-items:flex-end;gap:4px;height:130px;border-bottom:1px solid var(--line)}
.cols div{flex:1;background:var(--accent);border-radius:4px 4px 0 0;min-height:2px}
.cols div.peak{background:var(--spice)}
.collabels{display:flex;gap:4px;font-size:.7em;color:var(--muted);margin-top:4px}
.collabels span{flex:1;text-align:center;overflow:hidden}

/* ---------- Login ---------- */
.login{min-height:100%;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-left,0px));background:radial-gradient(circle at 20% 10%,var(--accent-soft),transparent 50%),var(--bg)}
.login-card{width:100%;max-width:440px;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:var(--shadow)}
.login-brand{display:flex;gap:12px;align-items:center;margin-bottom:18px}
.login-brand .logo{width:52px;height:52px;border-radius:14px;flex:none}
.login-brand h1{font-size:1.6em;font-weight:800}
.pin-users{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;max-height:300px;overflow:auto}
.pin-user{border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:10px;text-align:left;display:flex;flex-direction:column;gap:2px}
.pin-user b{font-size:.95em;line-height:1.2} .pin-user span{font-size:.75em;color:var(--muted)}
.avatar{width:34px;height:34px;border-radius:99px;display:grid;place-items:center;font-weight:800;background:var(--accent-soft);color:var(--accent);font-size:.85em;flex:none}
.pin-dots{display:flex;justify-content:center;gap:12px;margin:14px 0}
.pin-dots i{width:14px;height:14px;border-radius:99px;border:2px solid var(--muted)}
.pin-dots i.on{background:var(--accent);border-color:var(--accent)}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.keypad button{border:1px solid var(--line);background:var(--bg);border-radius:12px;font-size:1.4em;font-family:var(--font-num);font-weight:600;height:58px}
.keypad button:active{background:var(--sunk)}
.err{color:var(--bad);font-weight:600;font-size:.9em;min-height:1.2em}

/* ---------- Shell ---------- */
.app{display:grid;grid-template-columns:var(--rail) minmax(0,1fr);min-height:100%}
.rail{background:var(--accent);color:var(--accent-fg);padding:16px 10px;display:flex;flex-direction:column;gap:3px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{font-family:var(--font-display);font-weight:800;font-size:1.3em;padding:0 10px 10px;line-height:1.1;overflow-wrap:anywhere}
.brand small{display:block;font-family:var(--font-body);font-weight:500;font-size:.6em;opacity:.75;margin-top:3px}
.nav{display:flex;align-items:center;gap:10px;border:0;background:transparent;color:inherit;padding:9px 12px;border-radius:10px;text-align:left;font-weight:600;opacity:.82;position:relative;font-size:.95em}
.nav svg{width:20px;height:20px;flex:none}
.nav[aria-current="page"]{background:rgba(255,255,255,.16);opacity:1}
.nav .badge{margin-left:auto;background:var(--spice);color:var(--spice-fg);font-size:.7em;font-weight:800;border-radius:99px;padding:1px 7px}
.rail-foot{margin-top:auto;padding:10px;font-size:.8em;display:flex;flex-direction:column;gap:8px}
.me{display:flex;align-items:center;gap:8px}
.me .avatar{background:rgba(255,255,255,.2);color:inherit}
.rail .btn.ghost{color:inherit;border-color:rgba(255,255,255,.35)}
main{min-width:0;padding-block:18px 32px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.view{max-width:1400px;margin:0 auto}
.vhead{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px;margin-bottom:14px}
.vhead h1{font-size:1.75em;font-weight:800;letter-spacing:-.02em}
.vhead p{margin:3px 0 0;color:var(--muted);max-width:70ch}
.statusbar{display:flex;gap:8px;flex-wrap:wrap;margin:0 auto 12px;max-width:1400px}
.statusbar>div{border-radius:10px;padding:7px 12px;font-size:.85em;font-weight:600;display:flex;gap:8px;align-items:center}
.statusbar .off{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn)}
.statusbar .q{background:var(--spice-soft);color:var(--warn)}
.tabbar{display:none}

/* ---------- POS ---------- */
.pos{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:16px;align-items:start}
:root[data-ticket="left"] .pos{grid-template-columns:370px minmax(0,1fr)} :root[data-ticket="left"] .pos .ticket{order:-1}
.pos-tools{display:flex;gap:8px;margin-bottom:10px;align-items:center}
.pos-tools .input{max-width:260px}
.menu{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--tile),1fr));gap:10px;margin-top:10px}
.tile{position:relative;display:flex;flex-direction:column;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:0;overflow:hidden;transition:transform .08s,border-color .15s}
.tile:hover{border-color:var(--accent)} .tile:active{transform:scale(.98)}
.tile .pic{display:block;width:100%;aspect-ratio:4/3;background:var(--sunk);object-fit:cover}
.tile .pic svg{display:block;width:100%;height:100%}
.tile .body{display:flex;flex-direction:column;gap:2px;padding:8px 10px 10px;flex:1}
.tile .nm{font-weight:700;line-height:1.2}
.tile .so{font-size:.78em;color:var(--muted)}
.tile .ft{margin-top:auto;padding-top:5px;display:flex;justify-content:space-between;align-items:center;gap:6px}
.tile .pr{font-family:var(--font-num);font-weight:600}
.tile[disabled]{opacity:.5;cursor:not-allowed} .tile[disabled] .pic{filter:grayscale(1)}
.tile .stripe{position:absolute;inset:0 auto 0 0;width:5px}
.qbubble{position:absolute;top:7px;right:7px;background:var(--spice);color:var(--spice-fg);font-weight:800;font-size:.85em;min-width:28px;height:28px;border-radius:99px;display:grid;place-items:center;padding:0 7px;box-shadow:0 2px 6px rgba(0,0,0,.25);z-index:1}
.menu.compact .tile .pic{display:none} .menu.compact .tile{min-height:92px;padding-left:4px}
.menu.list{grid-template-columns:1fr;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
.menu.list .tile{flex-direction:row;align-items:center;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:4px 6px 4px 10px}
.menu.list .tile .pic{width:48px;height:48px;aspect-ratio:auto;border-radius:8px;flex:none}
.menu.list .tile .body{flex-direction:row;align-items:center;gap:10px;padding:6px 8px}
.menu.list .tile .body>div{flex:1;min-width:0}
.menu.list .tile .ft{margin:0;padding:0}
.menu.list .qbubble{position:static;margin-right:6px}
.ticket{background:var(--surface);border:1px solid var(--line);border-radius:16px;position:sticky;top:12px;display:flex;flex-direction:column;max-height:calc(100vh - 24px)}
.t-head{padding:12px 14px;border-bottom:1px dashed var(--line);display:flex;flex-direction:column;gap:8px}
.t-lines{overflow:auto;padding:2px 14px;flex:1;min-height:70px}
.line{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.line:last-child{border-bottom:0}
.line .ln{font-weight:600;line-height:1.2;font-size:.95em}
.line .lo{font-size:.78em;color:var(--muted)}
.line button.edit{border:0;background:none;color:var(--accent);font-size:.78em;padding:0;text-decoration:underline}
.qty{display:flex;align-items:center;background:var(--sunk);border-radius:9px}
.qty button{border:0;background:transparent;width:32px;height:32px;border-radius:8px;font-weight:700;font-size:1.1em}
.qty span{min-width:22px;text-align:center}
.t-foot{padding:10px 14px 14px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:7px}
.sum{display:flex;justify-content:space-between}
.sum.total{font-size:1.3em;font-weight:700;font-family:var(--font-display)}
.sum.total .num{font-family:var(--font-num)}
.banner{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--spice-soft);border:1px solid var(--spice);border-radius:10px;padding:8px 10px;font-size:.85em}
.pickbtn{display:flex;justify-content:space-between;align-items:center;gap:8px;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:8px 11px;font-weight:600;text-align:left;min-height:42px}
.pickbtn small{color:var(--muted);font-weight:500}
.fab{display:none}

/* ---------- Floor & orders ---------- */
.floor{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}
.tbl{border:2px solid var(--line);background:var(--surface);border-radius:14px;padding:10px;text-align:left;min-height:96px;display:flex;flex-direction:column;gap:2px}
.tbl b{font-family:var(--font-display);font-size:1.25em}
.tbl.busy{border-color:var(--accent);background:var(--accent-soft)}
.tbl.ready{border-color:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}
.tbl.slow{border-color:var(--warn)} .tbl.late{border-color:var(--bad)}
.tbl .amt{margin-top:auto;font-family:var(--font-num);font-weight:600}
.area-h{font-size:.75em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px}
.ocards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px;align-items:start}
.ocard{background:var(--surface);border:1px solid var(--line);border-top:5px solid var(--accent);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;text-align:left}
.ocard.slow{border-top-color:var(--warn)} .ocard.late{border-top-color:var(--bad)}
.ocard .place{font-family:var(--font-display);font-weight:800;font-size:1.3em;line-height:1.1}
.ocard ul{list-style:none;margin:0;padding:0;font-size:.9em;display:flex;flex-direction:column;gap:2px}
.ocard li{display:flex;justify-content:space-between;gap:8px}
.ocard .tot{display:flex;justify-content:space-between;align-items:baseline;border-top:1px dashed var(--line);padding-top:7px}
.ocard .tot .num{font-size:1.3em;font-weight:600}
.elapsed{font-family:var(--font-num);font-size:.8em;font-weight:600;background:var(--accent-soft);color:var(--accent);border-radius:99px;padding:2px 9px;white-space:nowrap}
.elapsed.slow{background:var(--warn-soft);color:var(--warn)} .elapsed.late{background:var(--bad-soft);color:var(--bad)}
.oitems .oi{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.oi.void{opacity:.5;text-decoration:line-through}
.round-h{font-size:.72em;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-top:8px}

/* ---------- Kitchen ---------- */
.kds{display:grid;grid-template-columns:repeat(var(--kcols,auto-fill),minmax(250px,1fr));gap:12px;align-items:start}
.kt{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.kt-h{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;background:var(--accent);color:var(--accent-fg)}
.kt.slow .kt-h{background:var(--warn);color:#1c1406} .kt.late .kt-h{background:var(--bad);color:#fff}
.kt-h b{font-family:var(--font-display);font-size:1.25em}
.kt-items{display:flex;flex-direction:column}
.ki{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;width:100%}
.ki .q{font-family:var(--font-num);font-weight:700;font-size:1.25em;min-width:30px}
.ki .n{font-weight:700;font-size:1.05em;line-height:1.2}
.ki .o{font-size:.85em;color:var(--warn);font-weight:600}
.ki .st{margin-left:auto}
.ki.cooking{background:var(--warn-soft)} .ki.ready{background:var(--ok-soft)} .ki.ready .n{text-decoration:line-through;opacity:.7}
.kt-f{display:flex;gap:6px;padding:8px}

/* ---------- Stock ---------- */
.icards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.icard{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px}
.icard.low{border-color:var(--warn)} .icard.out{border-color:var(--bad)}
.gauge{position:relative;height:11px;background:var(--sunk);border-radius:99px}
.gauge i{position:absolute;inset:0 auto 0 0;border-radius:99px;background:var(--ok)}
.gauge i.low{background:var(--warn)} .gauge i.out{background:var(--bad)}
.gauge b{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--fg);opacity:.55}
.say strong{display:block} .say.low strong{color:var(--warn)} .say.out strong{color:var(--bad)} .say.ok strong{color:var(--ok)}
.group-h{font-size:.76em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px}

/* ---------- Modal & sheet ---------- */
.scrim{position:fixed;inset:0;background:rgba(10,15,13,.55);display:grid;place-items:center;padding:16px;z-index:50}
.modal{background:var(--surface);border-radius:18px;width:100%;max-width:440px;max-height:calc(100% - 8px);overflow:auto;padding:18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}
.modal.wide{max-width:680px} .modal.xwide{max-width:960px}
.modal-h{display:flex;justify-content:space-between;align-items:start;gap:10px}
.modal-h h2{font-size:1.3em}
.paybox{background:var(--accent-soft);border:2px dashed var(--accent);border-radius:14px;padding:12px;text-align:center}
.paybox .amt{font-family:var(--font-display);font-size:2em;font-weight:800;line-height:1.1}
.paybox .code{font-family:var(--font-num);font-size:1.5em;font-weight:600;color:var(--accent);overflow-wrap:anywhere;user-select:all;-webkit-user-select:all}
.change{padding:8px 12px;border-radius:10px;background:var(--sunk);color:var(--muted);font-weight:600}
.change.ok{background:var(--ok-soft);color:var(--ok)} .change.short{background:var(--bad-soft);color:var(--bad)}
.paylist .pl{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line)}
.ticketprev{font-family:var(--font-num);font-size:.82em;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;line-height:1.5}
.ticketprev .row,.ticket-print .row{display:flex;justify-content:space-between;gap:8px;flex-wrap:nowrap}
.ticketprev hr{border:0;border-top:1px dashed var(--line);margin:6px 0}
.ticketprev .big{font-size:1.25em} .ticketprev .center{text-align:center} .ticketprev .b{font-weight:700}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom,0px));background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:10px;font-weight:600;z-index:80;font-size:.92em;max-width:calc(100% - 32px);box-shadow:var(--shadow)}
.toast.bad{background:var(--bad);color:#fff}
.orderlist{display:flex;flex-direction:column;gap:6px}
.navedit{display:flex;flex-direction:column;gap:6px}
.navedit .ne{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:6px 10px;background:var(--bg)}
.perm-group{border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.perm-group h4{font-size:.85em;margin-bottom:6px}
.sheet-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.sheet-list .nav{flex-direction:column;background:var(--sunk);color:var(--fg);opacity:1;padding:12px 6px;text-align:center;font-size:.85em}

/* ---------- Tablet ---------- */
@media (max-width:1100px){
  :root{--rail:76px}
  .rail{padding:12px 6px}
  .brand,.rail-foot .me-txt,.rail-foot .btn{display:none}
  .nav{flex-direction:column;gap:3px;font-size:.68em;padding:8px 2px;text-align:center}
  .nav .badge{position:absolute;top:2px;right:8px;margin:0}
  .pos{grid-template-columns:minmax(0,1fr) 330px}
}
/* ---------- Phone ---------- */
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  .rail{display:none}
  .tabbar{display:flex;position:fixed;inset:auto 0 0 0;z-index:40;background:var(--accent);color:var(--accent-fg);padding:5px max(6px,env(safe-area-inset-right,0px)) calc(5px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));gap:2px}
  .tabbar .nav{flex:1;flex-direction:column;gap:2px;font-size:.66em;padding:6px 2px;text-align:center}
  .tabbar .nav .badge{position:absolute;top:1px;right:calc(50% - 22px);margin:0}
  main{padding-bottom:calc(150px + env(safe-area-inset-bottom,0px))}
  .pos{grid-template-columns:1fr}
  :root[data-ticket="left"] .pos .ticket{order:0}
  .ticket{position:static;max-height:none}
  .menu:not(.list){grid-template-columns:repeat(2,minmax(0,1fr))}
  :root[data-tile="small"] .menu:not(.list){grid-template-columns:repeat(3,minmax(0,1fr))}
  .fab{display:flex;position:fixed;left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));bottom:calc(68px + env(safe-area-inset-bottom,0px));z-index:30;justify-content:space-between;box-shadow:var(--shadow)}
  .vhead h1{font-size:1.45em}
  .modal{max-height:calc(100% - 4px);padding:16px}
  .scrim{padding:8px;align-items:end}
  .pos-tools{flex-wrap:wrap} .pos-tools .input{max-width:none;flex:1 1 100%} .pos-tools .seg{flex:1}
}

/* ---------- Printing (browser / A4) ---------- */
#printFrame{position:fixed;width:0;height:0;border:0;right:0;bottom:0}
@media print{
  body.printing-report .app>.rail,body.printing-report .tabbar,body.printing-report .no-print,body.printing-report .statusbar{display:none!important}
  body.printing-report .app{display:block}
  body.printing-report main{padding:0}
  body.printing-report .card,body.printing-report .kpi{break-inside:avoid}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ---------- Modules with drop-down menus ---------- */
.brand{display:flex;gap:10px;align-items:center}
.brand-logo{width:38px;height:38px;border-radius:10px;object-fit:contain;background:rgba(255,255,255,.92);padding:3px;flex:none}
.navgroup{display:flex;flex-direction:column;position:relative}
.navhead .chev{margin-left:auto;display:inline-grid;transition:transform .15s}
.navhead .chev svg{width:16px;height:16px}
.navhead .badge+.chev{margin-left:6px}
.navgroup.open>.navhead .chev{transform:rotate(180deg)}
.navgroup.current>.navhead{opacity:1}
.navsub{display:none;flex-direction:column;gap:1px;padding:2px 0 6px 30px}
.navgroup.open>.navsub{display:flex}
.navsub-h{display:none}
.nav.sub{padding:6px 10px;font-size:.88em;font-weight:500;opacity:.85}
.nav.sub[aria-current="page"]{background:rgba(255,255,255,.18);opacity:1;font-weight:700}
.crumb{font-size:.72em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.sheet-menu{display:flex;flex-direction:column;gap:6px}
.sheet-menu .pickbtn svg{width:18px;height:18px;vertical-align:-3px;margin-right:6px}
@media (max-width:1100px){
  .brand{display:none}
  .navhead .chev{display:none}
  .navgroup.open>.navsub,.navsub{display:none}
  .navgroup.fly>.navsub{display:flex;position:fixed;left:calc(var(--rail) + 6px);margin-top:-48px;z-index:45;min-width:220px;max-height:80vh;overflow:auto;background:var(--accent);color:var(--accent-fg);border-radius:14px;padding:8px;box-shadow:var(--shadow)}
  .navgroup.fly .navsub-h{display:block;font-weight:800;font-size:.8em;padding:4px 10px 6px;opacity:.8;text-transform:uppercase;letter-spacing:.05em}
  .navgroup.fly .nav.sub{flex-direction:row;font-size:.9em;text-align:left;padding:9px 12px}
}

/* ---------- Branding ---------- */
.login.has-bg{background-size:cover;background-position:center}
.login .logo{object-fit:contain;background:var(--surface)}
:root[data-radius="soft"] .btn,:root[data-radius="soft"] .card,:root[data-radius="soft"] .tile,:root[data-radius="soft"] .modal,:root[data-radius="soft"] .ticket,:root[data-radius="soft"] .kpi,:root[data-radius="soft"] .icard,:root[data-radius="soft"] .ocard,:root[data-radius="soft"] .tbl,:root[data-radius="soft"] .login-card,:root[data-radius="soft"] .tablewrap,:root[data-radius="soft"] .field input,:root[data-radius="soft"] .field select,:root[data-radius="soft"] .input,:root[data-radius="soft"] .pickbtn{border-radius:7px}
:root[data-radius="square"] .btn,:root[data-radius="square"] .card,:root[data-radius="square"] .tile,:root[data-radius="square"] .modal,:root[data-radius="square"] .ticket,:root[data-radius="square"] .kpi,:root[data-radius="square"] .icard,:root[data-radius="square"] .ocard,:root[data-radius="square"] .tbl,:root[data-radius="square"] .login-card,:root[data-radius="square"] .tablewrap,:root[data-radius="square"] .field input,:root[data-radius="square"] .field select,:root[data-radius="square"] .input,:root[data-radius="square"] .pickbtn,:root[data-radius="square"] .chip,:root[data-radius="square"] .seg,:root[data-radius="square"] .seg button{border-radius:2px}
.logo-prev{width:120px;height:90px;border:1px dashed var(--line);border-radius:12px;display:grid;place-items:center;background:var(--bg);overflow:hidden}
.logo-prev img{max-width:100%;max-height:100%;object-fit:contain}
.bg-prev{width:180px;height:100px;border:1px dashed var(--line);border-radius:12px;display:grid;place-items:center;background:var(--bg) center/cover}
.swatch{border:2px solid var(--line);background:var(--surface);border-radius:10px;padding:3px;display:flex;gap:2px;cursor:pointer}
.swatch i{width:18px;height:28px;border-radius:5px;display:block}
.brand-prev{border:1px solid var(--line);border-radius:12px;overflow:hidden;display:grid;grid-template-columns:150px 1fr;min-height:120px}
.bp-rail{background:var(--accent);color:var(--accent-fg);padding:12px;display:flex;flex-direction:column;gap:4px}
.bp-rail b{font-family:var(--font-display);font-size:1.05em}
.bp-rail span{font-size:.75em;opacity:.8}
.bp-body{padding:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;font-family:var(--font-body)}
.qr{display:grid;place-items:center;min-height:20px;padding:8px;background:#fff;border-radius:12px;align-self:center}
.icard.off{opacity:.65}
.paymethods{display:flex;flex-wrap:wrap;gap:6px}
.paymethods button{border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:8px 12px;font-weight:600;font-size:.9em;min-height:40px;border-left:5px solid var(--pm,var(--line))}
.paymethods button[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);border-left-color:var(--pm,var(--accent))}
@media (max-width:760px){.brand-prev{grid-template-columns:1fr}}
#root{min-height:100%}
.login{min-height:100vh;min-height:100dvh}
.field input[type="color"]{height:44px;padding:4px;cursor:pointer}
.field input[type="color"]::-webkit-color-swatch-wrapper{padding:0}
.field input[type="color"]::-webkit-color-swatch{border:0;border-radius:6px}
.recovery-code{font:700 22px/1.3 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em;text-align:center;padding:14px;border:2px dashed var(--line,#ccc);border-radius:10px;user-select:all;word-break:break-all}

/* =====================================================================
   v2: top bar, charts, dashboard, reports, branches, licence, interface styles
   ===================================================================== */
:root{--viz-cur:var(--accent);--viz-prev:#b9b6ab;--viz-grid:color-mix(in srgb,var(--line) 70%,transparent);--s1:var(--accent);--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#6250d6}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--viz-prev:#5d5b55;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#9085e9}}
:root[data-theme="dark"]{--viz-prev:#5d5b55;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#9085e9}

/* ---------- top bar ---------- */
.topbar{display:flex;align-items:center;gap:10px;max-width:1400px;margin:0 auto 14px;min-height:44px}
.tb-menu{flex:none}
.tb-title{display:flex;flex-direction:column;min-width:0;line-height:1.15}
.tb-title b{font-family:var(--font-display);font-size:1.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-crumb{font-size:.7em;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:8px;min-width:0}
.tb-branch,.tb-chip,.tb-user{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:99px;padding:6px 12px;font-weight:600;font-size:.86em;min-height:38px;max-width:240px}
.tb-branch span,.tb-user .tb-uname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-branch svg,.tb-chip svg{width:17px;height:17px;flex:none}
.tb-chip.warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn)} .tb-chip.bad{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)} .tb-chip.ok{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}
.tb-user{padding:3px 12px 3px 3px}
.tb-uname{display:flex;flex-direction:column;line-height:1.1;text-align:left} .tb-uname small{font-weight:500;color:var(--muted);font-size:.82em}
.avatar.sm{width:30px;height:30px;font-size:.78em}
.lic{display:flex;align-items:center;gap:10px;border-radius:12px;padding:9px 12px;font-size:.9em;flex:1 1 100%}
.lic svg{width:18px;height:18px;flex:none} .lic span{flex:1;min-width:0} .lic .btn{flex:none}
.statusbar .lic{font-weight:500}
.lic.info{background:var(--accent-soft);color:var(--fg)} .lic.warn{background:var(--warn-soft);color:var(--fg);border:1px solid var(--warn)} .lic.bad{background:var(--bad-soft);color:var(--fg);border:1px solid var(--bad)} .lic.ok{background:var(--ok-soft);color:var(--fg)}
@media (max-width:760px){.tb-menu{display:none}.tb-uname{display:none}.tb-user{padding:3px}.tb-branch{max-width:150px}.topbar{margin-bottom:10px}.tb-title b{font-size:.95em}}

/* ---------- charts ---------- */
.viz{position:relative;width:100%}
.viz svg{display:block;overflow:visible}
.viz .grid{stroke:var(--viz-grid);stroke-width:1}
.viz .axis{fill:var(--muted);font:500 11px var(--font-body)}
.viz .m.cur{fill:var(--viz-cur)} .viz .m.prev{fill:var(--viz-prev)} .viz .m.cur.hl{fill:color-mix(in srgb,var(--viz-cur) 80%,var(--spice))}
.viz .hit{cursor:default;outline:none} .viz .hitbox{fill:transparent}
.viz .hit:hover .m,.viz .hit:focus .m{filter:brightness(1.12)} .viz .hit:focus .hitbox{fill:color-mix(in srgb,var(--accent) 6%,transparent)}
.viz .ln{fill:none;stroke:var(--viz-cur);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.viz .area{fill:var(--viz-cur);opacity:.1}
.viz .xh{stroke:var(--muted);stroke-width:1}
.viz .dot{fill:var(--viz-cur);stroke:var(--surface);stroke-width:2}
.viz-legend{display:flex;gap:14px;font-size:.78em;color:var(--muted);margin:0 0 6px}
.viz-legend span{display:inline-flex;align-items:center;gap:6px}
.lk{display:inline-block;width:12px;height:10px;border-radius:3px} .lk.cur{background:var(--viz-cur)} .lk.prev{background:var(--viz-prev)}
.viz-tip{position:fixed;z-index:200;pointer-events:none;display:none;background:var(--surface);color:var(--fg);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:7px 10px;font-size:.82em;min-width:120px}
.vt-row{display:flex;align-items:center;gap:8px;white-space:nowrap} .vt-row b{font-family:var(--font-num);font-variant-numeric:tabular-nums} .vt-row span{color:var(--muted)}
.vt-key{display:inline-block;width:12px;height:2px;border-radius:2px} .vt-key.cur{background:var(--viz-cur)} .vt-key.prev{background:var(--viz-prev)}
.hb{display:flex;flex-direction:column;gap:7px}
.hb-row{display:grid;grid-template-columns:minmax(90px,38%) 1fr auto;gap:10px;align-items:center;font-size:.9em;outline:none;border-radius:6px}
.hb-row.click{cursor:pointer} .hb-row:hover .hb-t i,.hb-row:focus .hb-t i{filter:brightness(1.12)}
.hb-l{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .hb-l small{display:block;color:var(--muted);font-size:.82em}
.hb-t{height:12px;background:transparent;position:relative} .hb-t i{position:absolute;left:0;top:0;bottom:0;background:var(--viz-cur);border-radius:0 4px 4px 0;min-width:2px}
.hb-v{font-weight:600;text-align:right}
.shr-bar{display:flex;gap:2px;height:16px;border-radius:5px;overflow:hidden;margin-bottom:10px}
.shr-bar i{min-width:3px} .s1{background:var(--s1)} .s2{background:var(--s2)} .s3{background:var(--s3)} .s4{background:var(--s4)} .s5{background:var(--s5)} .s6{background:var(--s6)}
.shr-list{display:flex;flex-direction:column;gap:5px;font-size:.9em}
.sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px;vertical-align:-1px}
.spark{position:absolute;right:12px;top:10px;opacity:.9} .spark polyline{fill:none;stroke:var(--viz-cur);stroke-width:2;stroke-linejoin:round;stroke-linecap:round} .spark circle{fill:var(--viz-cur)}

/* ---------- dashboard ---------- */
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 14px}
.dash{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.dw{grid-column:span 6;min-width:0} .dw.full{grid-column:1/-1} .dw.wide{grid-column:span 8} .dw.half{grid-column:span 6}
.dw.wide+.dw.half{grid-column:span 4}
.dw.full{background:transparent;border:0;padding:0}
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.kpi-row.small .kpi2 .v{font-size:1.2em}
.kpi2{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px 12px;min-height:96px;overflow:hidden}
.kpi2 .k{font-size:.72em;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.kpi2 .v{font-size:1.65em;font-weight:600;margin:4px 0 2px;letter-spacing:-.01em}
.kpi2 .s{font-size:.78em}
.kpi2.neg .v{color:var(--bad)}
.delta{font-weight:700} .delta.up{color:var(--ok)} .delta.down{color:var(--bad)}
.now-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px} .now-grid.two{grid-template-columns:repeat(2,1fr)}
.now-grid>div{display:flex;flex-direction:column;gap:2px;background:var(--sunk);border-radius:12px;padding:10px 12px}
.now-grid b{font-size:1.6em;font-family:var(--font-num)} .now-grid small{color:var(--muted);font-size:.78em}
.li{padding:6px 0;border-bottom:1px solid var(--line)} .li:last-child{border-bottom:0}
@media (max-width:1100px){.dw.wide,.dw.half,.dw.wide+.dw.half{grid-column:span 12}}
@media (min-width:1101px) and (max-width:1300px){.dw.wide{grid-column:span 12}.dw.wide+.dw.half{grid-column:span 6}}

/* ---------- reports ---------- */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 14px;overflow-x:auto;scrollbar-width:none}
.tabs button{border:0;background:none;padding:10px 14px;font-weight:700;color:var(--muted);border-bottom:3px solid transparent;white-space:nowrap;margin-bottom:-1px}
.tabs button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--accent)}
.rep-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:10px;margin-bottom:12px}
.rep-head h2{font-size:1.3em}
.rep-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-bottom:14px}
.rep-card{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px;color:var(--fg);min-height:84px}
.rep-card:hover{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)} .rep-card span{color:var(--muted);font-size:.84em}
.group-h{font-size:.74em;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:6px 0 8px}
.rtab th.sortable{cursor:pointer;user-select:none} .rtab th[aria-sort="ascending"]::after{content:" ▲"} .rtab th[aria-sort="descending"]::after{content:" ▼"}
.rtab tfoot td,.stmt tfoot td{font-weight:800;border-top:2px solid var(--fg)}
.pnl{font-size:.94em} .pnl td,.pnl th{padding:7px 12px}
.pnl tr.k-head td,.pnl tr.head td{font-weight:800;font-size:.74em;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--sunk)}
.pnl tr.k-line td:first-child{padding-left:24px}
.pnl tr.k-subtotal td{font-weight:700;border-top:1px solid var(--fg)}
.pnl tr.k-total td{font-weight:800;font-size:1.08em;border-top:2px solid var(--fg);border-bottom:3px double var(--fg)}
.pnl tr.k-memo td,.pnl tr.k-memo-num td,.stmt tr.k-memo td{color:var(--muted)} .pnl td.cmp{color:var(--muted)} .pnl td.neg{color:var(--bad)}
.pl-flow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.pl-flow>div{display:flex;flex-direction:column;background:var(--sunk);border-radius:12px;padding:8px 14px;min-width:120px} .pl-flow>div span{font-size:.75em;color:var(--muted);font-weight:700}
.pl-flow>div b{font-size:1.25em} .pl-flow i{font-style:normal;font-weight:800;color:var(--muted);font-size:1.3em}
.pl-flow .good{background:var(--ok-soft)} .pl-flow .good b{color:var(--ok)} .pl-flow .bad{background:var(--bad-soft)} .pl-flow .bad b{color:var(--bad)}
.stmt-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:10px}
.stmt-top .grid{display:flex;flex-wrap:wrap;gap:8px}
.stmt-top .box{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;padding:6px 12px;min-width:110px} .stmt-top .box.strong{border-color:var(--accent);background:var(--accent-soft)}
.stmt-top .box b{font-size:1.15em}

/* ---------- branches ---------- */
.br-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.br{display:flex;flex-direction:column;gap:10px} .br.off{opacity:.65} .br h3{font-size:1.1em}
.br-dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:.9em} .br-dl dt{color:var(--muted)} .br-dl dd{margin:0;min-width:0;overflow-wrap:anywhere}

/* ---------- interface ---------- */
.ui-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.ui-card{display:flex;flex-direction:column;gap:4px;text-align:left;border:2px solid var(--line);background:var(--surface);color:var(--fg);border-radius:14px;padding:8px 8px 10px}
.ui-card>small{font-size:.8em;color:var(--muted)}
.ui-card[aria-pressed="true"]{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.uiprev{display:grid;grid-template-columns:22% 1fr;height:84px;border-radius:9px;overflow:hidden;margin-bottom:4px;background:#f3f2ee}
.up-rail{background:var(--accent);display:flex;flex-direction:column;gap:5px;padding:8px 5px} .up-rail i{height:5px;border-radius:3px;background:rgba(255,255,255,.55)}
.up-main{padding:6px;display:flex;flex-direction:column;gap:5px} .up-bar{height:7px;border-radius:4px;background:rgba(0,0,0,.08);width:60%}
.up-cards{display:flex;gap:5px;flex:1} .up-cards i{flex:1;border-radius:6px;background:#fff;border:1px solid #dcd9cf} .up-cards i.w{flex:2}
[data-uip="modern"]{background:#eef1f4} [data-uip="modern"] .up-rail{background:#111827} [data-uip="modern"] .up-cards i{border:0;box-shadow:0 2px 6px rgba(0,0,0,.08);border-radius:9px}
[data-uip="glass"]{background:linear-gradient(135deg,var(--accent),var(--spice))} [data-uip="glass"] .up-rail{background:rgba(0,0,0,.25)} [data-uip="glass"] .up-cards i{background:rgba(255,255,255,.55);border-color:rgba(255,255,255,.6)} [data-uip="glass"] .up-bar{background:rgba(255,255,255,.5)}
[data-uip="midnight"]{background:#0f1419} [data-uip="midnight"] .up-rail{background:#070a0d} [data-uip="midnight"] .up-cards i{background:#19212a;border-color:#26303b} [data-uip="midnight"] .up-bar{background:#26303b}
[data-uip="minimal"]{background:#fff} [data-uip="minimal"] .up-rail{background:#fff;border-right:1px solid #ddd} [data-uip="minimal"] .up-rail i{background:#d4d4d4} [data-uip="minimal"] .up-cards i{border-radius:3px}
[data-uip="compact"] .up-main{gap:3px;padding:4px} [data-uip="compact"] .up-cards{gap:3px} [data-uip="compact"] .up-rail i{height:3px}
[data-uip="touch"] .up-rail i{height:9px} [data-uip="touch"] .up-cards i{border-radius:9px}
.nav-switch{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.ns-mod{border:1px solid var(--line);border-radius:12px;padding:10px}
.ns-views{display:flex;flex-direction:column;gap:2px;padding:6px 0 0 44px} .ns-views .dim{opacity:.4}
.switch{display:flex;align-items:center;gap:10px;cursor:pointer} .switch input{position:absolute;opacity:0;pointer-events:none}
.switch span{width:38px;height:22px;border-radius:99px;background:var(--line);position:relative;flex:none;transition:background .15s}
.switch span::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.switch input:checked+span{background:var(--accent)} .switch input:checked+span::after{transform:translateX(16px)} .switch input:focus-visible+span{outline:2px solid var(--spice);outline-offset:2px}
.switch input:disabled+span{opacity:.5} .switch b svg{width:18px;height:18px;vertical-align:-3px}

/* ---------- licence ---------- */
.lic-card{display:flex;flex-direction:column;gap:12px;border-width:2px} .lic-card.ok{border-color:var(--ok)} .lic-card.warn{border-color:var(--warn)} .lic-card.bad{border-color:var(--bad)}
.lic-main{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}
.lic-status{font-family:var(--font-display);font-size:1.5em;font-weight:800;display:flex;align-items:center;gap:8px}
.dot{width:12px;height:12px;border-radius:50%;display:inline-block} .dot.ok{background:var(--ok)} .dot.warn{background:var(--warn)} .dot.bad{background:var(--bad)}
.lic-days{display:flex;flex-direction:column;align-items:flex-end;line-height:1} .lic-days b{font-size:2.6em;font-family:var(--font-num)} .lic-days span{color:var(--muted);font-size:.85em}
.lic-track{height:6px;background:var(--sunk);border-radius:99px;overflow:hidden} .lic-track i{display:block;height:100%;background:var(--accent);border-radius:99px}
.lic-card.warn .lic-track i{background:var(--warn)} .lic-card.bad .lic-track i{background:var(--bad)}
.plan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.plan{display:flex;flex-direction:column;gap:4px;text-align:left;border:2px solid var(--line);background:var(--surface);color:var(--fg);border-radius:14px;padding:12px 14px;position:relative}
.plan.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)} .plan .pill{position:absolute;top:10px;right:10px}
.plan .price{font-size:1.5em;font-weight:700} .plan .price small{font-size:.5em;color:var(--muted);font-weight:600}
.lp-total{display:flex;flex-direction:column;justify-content:end} .lp-total b{font-size:1.8em}
.renew-ref{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 10px;align-items:baseline;background:var(--sunk);border-radius:12px;padding:10px 14px} .renew-ref b{font-size:1.3em}
.pay-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.pay-item{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px} .pay-item pre{margin:0;white-space:pre-wrap;font:600 .95em var(--font-num)}
.upd-new{background:var(--ok-soft);border-radius:12px;padding:10px 14px}
.danger-zone{border-color:var(--bad-soft)}

/* ---------- menu layouts: slim icons and top bar (computer and tablet) ---------- */
@media (min-width:761px){
  :root[data-nav="rail"]{--rail:76px}
  :root[data-nav="rail"] .rail{padding:12px 6px}
  :root[data-nav="rail"] .brand,:root[data-nav="rail"] .rail-foot .btn{display:none}
  :root[data-nav="rail"] .nav{flex-direction:column;gap:3px;font-size:.68em;padding:8px 2px;text-align:center}
  :root[data-nav="rail"] .nav .badge{position:absolute;top:2px;right:8px;margin:0}
  :root[data-nav="rail"] .navhead .chev{display:none}
  :root[data-nav="rail"] .navgroup.open>.navsub,:root[data-nav="rail"] .navsub{display:none}
  :root[data-nav="rail"] .navgroup.fly>.navsub{display:flex;position:fixed;left:calc(var(--rail) + 6px);margin-top:-48px;z-index:45;min-width:220px;max-height:80vh;overflow:auto;background:var(--accent);color:var(--accent-fg);border-radius:14px;padding:8px;box-shadow:var(--shadow)}
  :root[data-nav="rail"] .navgroup.fly .navsub-h{display:block;font-weight:800;font-size:.8em;padding:4px 10px 6px;opacity:.8;text-transform:uppercase;letter-spacing:.05em}
  :root[data-nav="rail"] .navgroup.fly .nav.sub{flex-direction:row;font-size:.9em;text-align:left;padding:9px 12px}
  :root[data-nav="top"] .app{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  :root[data-nav="top"] .rail{position:sticky;top:0;z-index:44;height:auto;flex-direction:row;align-items:center;gap:2px;padding:6px 14px;overflow:visible;flex-wrap:wrap}
  :root[data-nav="top"] .brand{padding:0 12px 0 0;font-size:1.02em;display:flex} :root[data-nav="top"] .brand small{display:none} :root[data-nav="top"] .brand-logo{width:32px;height:32px}
  :root[data-nav="top"] .nav{flex-direction:row;font-size:.9em;padding:8px 10px;gap:7px;text-align:left}
  :root[data-nav="top"] .nav svg{width:18px;height:18px}
  :root[data-nav="top"] .nav .badge{position:static;margin-left:4px}
  :root[data-nav="top"] .navhead .chev{display:inline-grid;margin-left:2px}
  :root[data-nav="top"] .navgroup.open>.navsub,:root[data-nav="top"] .navsub{display:none}
  :root[data-nav="top"] .navgroup.fly>.navsub{display:flex;position:absolute;top:100%;left:0;margin-top:6px;z-index:46;min-width:230px;max-height:75vh;overflow:auto;background:var(--accent);color:var(--accent-fg);border-radius:14px;padding:8px;box-shadow:var(--shadow)}
  :root[data-nav="top"] .navgroup.fly .nav.sub{padding:9px 12px}
  :root[data-nav="top"] .rail-foot{margin:0 0 0 auto;flex-direction:row;padding:0;font-size:1em;gap:2px}
  :root[data-nav="top"] .rail-foot .navgroup.fly>.navsub{left:auto;right:0}
  :root[data-nav="top"] .tb-menu{display:none}
}
@media (min-width:761px) and (max-width:1100px){
  :root[data-nav="top"] .nav span:not(.badge):not(.chev){display:none}
  :root[data-nav="top"] .nav.sub span{display:inline!important}
}

/* ---------- interface styles ---------- */
/* Modern: soft shadows, big rounded cards, dark menu */
:root[data-ui="modern"]{--bg:#eef1f4;--line:#e3e6ea;--shadow:0 12px 32px rgba(15,23,42,.14)}
:root[data-ui="modern"] .card,:root[data-ui="modern"] .kpi2,:root[data-ui="modern"] .kpi,:root[data-ui="modern"] .rep-card,:root[data-ui="modern"] .tile,:root[data-ui="modern"] .ticket{border-color:transparent;border-radius:18px;box-shadow:0 1px 2px rgba(15,23,42,.05),0 6px 20px rgba(15,23,42,.06)}
:root[data-ui="modern"] .rail,:root[data-ui="modern"] .tabbar{background:#111827;color:#e5e7eb}
:root[data-ui="modern"] .rail .nav[aria-current="page"],:root[data-ui="modern"] .rail .nav.sub[aria-current="page"],:root[data-ui="modern"] .tabbar .nav[aria-current="page"]{background:var(--accent);color:var(--accent-fg)}
:root[data-ui="modern"] .navgroup.fly>.navsub{background:#111827!important;color:#e5e7eb!important}
:root[data-ui="modern"] .btn{border-radius:12px;box-shadow:0 1px 2px rgba(15,23,42,.08)}
:root[data-ui="modern"] .tb-branch,:root[data-ui="modern"] .tb-user,:root[data-ui="modern"] .tb-chip{border-color:transparent;box-shadow:0 1px 3px rgba(15,23,42,.08)}
@media (prefers-color-scheme:dark){:root[data-ui="modern"]:not([data-theme="light"]){--bg:#0d1117;--surface:#161b22;--line:#21262d}}
:root[data-ui="modern"][data-theme="dark"]{--bg:#0d1117;--surface:#161b22;--line:#21262d}
/* Glass: see-through panels over the brand colours */
:root[data-ui="glass"] body{background:radial-gradient(1200px 700px at 0% 0%,color-mix(in srgb,var(--accent) 45%,transparent),transparent 60%),radial-gradient(900px 600px at 100% 10%,color-mix(in srgb,var(--spice) 40%,transparent),transparent 60%),var(--bg);background-attachment:fixed}
:root[data-ui="glass"] .card,:root[data-ui="glass"] .kpi2,:root[data-ui="glass"] .kpi,:root[data-ui="glass"] .rep-card,:root[data-ui="glass"] .tile,:root[data-ui="glass"] .ticket,:root[data-ui="glass"] .tb-branch,:root[data-ui="glass"] .tb-user,:root[data-ui="glass"] .tablewrap{background:color-mix(in srgb,var(--surface) 62%,transparent);backdrop-filter:blur(16px) saturate(1.3);-webkit-backdrop-filter:blur(16px) saturate(1.3);border-color:color-mix(in srgb,var(--surface) 70%,transparent);border-radius:18px}
:root[data-ui="glass"] .rail,:root[data-ui="glass"] .tabbar{background:color-mix(in srgb,var(--accent) 70%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
:root[data-ui="glass"] .modal{background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
/* Midnight pro: dark everywhere */
:root[data-ui="midnight"]{--bg:#0b0f14;--surface:#121821;--sunk:#0a0e13;--line:#1f2933;--fg:#e6edf3;--muted:#8b98a5;--accent-soft:color-mix(in srgb,var(--accent) 24%,#0b0f14);--ok:#56d364;--ok-soft:#12301b;--warn:#e3b341;--warn-soft:#352a0f;--bad:#f47067;--bad-soft:#3b1716;--shadow:0 12px 32px rgba(0,0,0,.6);--viz-prev:#3b4652;color-scheme:dark}
:root[data-ui="midnight"] .rail,:root[data-ui="midnight"] .tabbar{background:#070a0d;color:#e6edf3;border-right:1px solid #1f2933}
:root[data-ui="midnight"] .rail .nav[aria-current="page"],:root[data-ui="midnight"] .tabbar .nav[aria-current="page"]{background:color-mix(in srgb,var(--accent) 30%,transparent);color:#fff}
:root[data-ui="midnight"] .navgroup.fly>.navsub{background:#0b0f14!important;color:#e6edf3!important;border:1px solid #1f2933}
:root[data-ui="midnight"] .field input,:root[data-ui="midnight"] .field select,:root[data-ui="midnight"] .field textarea,:root[data-ui="midnight"] .input{background:#0a0e13}
:root[data-ui="midnight"] .uiprev{filter:none}
/* Minimal: flat, quiet, lines instead of shadows */
:root[data-ui="minimal"]{--bg:#fafafa;--shadow:0 6px 18px rgba(0,0,0,.1)}
@media (prefers-color-scheme:dark){:root[data-ui="minimal"]:not([data-theme="light"]){--bg:#111}}
:root[data-ui="minimal"][data-theme="dark"]{--bg:#111}
:root[data-ui="minimal"] .rail{background:var(--surface);color:var(--fg);border-right:1px solid var(--line)}
:root[data-ui="minimal"] .tabbar{background:var(--surface);color:var(--fg);border-top:1px solid var(--line)}
:root[data-ui="minimal"] .rail .nav[aria-current="page"],:root[data-ui="minimal"] .rail .nav.sub[aria-current="page"],:root[data-ui="minimal"] .tabbar .nav[aria-current="page"]{background:var(--accent-soft);color:var(--accent)}
:root[data-ui="minimal"] .navgroup.fly>.navsub{background:var(--surface)!important;color:var(--fg)!important;border:1px solid var(--line)}
:root[data-ui="minimal"] .brand-logo{background:transparent}
:root[data-ui="minimal"] .card,:root[data-ui="minimal"] .kpi2,:root[data-ui="minimal"] .kpi,:root[data-ui="minimal"] .rep-card,:root[data-ui="minimal"] .tile,:root[data-ui="minimal"] .modal{border-radius:6px;box-shadow:none}
:root[data-ui="minimal"] .btn{border-radius:6px} :root[data-ui="minimal"] .btn:not(.ghost):not(.danger):not(.wa){background:var(--fg);color:var(--bg)}
:root[data-ui="minimal"] .rail .btn.ghost{border-color:var(--line)}
/* Compact office: small and dense */
:root[data-ui="compact"]{--fs:13.5px;--pad:7px;--tile:132px;--rail:190px}
:root[data-ui="compact"] .btn{min-height:34px;padding:6px 12px;border-radius:8px} :root[data-ui="compact"] .btn.big{min-height:42px}
:root[data-ui="compact"] .t td,:root[data-ui="compact"] .t th{padding:5px 8px}
:root[data-ui="compact"] .card{padding:10px;border-radius:10px} :root[data-ui="compact"] .kpi2{min-height:76px;padding:9px 11px;border-radius:10px} :root[data-ui="compact"] .kpi2 .v{font-size:1.35em}
:root[data-ui="compact"] .dash,:root[data-ui="compact"] .kpi-row{gap:8px} :root[data-ui="compact"] .vhead h1{font-size:1.4em}
:root[data-ui="compact"] .nav{padding:6px 10px}
/* Big touch: large buttons and text */
:root[data-ui="touch"]{--fs:17px;--pad:14px;--tile:200px;--rail:236px}
:root[data-ui="touch"] .btn{min-height:52px;padding:12px 20px;border-radius:14px} :root[data-ui="touch"] .btn.small{min-height:42px}
:root[data-ui="touch"] .nav{padding:12px 14px} :root[data-ui="touch"] .nav svg{width:24px;height:24px}
:root[data-ui="touch"] .seg button{min-height:46px;padding:8px 16px} :root[data-ui="touch"] .field input,:root[data-ui="touch"] .field select,:root[data-ui="touch"] .input{padding:12px 14px}
:root[data-ui="touch"] .icon-btn{width:48px;height:48px} :root[data-ui="touch"] .t td{padding:12px 10px}
@media print{.topbar{display:none!important}}

.filters .seg{max-width:100%;overflow-x:auto;scrollbar-width:none} .filters .seg button,.rep-head .seg button{white-space:nowrap}
.t th.r{text-align:right}
:root[data-ui="midnight"]{--viz-cur:color-mix(in srgb,var(--accent) 55%,white)} :root[data-ui="midnight"] .btn:not(.ghost):not(.danger):not(.wa):not(.warn){background:color-mix(in srgb,var(--accent) 80%,white);color:#0b0f14}

/* =====================================================================
   v2.1: menus, finder, tips, New Order, print designer, stock & production
   ===================================================================== */
/* ---------- menus ---------- */
.navsec{font-size:.66em;font-weight:800;letter-spacing:.08em;text-transform:uppercase;opacity:.6;padding:8px 10px 3px}
.navsec:first-of-type{padding-top:2px}
.nav.sub .si{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;background:rgba(255,255,255,.12);flex:none}
.nav.sub .si svg{width:13px;height:13px}
.nav.sub{gap:8px}
.rail>.nav[aria-current="page"],.rail .navgroup.current>.navhead{position:relative}
.rail>.nav[aria-current="page"]::before,.rail .navgroup.current>.navhead::before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:4px;border-radius:0 4px 4px 0;background:var(--spice)}
.navhead svg:first-child,.rail>.nav>svg{padding:5px;width:30px!important;height:30px!important;border-radius:9px;background:rgba(255,255,255,.1);box-sizing:border-box}
.rail .navgroup.current>.navhead svg:first-child,.rail>.nav[aria-current="page"]>svg{background:var(--spice);color:var(--spice-fg)}
.nav-search{display:flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:inherit;border-radius:10px;padding:7px 10px;margin:2px 0 8px;font-size:.85em;text-align:left;opacity:.9}
.nav-search svg{width:16px;height:16px;flex:none} .nav-search span{flex:1} .nav-search kbd{font:600 .78em var(--font-num);border:1px solid rgba(255,255,255,.3);border-radius:5px;padding:0 5px}
.finder{display:flex;flex-direction:column;gap:3px;max-height:60vh;overflow:auto}
.fd-item{display:flex;align-items:center;gap:10px;border:0;background:transparent;color:var(--fg);padding:9px 10px;border-radius:10px;text-align:left}
.fd-item svg{width:18px;height:18px;color:var(--muted)} .fd-item span{flex:1;font-weight:600} .fd-item small{color:var(--muted)}
.fd-item[aria-selected="true"],.fd-item:hover{background:var(--accent-soft)}
@media (max-width:1100px){.nav-search span,.nav-search kbd{display:none}.nav-search{justify-content:center}.navsec{display:none}.navgroup.fly .navsec{display:block}}
:root[data-nav="rail"] .nav-search span,:root[data-nav="rail"] .nav-search kbd{display:none} :root[data-nav="rail"] .navsec{display:none} :root[data-nav="rail"] .navgroup.fly .navsec{display:block}
:root[data-nav="top"] .nav-search{margin:0 4px;padding:6px 8px} :root[data-nav="top"] .nav-search span{display:none}
:root[data-nav="rail"] .navhead svg:first-child,:root[data-nav="rail"] .rail>.nav>svg{margin:0 auto}
:root[data-ui="minimal"] .nav.sub .si,:root[data-ui="minimal"] .navhead svg:first-child,:root[data-ui="minimal"] .rail>.nav>svg{background:var(--sunk)}
:root[data-ui="minimal"] .nav-search{border-color:var(--line);background:var(--sunk)}

/* ---------- tips ---------- */
.tipbox{display:flex;gap:10px;align-items:flex-start;background:color-mix(in srgb,var(--spice) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--spice) 35%,transparent);border-radius:12px;padding:9px 12px;font-size:.88em;line-height:1.45}
.tipbox svg{width:18px;height:18px;flex:none;color:var(--spice);margin-top:1px}
.tipbox ul{margin:4px 0 0;padding-left:18px} .tipbox .linkbtn{margin-left:auto;flex:none}

/* ---------- New order (v2.1) ---------- */
.pos2{display:grid;grid-template-columns:172px minmax(0,1fr) 384px;gap:14px;align-items:start}
:root[data-ticket="left"] .pos2{grid-template-columns:384px 172px minmax(0,1fr)} :root[data-ticket="left"] .pos2 .ticket{order:-2} :root[data-ticket="left"] .pos2 .pos-cats{order:-1}
.pos-cats{position:sticky;top:12px;display:flex;flex-direction:column;gap:3px;max-height:calc(100vh - 24px);overflow:auto;scrollbar-width:thin}
.pcat{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:9px;border:0;background:transparent;color:var(--fg);padding:10px 10px;border-radius:12px;text-align:left;font-weight:600;font-size:.93em;transition:background .12s}
.pcat span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcat i{width:10px;height:10px;border-radius:50%;background:var(--cc)}
.pcat small{color:var(--muted);font-size:.76em;font-weight:700;background:var(--sunk);border-radius:99px;padding:1px 7px;font-family:var(--font-num)}
.pcat:hover{background:color-mix(in srgb,var(--cc) 8%,transparent)}
.pcat[aria-pressed="true"]{background:var(--surface);box-shadow:inset 3px 0 0 var(--cc),0 1px 3px rgba(0,0,0,.07)}
.pcat[aria-pressed="true"] small{background:var(--cc);color:#fff}
.pos-bar{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.pos-search{flex:1 1 220px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:0 12px;min-height:44px;color:var(--muted)}
.pos-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.pos-search svg{width:17px;height:17px;flex:none} .pos-search input{border:0;background:transparent;flex:1;outline:none;font-size:1em;min-width:0;color:var(--fg)}
.m2{margin-top:0}
.m2 .tile{border-radius:16px;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:transform .12s,box-shadow .12s,border-color .12s}
.m2 .tile:hover{box-shadow:0 6px 18px rgba(0,0,0,.08);transform:translateY(-1px)}
.m2 .tile.pop{animation:tpop .28s ease}
@keyframes tpop{40%{transform:scale(.96)}100%{transform:none}}
.picwrap{position:relative;display:block}
.price-tag{position:absolute;left:8px;bottom:8px;background:color-mix(in srgb,var(--surface) 90%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--fg);padding:3px 10px;border-radius:99px;font-weight:700;font-size:.88em;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.m2 .tile .body{padding:9px 11px 11px}
.m2 .tile .ft{align-items:center}
.addplus{margin-left:auto;width:28px;height:28px;flex:none;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:800;font-size:1.1em;transition:background .12s}
.m2 .tile:hover .addplus{background:var(--accent);color:var(--accent-fg)}
.m2.compact .tile .stripe{background:var(--cc)}
.m2 .qbubble{z-index:2;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.nopic{display:grid!important;place-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--cc) 16%,var(--surface)),color-mix(in srgb,var(--cc) 6%,var(--surface)));color:color-mix(in srgb,var(--cc) 80%,var(--fg))}
.nopic svg{width:40%!important;height:40%!important}
.nopic.logo img{width:46%;height:60%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.12))}
.pic.sm{width:42px;height:42px;border-radius:10px;object-fit:cover;aspect-ratio:1;display:block;overflow:hidden}
.pic.sm.nopic svg{width:60%!important;height:60%!important}
.t2 .t-head{gap:10px}
.t-top{display:flex;justify-content:space-between;align-items:flex-start}
.t-kick{font-size:.68em;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.t-top h2{font-size:1.25em}
.otypes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.otype{display:flex;flex-direction:column;align-items:center;gap:4px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);border-radius:12px;padding:8px 4px;font-weight:700;font-size:.82em}
.otype svg{width:22px;height:22px}
.otype[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.paymode .seg{width:100%} .paymode .seg button{flex:1}
.t-where{display:grid;gap:6px}
.tcard{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:12px;padding:8px 12px;text-align:left;min-height:52px}
.tcard>svg{width:22px;height:22px;color:var(--accent);flex:none}
.tcard>span:not(.chev):not(.pill){display:flex;flex-direction:column;flex:1;min-width:0;line-height:1.2}
.tcard small{color:var(--muted);font-size:.74em;font-weight:600} .tcard b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcard .chev{color:var(--muted);font-size:1.3em}
.tcard.tag input{border:0;background:transparent;outline:none;font:inherit;font-weight:700;padding:2px 0;color:var(--fg);width:100%}
.tcard.tag:focus-within{border-color:var(--accent)}
.t-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:26px 10px;color:var(--muted)}
.t-empty svg{width:34px;height:34px;opacity:.5} .t-empty b{color:var(--fg)} .t-empty span{font-size:.86em}
.line.l2{grid-template-columns:42px minmax(0,1fr) auto auto;gap:10px}
.lmid{min-width:0} .lt{min-width:62px;font-weight:600}
.t2 .t-foot{gap:8px} .t2 .t-foot .input{font-size:.9em}
.sums{background:var(--sunk);border-radius:12px;padding:8px 12px;display:flex;flex-direction:column;gap:3px}
.t2 #tGo svg{width:20px;height:20px}
@media (max-width:1300px){
  .pos2{grid-template-columns:minmax(0,1fr) 350px}
  :root[data-ticket="left"] .pos2{grid-template-columns:350px minmax(0,1fr)}
  .pos-cats{position:static;flex-direction:row;overflow-x:auto;max-height:none;grid-column:1;grid-row:1;padding-bottom:2px}
  :root[data-ticket="left"] .pos2 .pos-cats{grid-column:2}
  .pos-main{grid-column:1;grid-row:2} :root[data-ticket="left"] .pos2 .pos-main{grid-column:2}
  .pos2 .ticket{grid-column:2;grid-row:1/3} :root[data-ticket="left"] .pos2 .ticket{grid-column:1}
  .pcat{grid-template-columns:10px auto auto;flex:none;border:1px solid var(--line);background:var(--surface);padding:8px 12px}
}
@media (max-width:760px){
  .pos2,:root[data-ticket="left"] .pos2{grid-template-columns:1fr}
  .pos-cats,.pos-main,.pos2 .ticket,:root[data-ticket="left"] .pos2 .pos-cats,:root[data-ticket="left"] .pos2 .pos-main,:root[data-ticket="left"] .pos2 .ticket{grid-column:1;grid-row:auto}
  .pos2 .ticket{position:static;max-height:none}
  .m2:not(.list){grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ---------- v2.1: printing, service mode ---------- */
.pl-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:start}
.pl-toggles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:2px 12px;margin-bottom:10px}
.pl-paper{background:repeating-linear-gradient(0deg,var(--bg2,var(--bg)) 0 2px,transparent 2px 4px);padding:14px;border-radius:12px;display:flex;justify-content:center;max-height:70vh;overflow:auto}
.pl-paper .ticketprev{background:#fff;color:#111;border:0;box-shadow:0 6px 24px rgba(0,0,0,.18);border-radius:2px;font-family:"Courier New",monospace;width:100%}
.pl-paper .ticketprev.p80{max-width:310px}.pl-paper .ticketprev.p58{max-width:220px;font-size:.74em}
.pl-paper .ticketprev hr{border-top-color:#888}.pl-paper .ticketprev .big{font-size:1.3em}.pl-paper .ticketprev .b{font-weight:700}.pl-paper .ticketprev .center{text-align:center}.pl-paper .ticketprev .right{text-align:right}
.pl-paper .ticketprev img{max-width:60%;max-height:60px;display:block;margin:0 auto 4px}
@media (max-width:900px){.pl-grid{grid-template-columns:1fr}}
.svc-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.svc{display:flex;flex-direction:column;gap:4px;text-align:left;padding:14px;border-radius:14px;border:1.5px solid var(--line);background:var(--card);cursor:pointer;color:inherit;font:inherit}
.svc.on{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.svc b{font-size:1.02em}
.toast.act{display:flex;gap:14px;align-items:center}.toast.act .linkbtn{color:inherit;text-decoration:underline;font-weight:700}
.printrow{gap:8px;flex-wrap:wrap}.printrow .btn{flex:1 1 160px}
.tbl.notbl{border-style:dashed}
.codebox{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px;font-family:var(--font-num);font-size:.85em;margin:8px 0}
/* ---------- v2.1: stock transfers, kitchen issue, production ---------- */
.lines-ed{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.le-row{display:grid;grid-template-columns:minmax(0,1fr) 130px 120px 34px;gap:8px;align-items:center}
.le-row select,.le-q input{width:100%;min-height:40px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:inherit;padding:0 10px;font:inherit}
.le-q{display:flex;align-items:center;gap:6px}.le-have{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){.le-row{grid-template-columns:minmax(0,1fr) 110px 34px}.le-have{display:none}}
.iconbtn{border:0;background:transparent;color:var(--muted);width:34px;height:34px;border-radius:8px;cursor:pointer}.iconbtn:hover{background:var(--bg);color:var(--bad)}
.num.neg,td.neg{color:var(--bad)}.num.pos,td.pos{color:var(--ok)}
.pboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:860px){.pboard{grid-template-columns:1fr}}
.pcol{background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:8px;display:flex;flex-direction:column;gap:8px;min-height:120px}
.pcol-h{font-weight:700;font-size:.85em;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:4px 6px;display:flex;justify-content:space-between}
.pcard{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;color:inherit;font:inherit}
.pcard.in_progress{border-left-color:var(--warn)}.pcard.done{border-left-color:var(--ok)}.pcard.planned{border-left-color:var(--accent)}
.pcard:hover{box-shadow:var(--shadow)}.pc-q{font-size:1.35em;font-weight:600}
ul.plain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.banner.ok{background:color-mix(in srgb,var(--ok) 12%,var(--surface));border-color:color-mix(in srgb,var(--ok) 40%,var(--line))}

/* ---------- v2.2: order screen — more dishes per row, cart on/off, sticky cart, cancel cart ---------- */
:root[data-tile="xs"]{--tile:108px}
:root[data-tile="xs"] .m2 .tile .so{display:none} :root[data-tile="xs"] .m2 .tile .body{padding:6px 8px 8px} :root[data-tile="xs"] .m2 .tile .nm{font-size:.86em}
:root[data-tile="xs"] .m2 .addplus{width:22px;height:22px;font-size:.95em} :root[data-tile="xs"] .price-tag{font-size:.76em;padding:2px 7px;left:5px;bottom:5px}
:root[data-tile="small"] .m2 .tile .so{display:none}
.pos2.nocart{grid-template-columns:172px minmax(0,1fr)} .pos2.nocart .ticket{display:none}
:root[data-ticket="left"] .pos2.nocart{grid-template-columns:172px minmax(0,1fr)}
.pos2 .view,.view:has(.pos2){max-width:none}
.view:has(.pos2){max-width:1800px}
.pos2 .ticket{position:sticky;top:12px;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}
.cart-toggle{position:relative;min-width:46px;justify-content:center}
.cart-toggle svg{width:20px;height:20px}
.cbadge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 5px;border-radius:99px;background:var(--accent);color:var(--accent-fg);font-size:.72em;font-weight:800;display:grid;place-items:center}
.t-go{display:flex;gap:8px} .t-go .grow{flex:1} .t-cancel{flex:none;width:52px;padding:0;justify-content:center;color:var(--bad)} .t-cancel svg{width:20px;height:20px}
.pos2.nocart~.fab{display:flex;position:fixed;right:20px;left:auto;bottom:20px;z-index:30;gap:14px;box-shadow:var(--shadow)}
@media (max-width:1300px){.pos2.nocart{grid-template-columns:minmax(0,1fr)} .pos2.nocart .pos-cats,.pos2.nocart .pos-main{grid-column:1}}
@media (max-width:1300px) and (min-width:761px){.pos2 .ticket{position:sticky;top:12px}}
/* right-to-left (Arabic) */
[dir="rtl"] .pcat[aria-pressed="true"]{box-shadow:inset -3px 0 0 var(--cc),0 1px 3px rgba(0,0,0,.07)}
[dir="rtl"] .price-tag{left:auto;right:8px} [dir="rtl"] .addplus{margin-left:0;margin-right:auto} [dir="rtl"] .cbadge{right:auto;left:-6px}
[dir="rtl"] .tcard,[dir="rtl"] .pcat,[dir="rtl"] .svc,[dir="rtl"] .pcard{text-align:right} [dir="rtl"] .tcard .chev{transform:scaleX(-1)}
[dir="rtl"] body{font-family:var(--font-ar,'Noto Kufi Arabic','Segoe UI',Tahoma,sans-serif),var(--font,system-ui)}
.lang-pick{display:inline-flex;align-items:center;gap:6px}.lang-pick svg{width:16px;height:16px;color:var(--muted)}
.lang-pick select{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:8px;padding:3px 6px;font:inherit;font-size:.9em}
/* accounting */
.acc-tabs{margin-bottom:12px}
.acc-type{font-size:.7em;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
table.t tr.grp td{background:var(--sunk);font-weight:700}
table.t tr.tot td{font-weight:800;border-top:2px solid var(--fg)}
.je-lines .je-row{display:grid;grid-template-columns:minmax(0,2fr) 120px 120px minmax(0,1.4fr) 34px;gap:8px;align-items:center;margin-bottom:6px}
.je-lines .je-row select,.je-lines .je-row input{width:100%;min-height:40px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:inherit;padding:0 10px;font:inherit}
@media (max-width:700px){.je-lines .je-row{grid-template-columns:1fr 1fr;}.je-lines .je-row select{grid-column:1/-1}}
.int-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.int-card{display:flex;flex-direction:column;gap:8px}
.int-logo{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-weight:800;color:#fff}

/* ---------- v2.2: rows view, promotions, language picker ---------- */
.m2.rows{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}
.m2.rows .tile{flex-direction:row;align-items:stretch;min-height:76px}
.m2.rows .tile .picwrap{width:76px;min-width:76px;aspect-ratio:auto;height:auto;border-radius:0}
.m2.rows .tile .picwrap .pic{height:100%;width:100%}
.m2.rows .tile .body{flex:1;flex-direction:row;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px}
.m2.rows .tile .nm{font-size:1.04em;font-weight:700}.m2.rows .tile .so{font-size:.8em}
.m2.rows .tile .ft{flex-direction:column;align-items:flex-end;gap:4px;margin:0}
.m2.rows .tile .pr{font-size:1.05em;font-weight:800}
:root[data-tile="small"] .m2.rows,:root[data-tile="xs"] .m2.rows{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
:root[data-tile="xs"] .m2.rows .tile{min-height:58px}:root[data-tile="xs"] .m2.rows .tile .picwrap{width:56px;min-width:56px}
:root[data-tile="large"] .m2.rows{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}:root[data-tile="large"] .m2.rows .tile{min-height:96px}:root[data-tile="large"] .m2.rows .tile .nm{font-size:1.2em}
.tile{position:relative}
.tile .offer{position:absolute;top:6px;left:6px;z-index:2;background:#d6336c;color:#fff;font-weight:800;font-size:.72em;padding:2px 7px;border-radius:99px;box-shadow:0 2px 6px rgba(0,0,0,.18)}
[dir="rtl"] .tile .offer{left:auto;right:6px}
.sum.promo{color:#d6336c;font-weight:600}.sum.promo span:first-child{display:flex;align-items:center;gap:6px;min-width:0}.sum.promo svg{width:16px;height:16px;flex:none}
.sum.promo small{font-weight:400;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.promo-code{display:flex;gap:6px;align-items:center;margin:4px 0}.promo-code .input{flex:1;min-height:36px;text-transform:uppercase}
.langpick{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;background:var(--surface)}
.langpick button{border:0;background:transparent;color:inherit;font:inherit;padding:6px 12px;border-radius:999px;cursor:pointer;font-weight:600}
.langpick button[aria-pressed="true"]{background:var(--accent);color:var(--accent-fg,#fff)}
.langpick.small button{padding:4px 10px;font-size:.88em}
[dir="rtl"] .rail,[dir="rtl"] .side{border-left:1px solid var(--line);border-right:0}
[dir="rtl"] .modal-h,[dir="rtl"] .row,[dir="rtl"] .vhead{direction:rtl}
[dir="rtl"] .num{direction:ltr;unicode-bidi:isolate}
[dir="rtl"] table.t th,[dir="rtl"] table.t td{text-align:right}[dir="rtl"] table.t .r{text-align:left}
/* ---------- v2.2: promotions, import, gateway builder, assistant ---------- */
.prm.off{opacity:.62}.prm-what{font-size:1.05em;font-weight:600}
.pf-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:2px 10px;max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px}
.pf-more summary{cursor:pointer;font-weight:600;padding:6px 0}
.imp-kinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}
.gw-row{display:grid;grid-template-columns:120px 1fr 1.4fr auto 34px;gap:6px;align-items:center;margin-bottom:6px}
.gw-row input{min-height:38px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:inherit;padding:0 9px;font:inherit;min-width:0}
@media (max-width:640px){.gw-row{grid-template-columns:1fr 1fr}.gw-row input[data-fv]{grid-column:1/-1}}
.gw-box{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}
table.t.je tr.sub td{border-top:0;padding-top:2px}table.t.je tr.first td{border-top:1px solid var(--line)}
.ai-tip{display:grid;grid-template-columns:1fr auto;gap:2px 12px;align-items:center;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--surface);border-left:5px solid var(--accent)}
.ai-tip b{grid-column:1}.ai-tip span{grid-column:1;color:var(--muted);font-size:.9em}.ai-tip>.btn{grid-column:2;grid-row:1/3}
.ai-tip.bad{border-left-color:var(--bad)}.ai-tip.warn{border-left-color:var(--warn)}.ai-tip.ok{border-left-color:var(--ok)}.ai-tip.info{border-left-color:var(--accent)}.ai-tip.done{opacity:.5}
[dir="rtl"] .ai-tip{border-left:1px solid var(--line);border-right:5px solid var(--accent)}
.ai-hint{display:flex;gap:8px;align-items:center;background:color-mix(in srgb,var(--accent) 10%,var(--surface));border-radius:10px;padding:6px 10px;margin:-2px 0 6px}.ai-hint svg{width:16px;height:16px;color:var(--accent);flex:none}
.ai-recipes{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin:10px 0}
.ai-rec{border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:6px}.ai-rec table.t td{padding:4px 6px}
.ai-chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:99px;padding:6px 12px;font:inherit;font-size:.88em;cursor:pointer}.chip:hover{border-color:var(--accent)}
.ai-answer{line-height:1.6}.ai-answer h3,.ai-answer h4{margin:10px 0 4px}.ai-list{margin:0;padding-left:18px;line-height:1.7}
.vhead h1 svg{width:26px;height:26px;vertical-align:-4px;margin-right:6px;color:var(--accent)}
.m2.rows .tile .qbubble{right:auto;left:6px;top:auto;bottom:6px}
.m2.rows .tile .offer{top:4px;left:4px}
[dir="rtl"] .m2.rows .tile .qbubble{left:auto;right:6px}

/* ---------- v2.3: cart that shows every item clearly ---------- */
.pos2 .ticket.t2{display:flex;flex-direction:column}
.pos2 .ticket.t2 .t-lines{overflow:visible;flex:none;min-height:0;padding:4px 10px}
.pos2 .ticket.tall{position:relative;top:auto;max-height:none}
.pos2 .ticket.tall .t-foot{position:sticky;bottom:0;background:var(--surface);z-index:3;box-shadow:0 -8px 18px -10px rgba(0,0,0,.18);border-radius:0 0 var(--r,16px) var(--r,16px)}
.t-count{display:inline-grid;place-items:center;min-width:26px;height:26px;padding:0 7px;border-radius:99px;background:var(--accent);color:var(--accent-fg,#fff);font-size:.62em;vertical-align:3px;margin-left:4px}
.t-sum{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:12px;padding:8px 12px;font:inherit;text-align:left;cursor:pointer}
.t-sum svg{width:20px;height:20px;color:var(--accent);flex:none}.t-sum span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;font-size:.92em}
.t-sum b{color:var(--accent);font-size:.82em}.t-sum.need{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--surface))}
.line.l3{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 2px;border-bottom:1px solid var(--line)}
.line.l3:last-child{border-bottom:0}
.line.l3 .lmid{display:flex;flex-direction:column;align-items:flex-start;border:0;background:transparent;color:inherit;font:inherit;text-align:left;padding:0;cursor:pointer;min-width:0}
.line.l3 .ln{font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.line.l3 .lo{font-size:.78em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.line.l3 .lt{min-width:58px;font-weight:700}
.line.l3 .qty{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.line.l3 .qty button{width:30px;height:32px;border:0;background:var(--bg);color:var(--fg);font-size:1.1em;cursor:pointer}
.line.l3 .qty span{min-width:26px;text-align:center;font-weight:700}
.ticket.dense .line.l3{padding:4px 2px}.ticket.dense .line.l3 .qty button{height:28px;width:28px}.ticket.dense .line.l3 .lo{display:none}
.ticket.dense2 .line.l3{padding:3px 0;font-size:.9em}.ticket.dense2 .line.l3 .qty button{height:26px;width:26px}.ticket.dense2 .line.l3 .lo{display:none}.ticket.dense2 .line.l3 .ln{-webkit-line-clamp:1}
[dir="rtl"] .line.l3 .lmid,[dir="rtl"] .t-sum{text-align:right}
.cart-full{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px 24px;font-size:1.15em}
.cf-line{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:8px 0;border-bottom:1px dashed var(--line)}
.cf-q{font-weight:800;color:var(--accent)}.cf-n{font-weight:600}.cf-n small{display:block;font-weight:400;color:var(--muted);font-size:.78em}
.cf-tot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:14px 16px;border-radius:14px;background:var(--sunk);font-size:1.1em}.cf-tot b{font-size:1.6em}
.tb-lang{gap:4px}.tb-lang svg{width:16px;height:16px}.tb-lang span{font-weight:800;font-size:.8em}
/* ---------- v2.3 login screen designs ---------- */
.login.lg-center,.login.lg-image,.login.lg-minimal{display:flex;flex-direction:column;align-items:stretch;justify-content:center}
.lg-main{width:100%;display:flex;flex-direction:column;align-items:center;gap:14px}
.lg-pos-left:not(.lg-split) .lg-main{align-items:flex-start;padding-inline-start:5vw}
.lg-pos-right:not(.lg-split) .lg-main{align-items:flex-end;padding-inline-end:5vw}
.lg-welcome{text-align:center;max-width:520px}
.lg-pos-left .lg-welcome{text-align:start}.lg-pos-right .lg-welcome{text-align:end}
.lg-welcome h2{font-size:2.1em;font-weight:800;line-height:1.15;margin:0}
.lg-welcome p{margin:6px 0 0;opacity:.88;font-size:1.05em}
.login.has-bg:not(.lg-split) .lg-welcome,.login.has-bg:not(.lg-split) .lg-foot{color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.45)}
.lg-foot{font-size:.85em;opacity:.85;text-align:center;max-width:440px}
.lg-minimal:not(.has-bg){background:var(--surface)}
.lg-minimal .login-card{box-shadow:none;border-color:transparent;background:transparent}
.lg-minimal.has-bg .login-card{background:transparent;color:#fff}.lg-minimal.has-bg .login-card .muted{color:rgba(255,255,255,.8)}
.lg-card-dark .login-card{--surface:#121816;--bg:#1b2320;--sunk:#1b2320;--fg:#eef2f0;--muted:#a9b5b0;--line:#33403b;background:var(--surface);color:var(--fg);border-color:#26302c}
.lg-card-dark .login-card input,.lg-card-dark .login-card select{background:var(--bg);color:var(--fg);border-color:var(--line)}
.lg-card-dark .login-card .seg button[aria-pressed="true"]{background:#2a3632;color:#fff}
.lg-split.lg-card-dark .lg-main{background:#0b100e}
.lg-card-glass .login-card{background:color-mix(in srgb,var(--surface) 60%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-color:rgba(255,255,255,.4)}
.login[style*="--lg-btn"] .login-card .btn:not(.ghost):not(.linkbtn){background:var(--lg-btn);border-color:var(--lg-btn);color:#fff}
.lg-logo-s .login-brand .logo{width:38px;height:38px;border-radius:10px}
.lg-logo-l .login-brand .logo{width:72px;height:72px}
.lg-logo-xl .login-brand{flex-direction:column;text-align:center}.lg-logo-xl .login-brand .logo{width:110px;height:110px;border-radius:22px}
.lg-biglogo{object-fit:contain;border-radius:18px;background:rgba(255,255,255,.92);padding:8px;box-shadow:0 6px 20px rgba(0,0,0,.18)}
.lg-biglogo.lg-s{width:56px;height:56px}.lg-biglogo.lg-m{width:84px;height:84px}.lg-biglogo.lg-l{width:120px;height:120px}.lg-biglogo.lg-xl{width:160px;height:160px}
.login.lg-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(380px,1fr);padding:0;place-items:stretch}
.lg-split .lg-side{display:flex;flex-direction:column;padding:48px;color:#fff;min-height:100%}
.lg-split.lg-pos-left .lg-side{order:2}
.lg-split .lg-hero{margin:auto 0}
.lg-hero h2{font-size:2.5em;font-weight:800;line-height:1.1;margin:16px 0 8px;text-shadow:0 2px 8px rgba(0,0,0,.35)}
.lg-hero p{font-size:1.15em;opacity:.92;margin:0;text-shadow:0 1px 4px rgba(0,0,0,.35)}
.lg-sfoot{font-size:.9em;opacity:.85}
.lg-split .lg-main{justify-content:center;padding:32px 24px;background:var(--bg)}
.lg-split.lg-card-dark .lg-main{background:#0b100e}
@media (max-width:760px){.login.lg-split{grid-template-columns:1fr;grid-template-rows:auto 1fr}.lg-split .lg-side{order:0!important;min-height:0;padding:22px}.lg-hero h2{font-size:1.6em;margin-top:8px}.lg-sfoot{display:none}
  .lg-biglogo.lg-l,.lg-biglogo.lg-xl{width:84px;height:84px}.lg-pos-left:not(.lg-split) .lg-main,.lg-pos-right:not(.lg-split) .lg-main{align-items:center;padding-inline:0}.lg-welcome h2{font-size:1.6em}}
/* designer */
.lgd-side{position:sticky;top:12px}
.lgd-lay{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.lgd-opt{display:flex;flex-direction:column;gap:6px;align-items:center;padding:10px;border:2px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;font:inherit;font-size:.85em;color:inherit}
.lgd-opt.on{border-color:var(--accent);background:var(--accent-soft)}
.lgd-mini{display:block;width:84px;height:54px;border-radius:6px;position:relative;background:var(--bg);border:1px solid var(--line);overflow:hidden}
.lgd-mini i{position:absolute;inset:0}.lgd-mini b{position:absolute;width:30px;height:24px;top:15px;left:27px;background:var(--surface);border:1px solid var(--line);border-radius:4px}
.lgm-image i{background:linear-gradient(135deg,#6a8c7f,#2d4a40)}.lgm-image b{background:rgba(255,255,255,.7)}
.lgm-split i{right:50%;background:linear-gradient(135deg,var(--accent),#2d4a40)}.lgm-split b{left:50px}
.lgm-minimal i{background:var(--surface)}.lgm-minimal b{border-color:transparent;box-shadow:inset 0 -2px 0 var(--line)}
.lgd-prev{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg);margin-inline:auto;width:100%}
.lgd-prev.dev-phone{max-width:300px}
.lg-preview{min-height:0!important;height:460px;font-size:10.5px;pointer-events:none;overflow:hidden;padding:12px}
.dev-phone .lg-preview{height:540px}
.lg-preview .login-card{max-width:270px;padding:14px;border-radius:14px}
.lg-preview .login-brand{margin-bottom:10px}
.lg-preview .btn.big{padding:8px;font-size:1em}
.lg-preview.lg-split{padding:0}.lg-preview .lg-side{padding:18px}.lg-preview .lg-hero h2{font-size:1.9em}
.dev-phone .lg-preview.lg-split{grid-template-columns:1fr;grid-template-rows:auto 1fr}.dev-phone .lg-preview .lg-side{order:0;padding:14px}.dev-phone .lg-preview .lg-sfoot{display:none}
.dev-phone .lg-preview .lg-main{align-items:center!important;padding-inline:0!important}
.lgd-dots{display:flex;gap:10px;justify-content:center;padding:6px}.lgd-dots i{width:12px;height:12px;border-radius:50%;border:2px solid var(--accent)}
/* ---------- v2.3 business type, products ---------- */
.biz-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.biz-opt{display:flex;gap:12px;align-items:center;text-align:start;padding:14px;border:2px solid var(--line);border-radius:14px;background:var(--surface);cursor:pointer;font:inherit;color:inherit}
.biz-opt svg{width:30px;height:30px;flex:none;color:var(--accent)}
.biz-opt span{display:flex;flex-direction:column;gap:2px;flex:1}.biz-opt small{color:var(--muted);font-size:.85em}
.biz-opt.on{border-color:var(--accent);background:var(--accent-soft)}
.prod-tbl tbody tr{cursor:pointer}.prod-tbl tbody tr:hover{background:var(--accent-soft)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}
#tHold{flex:none}
/* compact cart footer when there are many lines: more room for the dishes, no inner scrolling */
.t-chips{display:flex;gap:6px;flex-wrap:wrap}
.t-chips .chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;cursor:pointer;font:inherit;font-size:.85em}
.t-chips .chip svg{width:15px;height:15px;flex:none}.t-chips .chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.t-chips .chip.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.t-chips .chip.bad{border-color:var(--bad);color:var(--bad)}
.ticket.cfoot .t-foot{gap:6px;padding-top:8px}.ticket.cfoot .sums{padding:8px 12px}.ticket.cfoot .sum.total{font-size:1.25em}
.ticket.tall .line.l3{scroll-margin-bottom:var(--tfoot-h,240px);scroll-margin-top:12px}
.ticket.dense2 .line.l3{padding:2px 0;gap:6px}.ticket.dense2 .line.l3 .qty button{height:24px;width:26px;font-size:1em}.ticket.dense2 .line.l3 .qty span{min-width:22px}
.ticket.dense2 .t-head{gap:6px}.ticket.dense2 .t-top h2{font-size:1.15em}
.ticket.dense3 .line.l3{padding:1px 0;gap:6px;font-size:.84em}.ticket.dense3 .line.l3 .qty button{height:22px;width:24px;font-size:.95em}.ticket.dense3 .line.l3 .qty span{min-width:20px}.ticket.dense3 .line.l3 .lo{display:none}.ticket.dense3 .line.l3 .ln{-webkit-line-clamp:1}
.ticket.dense3 .t-head{gap:6px}.ticket.dense3 .t-top h2{font-size:1.1em}.ticket.dense3 .t-kick{display:none}
[dir="rtl"] .m2.rows .tile .offer{left:auto;right:4px}
.t-lines .line.hid{display:none}
.t-more{display:flex;align-items:center;gap:8px;width:100%;margin:4px 0 2px;padding:7px 10px;border:1px dashed var(--accent);border-radius:10px;background:var(--accent-soft);color:var(--accent);font:inherit;font-size:.85em;font-weight:700;cursor:pointer;text-align:start}
.t-more svg{width:16px;height:16px;flex:none}
/* field checks */
.is-bad{border-color:var(--bad)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--bad) 18%,transparent)!important}
.field-err{display:block;color:var(--bad);font-size:.8em;font-weight:600;margin-top:3px}
.free-offer{display:flex;gap:8px;align-items:center;width:100%;padding:8px 10px;border:1px dashed #d6336c;border-radius:10px;background:color-mix(in srgb,#d6336c 9%,var(--surface));color:inherit;font:inherit;font-size:.86em;text-align:start;cursor:pointer}
.free-offer svg{width:18px;height:18px;color:#d6336c;flex:none}
/* audit trail */
.au-ev{background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.au-ev.bad{border-inline-start:4px solid var(--bad)}
.au-head{display:flex;gap:14px;align-items:flex-start;width:100%;padding:10px 14px;border:0;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer}
.au-head:hover{background:var(--sunk)}
.au-time{display:flex;flex-direction:column;min-width:70px}.au-time small{color:var(--muted);font-size:.78em}
.au-main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.au-main small{color:var(--muted);font-size:.8em}
.au-sum{font-size:.86em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.au-head[aria-expanded="true"] .chev{transform:rotate(90deg)}
.au-body{padding:4px 14px 14px;display:flex;flex-direction:column;gap:10px;border-top:1px dashed var(--line)}
.au-ch{display:flex;flex-direction:column;gap:6px}
.au-t td{vertical-align:top;font-size:.9em}.au-t td:first-child{color:var(--muted);white-space:nowrap}
.au-b{background:color-mix(in srgb,var(--bad) 7%,transparent)}.au-a{background:color-mix(in srgb,var(--ok) 9%,transparent)}
.au-json{font-size:.8em;word-break:break-all}
@media print{.au .card#auF,.au-head .chev{display:none}.au-body{display:flex!important}}
.al-row{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}.al-row:last-child{border-bottom:0}
/* user manual */
.mn{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start}
.mn-toc{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;display:flex;flex-direction:column;gap:8px;padding:12px}
.mn-g{font-size:.72em;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:10px 4px 2px}
.mn-l{display:block;width:100%;text-align:start;border:0;background:transparent;color:inherit;font:inherit;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:.92em}
.mn-l:hover{background:var(--sunk)}.mn-l[aria-current="true"]{background:var(--accent-soft);color:var(--accent);font-weight:700}.mn-l.dim{opacity:.6}
.mn-page{padding:22px 26px;line-height:1.6}.mn-page h2{font-size:1.6em;margin:0}.mn-kick{font-size:.75em;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.mn-body h4{margin:16px 0 4px;font-size:1.05em}.mn-body ol,.mn-body ul{padding-inline-start:22px}.mn-body li{margin:3px 0}.mn-body table{margin:8px 0;width:100%}
.mn-tip,.mn-warn{border-radius:10px;padding:10px 12px;margin:10px 0;background:var(--accent-soft)}.mn-warn{background:color-mix(in srgb,var(--warn) 14%,var(--surface))}
.mn-body mark{background:color-mix(in srgb,var(--spice) 40%,transparent);color:inherit;border-radius:3px}
.mn-nav{margin-top:20px;border-top:1px solid var(--line);padding-top:12px}
.mn-printall{display:none}
@media (max-width:900px){.mn{grid-template-columns:1fr}.mn-toc{position:static;max-height:260px}}
@media print{body.printing-manual>*:not(.mn-printall){display:none!important}body.printing-manual .mn-printall{display:block;color:#000;font-size:11pt;line-height:1.5}
  .mn-printall section{break-inside:avoid-page;margin-bottom:16px}.mn-printall h2{border-bottom:2px solid #333;padding-bottom:4px}.mn-printall table{border-collapse:collapse;width:100%}.mn-printall td,.mn-printall th{border:1px solid #999;padding:4px 6px;text-align:start}
  .mn-printall .mn-tip,.mn-printall .mn-warn{border:1px solid #999;padding:6px 8px}}
.net-card h3{display:flex;align-items:center;gap:8px}.net-card h3 svg{width:20px;height:20px;color:var(--accent)}
.net-url{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.net-url code{font-size:1.05em;font-weight:700;padding:6px 10px;background:var(--sunk);border-radius:8px}
.net-steps{margin:0;padding-inline-start:20px}
.ticketprev:has(.mqt){background:#fff;color:#000;font-family:Arial,sans-serif}
/* restaurant-only and shop-only parts of a screen */
:root[data-biz="retail"] .only-rest{display:none!important}
:root:not([data-biz="retail"]) .only-shop{display:none!important}
:root:not([data-biz="hotel"]) .only-hotel{display:none!important}
:root[data-biz="hotel"] .not-hotel{display:none!important}
/* units guide on the ingredient and product forms */
.ig-guide{background:var(--surface);border-left:4px solid var(--accent);border-radius:8px;padding:8px 10px;line-height:1.45}
.ig-guide ol li{margin:2px 0}
/* name suggestions under the name field */
.ac-wrap{position:relative}
.ac-list{position:absolute;left:0;right:0;top:100%;z-index:30;margin-top:4px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:320px;overflow:auto;padding:4px}
.ac-item{display:flex;gap:8px;align-items:center;width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:8px 10px;cursor:pointer;color:var(--fg);font:inherit}
.ac-item small{display:block;margin-top:1px}
.ac-item:hover,.ac-item.on{background:var(--sunk)}
.ac-note{padding:6px 10px}
/* pictures on the product form */
.pf-pic{width:120px;height:90px;border-radius:10px;overflow:hidden;flex:none;display:block}
.pf-pic .pic{width:100%;height:100%;object-fit:cover;display:flex;align-items:center;justify-content:center}
.pic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}
.pic-grid button{padding:0;border:2px solid transparent;border-radius:10px;overflow:hidden;background:var(--surface);aspect-ratio:4/3;cursor:pointer}
.pic-grid button.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.pic-grid img{width:100%;height:100%;object-fit:cover;display:block}
/* menu settings: bigger dish pictures */
.mi-pic{display:block;width:72px;height:54px;border-radius:8px;overflow:hidden}
.mi-pic .pic{width:100%;height:100%;object-fit:cover;display:flex;align-items:center;justify-content:center}
.mi-pic .pic svg{width:100%;height:100%}
.pf-pic .pic svg,.pic-grid button svg{width:100%;height:100%}
/* receipt and bill window: WhatsApp on its own line, the other buttons share the next one */
.share-row{display:grid;gap:8px}
.share-row .btn.wa{width:100%}
.share-row .share-more{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px}
/* buttons that grow never cut their own words */
.mbody .row>.btn.grow{flex:1 1 auto;min-width:max-content}
.btn.wa svg{width:18px;height:18px;flex:none}
/* phone top bar: icons only, nothing pushed off the screen */
@media (max-width:480px){.topbar{gap:6px}.tb-right{gap:5px;flex:none}.tb-branch span,.tb-lang span{display:none}.tb-branch,.tb-chip{padding:6px 8px}.tb-branch{max-width:none}.tb-title{flex:1;min-width:0}.tb-crumb{display:none}}
.nowrap{white-space:nowrap}
.act-row{justify-content:flex-end;flex-wrap:nowrap}
@media (max-width:600px){.act-row .btn.wa span{display:none}.act-row .btn.wa{padding:6px 10px}}
/* segment switches never push the page wider than the screen: they scroll sideways instead */
.seg{max-width:100%;overflow-x:auto;scrollbar-width:none} .seg::-webkit-scrollbar{display:none}
@media (max-width:600px){.seg button{flex:1 0 auto;white-space:nowrap}}
/* subscription features (Licence page and provider portal) */
.feat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.feat-list{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:5px}
.feat-list li{display:flex;gap:8px;align-items:baseline;font-size:.93em}
.feat-list li::before{content:"✓";font-weight:800;color:var(--ok);flex:none}
.feat-list li.no{color:var(--muted)} .feat-list li.no::before{content:"–";color:var(--muted)}
.feat-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:6px 14px}
.feat-pick .check{align-items:flex-start} .feat-pick small{display:block;color:var(--muted);font-weight:400}
.feat-pick .check.inplan{opacity:.75}
/* how to pay the provider: mobile number, merchant, bank account */
.pay-item .pw-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:3px 0;border-bottom:1px dashed var(--line)}
.pay-item .pw-line span{min-width:120px}
.pay-item .pw-line b{flex:1;min-width:0;overflow-wrap:anywhere}
.pay-item.pw-bank{border-left:4px solid var(--accent)}
/* PIN: logs in by itself, alert on a wrong PIN */
.pin-alert{margin:-4px 0 10px;padding:8px 12px;border-radius:10px;background:var(--bad-soft);color:var(--bad);font-weight:600;text-align:center}
.pin-dots.shake{animation:pinShake .45s}
.pin-dots.shake i{border-color:var(--bad)}
.pin-dots.wait{opacity:.55}
@keyframes pinShake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-9px)}40%,80%{transform:translateX(9px)}}
/* Names in the menu (Interface & navigation) */
.nn-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,460px),1fr));gap:10px}
.nn-mod{border:1px solid var(--line);border-radius:12px;padding:6px 10px;display:flex;flex-direction:column}
.nn-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:center;padding:4px 0}
.nn-row+.nn-row{border-top:1px dashed var(--line)}
.nn-row.nn-head .nn-std{font-weight:700}
.nn-std{display:flex;align-items:center;gap:6px;min-width:0}
.nn-std>span:not(.pill){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nn-std svg,.nn-std .si svg{width:16px;height:16px;flex:none}
.nn-row .input{min-height:36px;padding:6px 10px}
.nn-row .input.nn-new{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}
.pill.warn{background:var(--warn-soft);color:var(--warn)}
/* ---------------------------------------------------------------- hotel */
.hk-kpis .kpi2{min-height:84px;text-align:left;cursor:pointer;font:inherit;color:inherit}
.hk-kpis .kpi2[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.hk-kpis .kpi2 .s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:6px}
.room-tile{--rc:var(--ok);position:relative;display:flex;flex-direction:column;gap:2px;text-align:left;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--rc);border-radius:12px;padding:10px 12px;min-height:116px;cursor:pointer}
.room-tile:hover{box-shadow:var(--shadow)}
.room-tile.st-occupied{--rc:#2f6f8f}
.room-tile.st-leaving{--rc:var(--warn)}
.room-tile.st-arriving{--rc:#8a5cc7}
.room-tile.st-repair{--rc:var(--muted);background:var(--sunk)}
.room-tile .rt-top{display:flex;justify-content:space-between;align-items:center;gap:6px}
.room-tile .rt-no{font-size:1.35em;letter-spacing:-.01em;display:flex;align-items:center;gap:4px}
.room-tile .rt-no svg{width:18px;height:18px}
.room-tile .rt-state{font-size:.7em;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--rc);white-space:nowrap}
.room-tile .rt-guest{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.room-tile .rt-due{color:var(--bad);font-weight:600}
.room-tile .rt-paid{color:var(--ok)}
.room-tile .rt-hk{margin-top:auto;padding-top:4px}
.room-tile .rt-hk .pill{font-size:.68em}
.room-tile.hk-dirty:not(.st-occupied):not(.st-leaving){background:color-mix(in srgb,var(--bad-soft) 45%,var(--surface))}
.hd-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.lg{display:inline-block;width:10px;height:10px;border-radius:3px;margin-left:6px;vertical-align:-1px}
.lg.free{background:var(--ok)}.lg.occupied{background:#2f6f8f}.lg.arriving{background:#8a5cc7}.lg.leaving{background:var(--warn)}.lg.repair{background:var(--muted)}.lg.out{background:var(--line)}
.stay-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 14px}
.stay-facts>div{display:flex;flex-direction:column;min-width:0}
.stay-facts b{font-weight:600;overflow-wrap:anywhere}
.ct-list{max-height:52vh;overflow:auto;display:flex;flex-direction:column}
.ct-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}
.qty-ctl{display:flex;align-items:center;gap:8px}.qty-ctl b{min-width:22px;text-align:center}
/* calendar */
.cal-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.cal{min-width:calc(130px + var(--days) * 46px)}
.cal-row{display:grid;grid-template-columns:130px 1fr;border-bottom:1px solid var(--line);min-height:44px}
.cal-row:last-child{border-bottom:0}
.cal-room{position:sticky;left:0;z-index:2;background:var(--surface);padding:6px 10px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--line);min-width:0}
.cal-room small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-days{position:relative;display:grid;grid-template-columns:repeat(var(--days),1fr)}
.cal-head .cal-day{text-align:center;padding:4px 0;display:flex;flex-direction:column;font-size:.85em}
.cal-head .cal-day small{color:var(--muted);font-size:.78em}
.cal-day.we,.cal-cell.we{background:color-mix(in srgb,var(--sunk) 50%,transparent)}
.cal-day.today{color:var(--accent);font-weight:700}
.cal-cell{border-left:1px solid color-mix(in srgb,var(--line) 60%,transparent);cursor:pointer}
.cal-cell.today{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.cal-cell:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.cal-bar{position:absolute;top:7px;bottom:7px;border-radius:7px;border:0;font:inherit;font-size:.78em;font-weight:600;color:#fff;padding:0 8px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;background:#8a5cc7;z-index:1}
.cal-bar.st-in{background:#2f6f8f}
.cal-bar.st-out{background:var(--line);color:var(--fg)}
.cal-legend{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:8px}
/* housekeeping */
.hk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.hk-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:6px;border-top:5px solid var(--ok)}
.hk-card.hk-dirty{border-top-color:var(--bad)}.hk-card.hk-inspect{border-top-color:var(--warn)}.hk-card.hk-repair{border-top-color:var(--muted)}
.hk-no{font-size:1.5em}
.hk-btns{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
.hk-btns .btn{flex:1 1 auto;min-height:44px}
@media (max-width:480px){.room-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-row{grid-template-columns:84px 1fr}.cal{min-width:calc(84px + var(--days) * 40px)}.hd-legend{display:none}}
.t td b svg{width:16px;height:16px;vertical-align:-3px;margin-right:4px}
@media (max-width:480px){.hk-kpis{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hk-kpis .kpi2{min-height:0;padding:8px 10px}.hk-kpis .kpi2 .v{font-size:1.25em}.hk-kpis .kpi2 .k{font-size:.62em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hk-kpis .kpi2 .s{display:none}}
.filters .chips{max-width:100%;min-width:0}
.room-tile .rt-no{white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}.room-tile .rt-top{min-width:0}.room-tile .rt-state{flex:none}
.room-tile .rt-no svg{flex:none}
.room-tile .rt-top{flex-wrap:wrap;row-gap:0}.room-tile .rt-no{overflow:visible}
