:root{--canvas:#EFE9DC;--canvas-2:#E9E1CB;--tile:#FFFDF7;--tile-2:#FBF6E9;--green:#173F35;--green-2:#1E4D40;--green-deep:#0F2D26;--on-green:#F5EFE2;--on-green-dim:rgba(255,253,247,.72);--on-green-faint:rgba(255,253,247,.45);--gold:#FFD98A;--gold-ink:#173F35;--gold-soft:rgba(255,217,138,.16);--amber:#E8A33D;--amber-area:#FBEBCE;--amber-soft:#FCE9BE;--ink:#23201A;--label:#9A917C;--sub:#8A8271;--line:#EAE2CF;--line-2:#DCD2B4;--ok:#0C6B4F;--ok-ink:#0C6B4F;--ok-soft:#DFF5EA;--live:#7FE3B0;--bad:#D84E2B;--bad-soft:#FFE3D3;--green-soft:rgba(23,63,53,.08);--radius:24px;--radius-md:16px;--radius-sm:12px;--radius-pill:999px;--shadow:0 10px 24px -14px rgba(80,64,25,.18);--shadow-lg:0 20px 34px -16px rgba(80,64,25,.28);--shadow-green:0 12px 30px rgba(23,63,53,.35);--font:'Manrope',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--font-display:'Sora','Manrope',system-ui,sans-serif;--font-mono:'Space Mono',ui-monospace,'Courier New',monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font);background:var(--canvas);color:var(--ink);font-size:15px;line-height:1.55;font-weight:500;-webkit-font-smoothing:antialiased}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.15;margin:0;color:var(--ink)}img{max-width:100%}.ic{flex-shrink:0;vertical-align:-4px}::selection{background:var(--gold);color:var(--gold-ink)}.app-shell{display:flex;min-height:100vh}.sidebar{width:252px;flex:0 0 252px;background:var(--green);color:var(--on-green);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:hidden;z-index:40}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:20px 18px 18px}.brand-mark{width:46px;height:46px;border-radius:13px;background:var(--gold);color:var(--gold-ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:21px;flex-shrink:0}.monogram{width:46px;height:46px;border-radius:13px;background:var(--gold);color:var(--gold-ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:17px;letter-spacing:.5px;flex-shrink:0}.sidebar-brand .brand-name{font-family:var(--font-display);font-weight:700;font-size:15px;line-height:1.15;color:var(--on-green);letter-spacing:.2px}.sidebar-brand .brand-tag{font-size:10.5px;color:var(--gold);letter-spacing:1.4px;text-transform:uppercase;margin-top:3px;font-weight:700}.sidebar nav{padding:2px 12px 14px;flex:1;overflow-y:auto;min-height:0;scrollbar-width:thin;scrollbar-color:rgba(255,217,138,.35) transparent}.nav-label{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:#b9cfc4;padding:16px 10px 6px;font-weight:700}.sidebar .nav-item{display:flex;align-items:center;gap:11px;padding:6px 12px;border-radius:var(--radius-pill);color:var(--on-green-dim);font-size:14px;font-weight:600;margin-bottom:3px;transition:background .18s,color .18s,transform .12s;border:none}.sidebar .nav-item:hover{background:rgba(255,253,247,.08);color:var(--on-green);text-decoration:none}.sidebar .nav-item:active{transform:scale(.98)}.sidebar .nav-item.active{background:0 0;color:var(--gold);font-weight:700}.sidebar .nav-item .nav-icon{display:flex;align-items:center;justify-content:center;width:34px;height:26px;border-radius:9px;margin-left:-5px;flex-shrink:0;transition:background .18s ease,color .18s ease,transform .28s cubic-bezier(.34,1.56,.64,1)}.sidebar .nav-item.active .nav-icon{background:var(--gold);color:var(--gold-ink);transform:scale(1.07)}.sidebar .nav-item.active .nav-icon .ic{fill:rgba(23,63,53,.16)}.sidebar .nav-item .nav-badge{margin-left:auto;background:var(--gold);color:var(--gold-ink);font-size:11px;font-weight:800;padding:1px 8px;border-radius:var(--radius-pill);font-family:var(--font-display)}.sidebar-user{padding:14px 16px;border-top:1px solid rgba(255,253,247,.12);display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;border-radius:50%;background:var(--gold);color:var(--gold-ink);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex-shrink:0;font-family:var(--font-display)}.sidebar-user .u-name{font-size:13px;font-weight:700;color:var(--on-green);line-height:1.2}.sidebar-user .u-role{font-size:11px;color:var(--on-green-dim)}.logout-link{color:var(--on-green-dim);display:flex;padding:6px;border-radius:8px}.logout-link:hover{color:var(--gold);text-decoration:none}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;background:rgba(239,233,220,.88);backdrop-filter:blur(12px);padding:14px 20px;display:flex;align-items:center;gap:16px}.topbar h1{font-size:22px;font-weight:700;letter-spacing:-.3px}.topbar .topbar-sub{font-size:13px;color:var(--sub)}.topbar-actions{margin-left:auto;display:flex;gap:10px;align-items:center}.content{padding:18px 20px 48px;max-width:1440px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head h2{font-size:26px;font-weight:700;letter-spacing:-.4px}.page-head p{color:var(--sub);margin:4px 0 0;font-size:14px}.page-head .spacer{flex:1}.training-banner{background:var(--gold);color:var(--gold-ink);font-weight:700;font-size:13.5px;padding:10px 28px;display:flex;align-items:center;gap:10px;position:sticky;top:64px;z-index:25}.training-banner .spacer{flex:1}.practice-watermark{position:fixed;inset:0;pointer-events:none;z-index:200;display:flex;align-items:center;justify-content:center;overflow:hidden}.practice-watermark span{font-family:var(--font-display);font-weight:800;font-size:19vw;color:rgba(23,63,53,.045);transform:rotate(-18deg);letter-spacing:8px;white-space:nowrap}.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}.bento-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.bento-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.bento-2{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.tile{background:var(--tile);border:none;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);position:relative}.tile-dark,.tile-green,.tile-teal{background:var(--green);color:var(--on-green)}.tile-dark h3,.tile-green h3,.tile-teal h3{color:var(--on-green)}.tile-dark .tile-label,.tile-green .tile-label,.tile-teal .tile-label{color:var(--gold)}.tile-dark .tile-sub,.tile-green .tile-sub,.tile-teal .tile-sub{color:var(--on-green-dim)}.tile-amber{background:var(--amber-area)}.tile-label{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:800;color:var(--label)}.tile-value{font-family:var(--font-display);font-size:47px;font-weight:800;line-height:1.05;letter-spacing:-1px;margin:8px 0 4px;font-variant-numeric:tabular-nums}.tile-value.sm{font-size:32px}.tile-value.lg{font-size:54px}.tile-sub{font-size:13px;color:var(--sub)}.chip-ic,.tile-icon{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--green-soft);color:var(--green);flex-shrink:0}.chip-ic.gold,.tile-icon.gold{background:var(--gold-soft);color:#9a7414}.chip-ic.amber,.tile-icon.amber{background:var(--amber-soft);color:#b97e10}.chip-ic.red,.tile-icon.red{background:var(--bad-soft);color:var(--bad)}.chip-ic.green,.tile-icon.green{background:var(--ok-soft);color:var(--ok-ink)}.tile-dark .chip-ic,.tile-green .chip-ic,.tile-teal .chip-ic{background:rgba(255,217,138,.18);color:var(--gold)}.tile-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.tile-head h3{font-size:16px;font-weight:700}.tile-head .spacer{flex:1}.kpi-top{display:flex;align-items:center;gap:10px}.kpi-top .tile-label{flex:1}.kpi-num{font-family:var(--font-display);font-size:32px;font-weight:800;line-height:1.05;letter-spacing:-1px;margin:10px 0 4px;font-variant-numeric:tabular-nums}.kpi-sub{font-size:13px;color:var(--sub)}.delta{display:inline-flex;align-items:center;gap:3px;padding:2px 9px;border-radius:var(--radius-pill);font-size:11.5px;font-weight:800;font-family:var(--font-display)}.delta.up{background:var(--ok-soft);color:var(--ok-ink)}.delta.down{background:var(--bad-soft);color:var(--bad)}.tile-green .delta.up{background:rgba(127,227,176,.16);color:#7fe3b0}.tile-green .kpi-sub{color:var(--on-green-dim)}@keyframes tileIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.stagger>*{animation:tileIn .55s cubic-bezier(.22,1,.36,1) both}.stagger>:first-child{animation-delay:.02s}.stagger>:nth-child(2){animation-delay:.07s}.stagger>:nth-child(3){animation-delay:.12s}.stagger>:nth-child(4){animation-delay:.17s}.stagger>:nth-child(5){animation-delay:.22s}.stagger>:nth-child(6){animation-delay:.27s}.stagger>:nth-child(7){animation-delay:.32s}.stagger>:nth-child(8){animation-delay:.37s}.stagger>:nth-child(9){animation-delay:.42s}.stagger>:nth-child(10){animation-delay:.47s}.stagger>:nth-child(11){animation-delay:.52s}.stagger>:nth-child(12){animation-delay:.57s}.reveal{transition:opacity .5s ease,transform .5s cubic-bezier(.22,1,.36,1)}.reveal.armed{opacity:0;transform:translateY(12px)}.reveal.armed.visible{opacity:1;transform:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border-radius:var(--radius-sm);border:1px solid transparent;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;transition:transform .13s,background .15s,border-color .15s,color .15s,box-shadow .15s;white-space:nowrap;line-height:1.2;text-decoration:none!important;color:var(--ink);background:0 0}.btn:hover{transform:translateY(-1px)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.btn-primary{background:var(--green);color:var(--on-green);box-shadow:0 6px 18px rgba(23,63,53,.28)}.btn-primary:hover{background:var(--green-2)}.btn-gold{background:var(--gold);color:var(--gold-ink)}.btn-gold:hover{background:#ffce66}.btn-amber{background:var(--gold);color:var(--gold-ink)}.btn-amber:hover{background:#ffce66}.btn-dark{background:var(--green-deep);color:var(--on-green)}.btn-dark:hover{background:var(--green)}.btn-ghost,.btn-secondary{background:var(--tile);border-color:var(--line-2);color:var(--ink)}.btn-ghost:hover,.btn-secondary:hover{border-color:var(--green);color:var(--green);transform:translateY(-1px)}.btn-ghost{background:0 0}.btn-danger{background:var(--bad);color:#fff}.btn-danger:hover{background:#bc3a1e}.btn-success{background:var(--ok);color:#fff}.btn-sm{height:32px;padding:0 12px;font-size:13px;border-radius:10px}.btn-lg{height:48px;padding:0 24px;font-size:16px;border-radius:14px}.btn-block{width:100%}.btn.is-loading{pointer-events:none;opacity:.75}.btn.is-loading::after{content:'';width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.btn.is-success{background:var(--ok)!important;color:#fff!important}@keyframes spin{to{transform:rotate(360deg)}}.icon-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line-2);background:var(--tile);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;color:var(--ink);transition:border-color .15s,color .15s}.icon-btn:hover{border-color:var(--green);color:var(--green)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .full{grid-column:1/-1}.field label{display:block;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--label);margin-bottom:6px}.input,select.input,textarea.input{width:100%;padding:11px 14px;border:1.5px solid var(--line-2);border-radius:var(--radius-sm);background:var(--tile);font-family:var(--font);font-size:14px;color:var(--ink);outline:0;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(255,217,138,.55)}.input::placeholder{color:var(--label)}textarea.input{resize:vertical;min-height:80px}.input-lg{height:56px;font-size:15px;padding:0 16px}.help{font-size:12px;color:var(--sub);margin-top:4px}.switch{position:relative;width:48px;height:28px;flex-shrink:0;display:inline-block}.switch input{opacity:0;width:0;height:0;position:absolute}.switch .track{position:absolute;inset:0;background:var(--line-2);border-radius:var(--radius-pill);transition:.2s;cursor:pointer}.switch .track::after{content:'';position:absolute;width:22px;height:22px;border-radius:50%;background:var(--tile);top:3px;left:3px;transition:.2s;box-shadow:0 1px 4px rgba(35,32,26,.25)}.switch input:checked+.track{background:var(--green)}.switch input:checked+.track::after{transform:translateX(20px)}.switch input:focus-visible+.track{box-shadow:0 0 0 3px rgba(255,217,138,.65)}.search-wrap{position:relative}.search-wrap .ic{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--label);pointer-events:none}.search-wrap .input{padding-left:40px}.kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:11px;color:var(--sub);background:var(--canvas);border:1px solid var(--line-2);border-radius:6px;padding:1px 6px;pointer-events:none}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--label);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}table.data td.num,table.data th.num{text-align:right}table.data td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data tr:last-child td{border-bottom:none}table.data tr:hover td{background:var(--tile-2)}.num{font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.muted{color:var(--sub)}.small{font-size:12px}td.num,th.num{text-align:right}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;line-height:1.5;white-space:nowrap;background:var(--canvas);color:var(--ink)}.pill .dot{width:7px;height:7px}.pill-green{background:var(--ok-soft);color:var(--ok-ink)}.pill-gold{background:var(--gold-soft);color:#8a6d1f}.pill-amber{background:var(--amber-soft);color:#b97e10}.pill-red{background:var(--bad-soft);color:var(--bad)}.pill-grey{background:var(--canvas);color:var(--sub)}.pill-dark{background:var(--green);color:var(--on-green)}.pill-teal{background:var(--green-soft);color:var(--green)}.pill-blue{background:var(--green-soft);color:var(--green)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.dot-green{background:var(--ok)}.dot-live{background:var(--live)}.dot-red{background:var(--bad)}.dot-amber{background:var(--amber)}.dot-grey{background:#c9bfa4}.dot-gold{background:var(--gold)}.dot.pulse{animation:pulse 1.6s infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}.list-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:none}.list-row .lr-main{flex:1;min-width:0}.list-row .lr-title{font-weight:700;font-size:14px}.list-row .lr-meta{font-size:12.5px;color:var(--sub)}.progress{height:8px;background:var(--canvas-2);border-radius:var(--radius-pill);overflow:hidden}.progress-bar{height:100%;background:var(--amber);border-radius:var(--radius-pill);transition:width .6s ease}.progress-bar.green{background:var(--green)}.progress-bar.ok{background:var(--ok)}.empty{padding:36px 20px;text-align:center;color:var(--sub)}.empty .empty-icon{width:64px;height:64px;margin:0 auto 14px;border-radius:50%;background:var(--canvas);display:flex;align-items:center;justify-content:center;color:var(--green)}.empty h3{font-size:17px;margin-bottom:6px;color:var(--ink)}.empty p{font-size:14px;margin:0 0 16px}@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,#e9e2cc 25%,#f8f3e4 50%,#e9e2cc 75%);background-size:800px 100%;animation:shimmer 1.4s infinite;border-radius:10px}.skel-line{height:14px;margin-bottom:10px}.skel-tile{height:120px;border-radius:var(--radius)}#toast-wrap{position:fixed;bottom:22px;right:22px;z-index:999;display:flex;flex-direction:column;gap:10px}.toast{background:var(--green);color:var(--on-green);padding:13px 18px;border-radius:14px;box-shadow:var(--shadow-lg);font-size:14px;font-weight:600;display:flex;gap:10px;align-items:center;animation:toastIn .3s cubic-bezier(.22,1,.36,1);max-width:360px}.toast.success{background:var(--green-deep)}.toast.error{background:var(--bad)}.toast.amber{background:var(--gold);color:var(--gold-ink)}@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.alert{padding:14px 16px;border-radius:var(--radius-md);font-size:14px;display:flex;gap:10px;align-items:flex-start;margin-bottom:16px;font-weight:600}.alert-success{background:var(--ok-soft);color:#14532d}.alert-error{background:var(--bad-soft);color:#8c2b0e}.alert-info{background:var(--green-soft);color:var(--green)}.seg{display:flex;background:var(--canvas-2);border-radius:var(--radius-sm);padding:3px;gap:3px}.seg a,.seg button{flex:1;border:none;background:0 0;padding:8px 10px;border-radius:9px;font-weight:700;font-size:13px;cursor:pointer;font-family:var(--font);color:var(--sub);text-align:center;text-decoration:none;transition:all .15s}.seg a.active,.seg button.active{background:var(--tile);color:var(--ink);box-shadow:var(--shadow)}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tab{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:var(--radius-pill);border:1.5px solid var(--line-2);background:var(--tile);font-weight:700;font-size:13px;cursor:pointer;font-family:var(--font);color:var(--ink);transition:all .15s;text-decoration:none}.tab:hover{border-color:var(--green)}.tab.active{background:var(--green);color:var(--on-green);border-color:var(--green)}.tab .cnt{background:var(--canvas);color:var(--ink);font-size:11px;font-weight:800;padding:0 7px;border-radius:var(--radius-pill);font-family:var(--font-display)}.tab.active .cnt{background:var(--gold);color:var(--gold-ink)}.cat-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.cat-tab{padding:8px 16px;border-radius:var(--radius-pill);border:1.5px solid var(--line-2);background:var(--tile);font-weight:700;font-size:13px;cursor:pointer;font-family:var(--font);color:var(--ink);transition:all .15s}.cat-tab:hover{border-color:var(--green)}.cat-tab.active{background:var(--green);color:var(--on-green);border-color:var(--green)}.pos-layout{display:grid;grid-template-columns:1fr 392px;gap:14px;align-items:start}.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:14px}.menu-tile{background:var(--tile);border:none;border-radius:19px;padding:16px;cursor:pointer;transition:transform .15s,box-shadow .15s;text-align:left;font-family:var(--font);box-shadow:var(--shadow);width:100%}.menu-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.menu-tile:active{transform:scale(.97)}.menu-tile .mt-badge{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;margin-bottom:10px;font-family:var(--font-display);color:var(--green)}.menu-tile .mt-name{font-weight:700;font-size:14.5px;line-height:1.25;color:var(--ink)}.menu-tile .mt-price{color:var(--green);font-weight:800;font-size:15px;margin-top:4px;font-family:var(--font-display)}.menu-tile .mt-station{font-size:11px;color:var(--label);text-transform:uppercase;letter-spacing:.6px;font-weight:700}.cart-line{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);align-items:flex-start}.qty-ctrl{display:inline-flex;align-items:center;gap:2px;background:var(--canvas);border-radius:10px;padding:2px}.qty-btn{width:28px;height:28px;border:none;background:var(--tile);border-radius:8px;cursor:pointer;font-weight:800;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;color:var(--green);font-size:15px}.qty-val{min-width:28px;text-align:center;font-weight:800;font-family:var(--font-display)}.qty-chip{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:8px;background:var(--green);color:var(--on-green);font-family:var(--font-display);font-weight:800;font-size:12.5px}.bill-row{display:flex;justify-content:space-between;align-items:baseline;padding:5px 0;font-size:14px;gap:12px}.bill-row .amt{font-variant-numeric:tabular-nums;font-weight:700;text-align:right;white-space:nowrap}.bill-row.total{border-top:1px dashed var(--line-2);margin-top:8px;padding-top:12px;font-size:18px;font-weight:800;font-family:var(--font-display)}.pay-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pay-opt{border:1.5px solid var(--line-2);border-radius:var(--radius-sm);padding:10px;text-align:center;cursor:pointer;font-weight:700;font-size:13px;background:var(--tile);font-family:var(--font)}.pay-opt.active{border-color:var(--green);background:var(--green-soft);color:var(--green)}.easy-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}.easy-tile{background:var(--tile);border:none;border-radius:22px;padding:14px;cursor:pointer;text-align:left;font-family:var(--font);box-shadow:var(--shadow);transition:transform .13s}.easy-tile:active{transform:scale(.96)}.easy-tile .ez-photo{height:104px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;font-size:30px;color:var(--green);margin-bottom:10px;position:relative;overflow:hidden}.easy-tile .ez-name{font-weight:800;font-size:17px;line-height:1.2}.easy-tile .ez-ur{font-size:13px;color:var(--sub);font-weight:600}.easy-tile .ez-price{font-family:var(--font-display);font-weight:800;font-size:17px;color:var(--green);margin-top:5px}.easy-toggle{display:inline-flex;align-items:center;gap:9px;background:var(--tile);border:1.5px solid var(--line-2);border-radius:var(--radius-pill);padding:7px 14px 7px 9px;font-weight:700;font-size:13px;cursor:pointer;font-family:var(--font)}.easy-toggle .dot{width:9px;height:9px}.hall-title{font-size:12px;letter-spacing:1.4px;text-transform:uppercase;font-weight:800;color:var(--label);margin:28px 0 12px}.tables-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:14px}.table-tile{background:var(--tile);border:none;border-radius:20px;padding:18px;text-align:left;transition:transform .15s,box-shadow .15s;box-shadow:var(--shadow);font-family:var(--font);width:100%;cursor:pointer}button.table-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.table-tile .tt-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.table-tile .tt-name{font-family:var(--font-display);font-size:23px;font-weight:800}.table-tile .tt-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;letter-spacing:.4px;text-transform:uppercase}.table-tile .tt-meta{font-size:12.5px;color:var(--sub);margin-top:8px}.table-tile .tt-amount{font-family:var(--font-display);font-weight:800;font-size:16px;margin-top:6px}.elapsed-chip{display:inline-flex;align-items:center;gap:5px;background:var(--canvas);border-radius:var(--radius-pill);padding:2px 9px;font-family:var(--font-mono);font-size:11.5px;font-weight:700}.kds-board{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}.kds-col{background:var(--canvas-2);border-radius:20px;padding:12px;min-height:200px}.kds-col h3{font-size:12.5px;letter-spacing:.8px;text-transform:uppercase;display:flex;align-items:center;gap:8px;margin-bottom:12px;font-weight:800}.kds-card{background:var(--tile);border-radius:var(--radius-md);padding:16px;margin-bottom:10px;box-shadow:var(--shadow)}.kds-card .kc-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.kds-card .kc-order{font-family:var(--font-display);font-weight:800;font-size:15px}.kds-card .kc-item{display:flex;gap:9px;padding:4px 0;font-size:14px;align-items:baseline}.kds-card .kc-mod{font-size:12.5px;color:var(--sub);margin-left:33px}.timer{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:14px;padding:3px 9px;border-radius:8px;background:var(--ok-soft);color:var(--ok-ink)}.timer.amber{background:var(--amber-soft);color:#b97e10}.timer.red{background:var(--bad-soft);color:var(--bad);animation:pulse 1s infinite}.station-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;align-items:center}.modal-overlay{position:fixed;inset:0;background:rgba(23,63,53,.45);backdrop-filter:blur(3px);z-index:100;display:none;align-items:center;justify-content:center;padding:18px}.modal-overlay.open{display:flex}.modal{background:var(--tile);border-radius:var(--radius);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:tileIn .3s cubic-bezier(.22,1,.36,1)}.modal-head{padding:22px 24px 0;display:flex;align-items:flex-start;gap:12px}.modal-body{padding:16px 24px 24px}.modal-foot{padding:0 24px 24px;display:flex;gap:10px;justify-content:flex-end}.chip-check{display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border:1.5px solid var(--line-2);border-radius:var(--radius-pill);cursor:pointer;font-size:13px;font-weight:700;background:var(--tile);user-select:none;font-family:var(--font)}.chip-check input{display:none}.chip-check:has(input:checked){background:var(--green-soft);border-color:var(--green);color:var(--green)}.login-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-brand{background:var(--green);color:var(--on-green);padding:44px 48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-brand::after{content:'';position:absolute;width:480px;height:480px;border-radius:50%;background:rgba(255,217,138,.1);right:-170px;top:-170px}.login-brand .lb-top{position:relative;z-index:1}.login-brand .lb-bottom{position:relative;z-index:1}.login-brand h1{color:var(--on-green);font-size:40px;letter-spacing:-.5px;font-weight:800}.login-brand .lb-sub{color:var(--on-green-dim);max-width:430px;font-size:15px;margin-top:12px}.login-roles{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.login-roles span{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(255,253,247,.28);color:var(--on-green);border-radius:var(--radius-pill);padding:5px 13px;font-size:12.5px;font-weight:700}.login-form-side{display:flex;align-items:center;justify-content:center;padding:32px;background:var(--canvas)}.login-card{width:100%;max-width:400px;animation:tileIn .5s cubic-bezier(.22,1,.36,1)}.login-card h2{font-size:26px;font-weight:700}.field-ok{color:#15803d;font-size:12.5px;font-weight:700;display:none;align-items:center;gap:5px;margin-top:6px}.pin-row{display:flex;gap:10px;justify-content:center;margin:18px 0 6px}.pin-dot{width:52px;height:60px;border:1.5px solid var(--line-2);border-radius:14px;background:var(--tile);font-family:var(--font-mono);font-size:24px;font-weight:700;text-align:center;color:var(--ink)}.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:280px;margin:14px auto 0}.pin-key{height:54px;border-radius:14px;border:1.5px solid var(--line-2);background:var(--tile);font-family:var(--font-display);font-size:19px;font-weight:700;cursor:pointer;color:var(--ink);transition:all .12s}.pin-key:hover{border-color:var(--green);color:var(--green)}.pin-key:active{transform:scale(.95)}.filter-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:20px}.filter-bar .input{width:auto}.chart-wrap{width:100%}.chart-wrap svg{width:100%;height:auto;display:block}.chart-line{stroke-dasharray:1200;stroke-dashoffset:1200;animation:draw 1.4s ease forwards}@keyframes draw{to{stroke-dashoffset:0}}.day-arc{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.day-arc .arc-wrap{position:relative;width:104px;height:104px;flex-shrink:0}.day-arc .arc-wrap svg{transform:rotate(-90deg)}.day-arc .arc-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.day-arc .arc-center b{font-family:var(--font-display);font-size:21px;line-height:1}.day-arc .arc-center span{font-size:10.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--on-green-dim);font-weight:700}.sathi-fab{position:fixed;right:22px;bottom:22px;z-index:120;width:56px;height:56px;border-radius:50%;background:var(--green);color:var(--gold);border:none;box-shadow:var(--shadow-green);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s}.sathi-fab:hover{transform:translateY(-2px) scale(1.04)}.sathi-panel{position:fixed;right:22px;bottom:90px;z-index:121;width:392px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 130px);background:var(--tile);border-radius:var(--radius);box-shadow:var(--shadow-lg);display:none;flex-direction:column;overflow:hidden;animation:tileIn .3s cubic-bezier(.22,1,.36,1)}.sathi-panel.open{display:flex}.sathi-head{background:var(--green);color:var(--on-green);padding:16px 18px;display:flex;align-items:center;gap:12px}.sathi-head .sh-mark{width:38px;height:38px;border-radius:12px;background:var(--gold);color:var(--gold-ink);display:flex;align-items:center;justify-content:center}.sathi-msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:var(--tile-2)}.msg{max-width:88%;padding:11px 14px;border-radius:16px;font-size:14px;line-height:1.5}.msg.bot{background:var(--tile);box-shadow:var(--shadow);border-bottom-left-radius:6px;align-self:flex-start}.msg.me{background:var(--green);color:var(--on-green);border-bottom-right-radius:6px;align-self:flex-end}.msg .msg-num{font-family:var(--font-display);font-weight:800;font-size:19px;display:block;margin:2px 0}.sathi-chips{display:flex;gap:8px;flex-wrap:wrap;padding:10px 16px 4px}.sathi-chip{border:1.5px solid var(--line-2);background:var(--tile);border-radius:var(--radius-pill);padding:6px 12px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:var(--font);color:var(--green)}.sathi-chip:hover{border-color:var(--green)}.sathi-input{display:flex;gap:8px;padding:12px 14px;align-items:center}.sathi-input .input{flex:1}.mic-btn{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line-2);background:var(--tile);color:var(--green);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}.mic-btn.listening{background:var(--bad);border-color:var(--bad);color:#fff;animation:pulse 1.2s infinite}.brief-line{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid rgba(255,253,247,.14);font-size:14px;align-items:flex-start}.brief-line:last-child{border-bottom:none}.auto-row{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--line)}.auto-row:last-child{border-bottom:none}.auto-row .ar-ic{width:42px;height:42px;border-radius:12px;background:var(--green-soft);color:var(--green);display:flex;align-items:center;justify-content:center;flex-shrink:0}.auto-row .ar-main{flex:1;min-width:0}.auto-row .ar-title{font-weight:800;font-size:15px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.auto-row .ar-desc{font-size:13.5px;color:var(--sub);margin-top:2px}.report-group-title{font-size:12px;letter-spacing:1.4px;text-transform:uppercase;font-weight:800;color:var(--label);margin:30px 0 12px;display:flex;align-items:center;gap:9px}.report-link{display:flex;gap:13px;align-items:center;padding:15px 4px;border-bottom:1px solid var(--line);color:var(--ink)}.report-link:last-child{border-bottom:none}.report-link:hover{text-decoration:none;background:var(--tile-2)}.summary-line{background:var(--green-soft);border-radius:var(--radius-md);padding:14px 18px;font-size:15px;font-weight:600;display:flex;gap:11px;align-items:center;margin-bottom:20px;color:var(--green-deep)}.tile-green .summary-line{background:rgba(255,217,138,.14);color:var(--on-green)}.preset-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.qr-shell{min-height:100vh;background:var(--canvas);display:flex;align-items:flex-start;justify-content:center;padding:24px 16px 48px}.qr-card{width:100%;max-width:430px;background:var(--tile);border-radius:28px;box-shadow:var(--shadow-lg);padding:28px 24px;animation:tileIn .5s cubic-bezier(.22,1,.36,1)}.qr-status-big{font-family:var(--font-display);font-size:24px;font-weight:800;line-height:1.25}.stars{display:flex;gap:8px;justify-content:center}.star-btn{background:0 0;border:none;cursor:pointer;color:var(--line-2);padding:2px;transition:transform .12s,color .12s}.star-btn.on{color:var(--amber)}.star-btn:active{transform:scale(1.25)}.status-steps{display:flex;flex-direction:column;gap:0}.status-step{display:flex;gap:12px;align-items:flex-start;padding:9px 0}.status-step .ss-dot{width:26px;height:26px;border-radius:50%;background:var(--canvas-2);color:var(--sub);display:flex;align-items:center;justify-content:center;flex-shrink:0}.status-step.done .ss-dot{background:var(--ok);color:#fff}.status-step.now .ss-dot{background:var(--green);color:var(--gold)}.appbar{display:none;position:fixed;left:50%;transform:translateX(-50%);bottom:12px;z-index:110;background:var(--tile);border-radius:22px;box-shadow:var(--shadow-lg);padding:8px;gap:2px}.appbar a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 10px;color:var(--sub);font-size:10.5px;font-weight:700;text-decoration:none;border-radius:var(--radius-pill)}.appbar a .ab-ic{display:flex;align-items:center;justify-content:center;width:46px;height:32px;border-radius:14px;transition:background .18s,color .18s}.appbar a.active{color:var(--green)}.appbar a.active .ab-ic{background:var(--green);color:var(--gold)}.mt-0{margin-top:0}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}.flex{display:flex}.items-center{align-items:center}.gap-1{gap:8px}.gap-2{gap:16px}.ml-auto{margin-left:auto}.text-right{text-align:right}.text-center{text-align:center}.fw-800{font-weight:800}.fw-700{font-weight:700}.span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.divider{height:1px;background:var(--line);margin:16px 0}.mono{font-family:var(--font-mono)}.hamburger{display:none}@media(max-width:1100px){.bento-4{grid-template-columns:repeat(2,1fr)}.bento-3{grid-template-columns:repeat(2,1fr)}.kds-board{grid-template-columns:repeat(2,1fr)}.pos-layout{grid-template-columns:1fr}.span-3,.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 12}}@media(max-width:820px){.sidebar{position:fixed;left:-262px;transition:left .25s;width:252px}.sidebar.open{left:0;box-shadow:var(--shadow-lg)}.hamburger{display:inline-flex}.content{padding:18px 14px 110px}.topbar{padding:12px 14px}.topbar>div{min-width:0}.topbar h1{font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .topbar-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{gap:8px;flex:none}.topbar-actions .pill-grey{display:none}.bento-2,.bento-3,.bento-4{grid-template-columns:1fr}.kds-board{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr}.login-brand{display:none}.form-grid{grid-template-columns:1fr}.tile-value{font-size:34px}.appbar{display:flex}.sathi-fab{bottom:92px}.sathi-panel{bottom:158px}.training-banner{top:58px;padding:10px 14px}}@media print{.appbar,.no-print,.sathi-fab,.sidebar,.topbar{display:none!important}.content{padding:0}.main{margin:0}body{background:#fff}}@media (prefers-reduced-motion:reduce){*{animation-duration:NaNs!important;animation-iteration-count:1!important;transition-duration:NaNs!important}}.bento-start{align-items:start}.attn-scroll{max-height:272px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;padding-right:4px}.sidebar .nav-item:hover .nav-icon{color:var(--gold);transform:translateY(-1px)}.sidebar .nav-item:active .nav-icon{transform:scale(.93)}.sidebar .nav-item.active:hover .nav-icon{transform:scale(1.07) translateY(-1px)}.input-wrap{position:relative}.input-wrap .input{padding-right:52px}.eye-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:10px;border:none;background:0 0;color:var(--sub);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s,transform .12s}.eye-btn:hover{background:var(--green-soft);color:var(--green)}.eye-btn:active{transform:translateY(-50%) scale(.94)}.eye-btn[aria-pressed=true]{background:var(--gold-soft);color:#9a7414}.remember-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.check-line{display:inline-flex;align-items:center;gap:9px;font-size:14px;font-weight:600;cursor:pointer;color:var(--ink)}.check-line input{width:19px;height:19px;accent-color:var(--green);cursor:pointer;flex-shrink:0}.text-link{color:var(--green);font-weight:700;font-size:14px;text-decoration:none}.text-link:hover{text-decoration:underline}.lang-toggle{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 13px;border-radius:var(--radius-pill);border:1.5px solid var(--line-2);background:var(--tile);color:var(--ink);font-size:12.5px;font-weight:700;text-decoration:none!important;transition:border-color .15s,color .15s,transform .12s;white-space:nowrap}.lang-toggle:hover{border-color:var(--green);color:var(--green)}.lang-toggle:active{transform:scale(.97)}.powered-by{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--on-green-faint);padding:10px 18px 16px}.powered-by img{width:18px;height:18px;flex-shrink:0}.powered-by b{color:var(--on-green-dim);font-weight:700}.powered-by.on-light{color:var(--sub);padding:0}.powered-by.on-light b{color:var(--ink)}.login-form-side{flex-direction:column}.login-foot{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:26px}.forgot-wrap{max-width:480px;margin:0 auto;padding:48px 20px 40px}.forgot-wrap .login-card{max-width:none}.bento-2>*,.bento-3>*,.bento-4>*,.bento>*{min-width:0}.move-form{display:flex;flex-wrap:wrap;gap:6px}.move-form .input{padding:6px 8px;height:32px}.move-form .mf-type{width:78px;flex:0 0 78px}.move-form .mf-qty{width:66px;flex:0 0 66px}.move-form .mf-note{flex:1 1 110px;min-width:96px}.skel{height:15px;border-radius:8px;margin:7px 0;background:linear-gradient(90deg,var(--tile-2) 25%,#fff 50%,var(--tile-2) 75%);background-size:200% 100%;animation:skelMove 1.15s infinite linear}@keyframes skelMove{from{background-position:180% 0}to{background-position:-20% 0}}.content{overflow-x:clip}img{max-width:100%}@media (max-width:1100px) and (min-width:821px){.sidebar{width:78px;flex-basis:78px}.sidebar-brand{justify-content:center;padding-left:0;padding-right:0}.sidebar-brand .brand-name,.sidebar-brand .brand-tag{display:none}.nav-label{display:none}.sidebar .nav-item{font-size:0;justify-content:center;padding:8px 0;position:relative}.sidebar .nav-item .nav-icon{margin-left:0}.sidebar .nav-item .nav-badge{position:absolute;top:1px;right:7px;margin:0;font-size:10px;padding:0 6px}.sidebar-user{flex-direction:column;justify-content:center;gap:6px}.sidebar-user .u-name,.sidebar-user .u-role{display:none}.sidebar .powered-by{display:none}.pos-layout{grid-template-columns:1fr 340px}}@media (max-width:820px){.pos-layout{grid-template-columns:1fr}}@media (max-width:767px){table.data{display:block}table.data thead{display:none}table.data tbody{display:block}table.data tr{display:block;background:var(--tile);border:1px solid var(--line);border-radius:14px;padding:10px 14px;margin-bottom:10px}table.data td{display:block;padding:3px 0;border:none;text-align:left!important}table.data td:first-child{font-weight:700}}@media (pointer:coarse){.btn-sm{min-height:40px}.sathi-chip{min-height:40px;display:inline-flex;align-items:center}.qty-btn{width:40px;height:40px}.icon-btn{width:40px;height:40px}.appbar a .ab-ic{height:36px}.tab{min-height:40px;display:inline-flex;align-items:center}.switch{min-width:48px;min-height:28px}}.btn{transition:background .18s,color .18s,transform .12s,box-shadow .18s}.btn:active{transform:scale(.97)}.icon-btn{transition:border-color .15s,color .15s,background .15s,transform .12s}.icon-btn:hover{transform:translateY(-1px)}.icon-btn:active{transform:scale(.9)}.qty-btn{transition:background .15s,transform .1s}.qty-btn:active{transform:scale(.86)}.qty-btn:active svg{transform:scale(1.15)}.tab{transition:background .18s,color .18s,transform .12s}.tab:active{transform:scale(.96)}.sathi-chip{transition:border-color .18s,background .18s,transform .12s}.sathi-chip:active{transform:scale(.95)}.chip-check{transition:background .2s,border-color .2s,color .2s,transform .12s}.chip-check:active{transform:scale(.96)}.chip-check:has(input:checked){animation:chipPop .22s cubic-bezier(.34,1.56,.64,1)}@keyframes chipPop{0%{transform:scale(.94)}100%{transform:scale(1)}}.menu-tile{transition:transform .13s,box-shadow .18s}.menu-tile:hover{transform:translateY(-2px)}.menu-tile:active{transform:scale(.97)}.easy-tile{transition:transform .13s,box-shadow .18s}.easy-tile:hover{transform:translateY(-2px)}.input,select.input,textarea.input{transition:border-color .18s,box-shadow .18s}.pill{transition:background .25s,color .25s}.table-tile .tt-status{transition:color .25s}.report-link{transition:background .18s}.kot-card{transition:background .3s,border-color .3s,box-shadow .3s,opacity .25s,transform .25s}.kot-flash{animation:kotFlash .7s ease}@keyframes kotFlash{0%{box-shadow:0 0 0 3px rgba(255,217,138,.95)}100%{box-shadow:0 0 0 0 rgba(255,217,138,0)}}:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:6px}.easy-toggle{transition:background .22s,color .22s,border-color .22s,transform .12s;text-decoration:none;color:var(--ink)}.easy-toggle:hover{border-color:var(--green);text-decoration:none}.easy-toggle:active{transform:scale(.96)}.easy-toggle.on{background:var(--green);color:var(--on-green);border-color:var(--green)}.easy-toggle.on:hover{color:var(--on-green)}.grid-in{animation:gridIn .3s cubic-bezier(.22,1,.36,1)}@keyframes gridIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.cart-line{animation:lineIn .26s cubic-bezier(.22,1,.36,1)}@keyframes lineIn{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}.cart-line.line-out{animation:lineOut .18s ease forwards}@keyframes lineOut{to{opacity:0;transform:translateX(22px)}}.qty-val{display:inline-block;min-width:22px;text-align:center}.qty-val.roll-up{animation:rollUp .22s cubic-bezier(.22,1,.36,1)}.qty-val.roll-down{animation:rollDown .22s cubic-bezier(.22,1,.36,1)}@keyframes rollUp{from{transform:translateY(9px);opacity:0}to{transform:none;opacity:1}}@keyframes rollDown{from{transform:translateY(-9px);opacity:0}to{transform:none;opacity:1}}.val-pulse{animation:valPulse .45s ease}@keyframes valPulse{0%{color:var(--amber-deep,#b47b1e)}100%{color:inherit}}.shake{animation:shakeX .3s ease}@keyframes shakeX{0%,100%{transform:none}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}.modal-overlay{transition:opacity .2s}.seg a,.seg button{transition:background .2s,color .2s,box-shadow .2s,transform .12s}.seg a:active,.seg button:active{transform:scale(.97)}.toast-rich{display:flex;align-items:flex-start;gap:11px;text-align:left;min-width:280px;max-width:360px;padding:13px 14px 15px;overflow:hidden;position:relative}.toast-icon{width:26px;height:26px;flex:none;border-radius:50%;background:var(--gold);color:var(--green-deep);font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;margin-top:1px}.toast.error .toast-icon{background:#f3b8b8;color:#7a1e1e}.toast-main{flex:1;min-width:0}.toast-title{font-weight:800;font-size:13.5px;line-height:1.25}.toast-line{font-size:12.5px;opacity:.85;line-height:1.4;margin-top:1px}.toast-bar{position:absolute;left:0;bottom:0;height:3px;background:var(--gold);border-radius:0 3px 3px 0}.toast.error .toast-bar{background:#e88}.toast-undo{flex:none;background:rgba(255,217,138,.16);border:1px solid rgba(255,217,138,.55);color:var(--gold);font-weight:800;font-size:12px;border-radius:8px;padding:5px 10px;cursor:pointer;font-family:var(--font);transition:background .15s,transform .1s}.toast-undo:hover{background:rgba(255,217,138,.3)}.toast-undo:active{transform:scale(.94)}.toast-close{flex:none;background:0 0;border:none;color:inherit;opacity:.6;font-size:17px;line-height:1;cursor:pointer;padding:2px 3px}.toast-close:hover{opacity:1}.toast-out{opacity:0;transform:translateY(8px);transition:opacity .28s,transform .28s}.kn-confirm-overlay{position:fixed;inset:0;background:rgba(23,63,53,.45);backdrop-filter:blur(3px);z-index:200;display:flex;align-items:center;justify-content:center;padding:18px;opacity:0;transition:opacity .18s}.kn-confirm-overlay.open{opacity:1}.kn-confirm{background:var(--tile);border-radius:var(--radius);width:100%;max-width:400px;padding:26px 24px 22px;text-align:center;box-shadow:var(--shadow-lg);transform:scale(.94) translateY(8px);transition:transform .2s cubic-bezier(.22,1,.36,1)}.kn-confirm-overlay.open .kn-confirm{transform:none}.kn-confirm-icon{width:46px;height:46px;margin:0 auto 12px;border-radius:50%;background:#fbebbe;color:#8a6410;font-size:23px;font-weight:800;display:flex;align-items:center;justify-content:center}.kn-confirm.danger .kn-confirm-icon{background:#f9dede;color:#8c2323}.kn-confirm-msg{font-weight:700;font-size:15.5px;line-height:1.5}.kn-confirm-row{display:flex;gap:10px;justify-content:center;margin-top:20px}.btn-danger{background:#b3261e;color:#fff;border:1.5px solid #b3261e}.btn-danger:hover{background:#8c1d18;border-color:#8c1d18;color:#fff}.kds-card[draggable=true]{cursor:grab}.kds-card.dragging{opacity:.55;transform:rotate(1.2deg) scale(.98);cursor:grabbing}.kds-col.drop-ok{background:rgba(255,217,138,.14);border-radius:18px;outline:2px dashed rgba(23,63,53,.4);outline-offset:-6px}.bell-wrap{position:relative}.bell-btn{position:relative}.bell-badge{position:absolute;top:-5px;right:-5px;min-width:19px;height:19px;border-radius:999px;background:#c0362c;color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 5px;border:2px solid var(--canvas)}.bell-badge.pop{animation:badgePop .35s cubic-bezier(.34,1.56,.64,1)}@keyframes badgePop{0%{transform:scale(.4)}100%{transform:scale(1)}}.bell-drop{position:absolute;top:calc(100% + 10px);right:0;width:min(360px,calc(100vw - 24px));background:var(--tile);border-radius:18px;box-shadow:var(--shadow-lg);border:1px solid var(--line);z-index:120;overflow:hidden;animation:tileIn .22s cubic-bezier(.22,1,.36,1)}.bell-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line);font-size:14px}.bell-head .spacer{flex:1}.bell-link{background:0 0;border:none;color:var(--green);font-weight:700;font-size:12px;cursor:pointer;font-family:var(--font);padding:4px 2px}.bell-items{max-height:380px;overflow-y:auto}.bell-empty{padding:22px 16px;text-align:center;color:var(--sub);font-size:13px}.bell-item{display:flex;gap:11px;padding:12px 16px;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line);transition:background .15s;align-items:flex-start}.bell-item:hover{background:var(--green-soft);text-decoration:none}.bell-item.unread{background:#fff9e9}.bell-dot{width:9px;height:9px;border-radius:50%;background:var(--sub);flex:none;margin-top:6px}.bell-dot.order,.bell-dot.ready{background:#2e9e5b}.bell-dot.bill,.bell-dot.paid{background:var(--gold-deep,#b47b1e)}.bell-dot.expiry,.bell-dot.late,.bell-dot.low_stock,.bell-dot.unassigned{background:#c0362c}.bell-text{display:flex;flex-direction:column;gap:1px;font-size:13px;min-width:0}.bell-text span{color:var(--sub);font-size:12.5px}.bell-text time{color:var(--sub);font-size:11px;font-family:var(--font-mono)}#toast-wrap{top:18px;right:18px;bottom:auto;left:auto;align-items:flex-end}.toast-rich{animation:toastInR .32s cubic-bezier(.22,1,.36,1)}@keyframes toastInR{from{opacity:0;transform:translateX(26px)}to{opacity:1;transform:none}}.toast.shake-in{animation:toastInR .32s cubic-bezier(.22,1,.36,1),shakeX .34s .1s ease}.toast-icon svg{display:block}.toast-icon .tick{stroke-dasharray:26;stroke-dashoffset:26;animation:tickDraw .45s .12s cubic-bezier(.65,0,.35,1) forwards}@keyframes tickDraw{to{stroke-dashoffset:0}}.toast.warning .toast-icon{background:#f5d98b;color:#7a5410}.toast.warning .toast-bar{background:#e9b44c}.toast.info .toast-icon{background:#dcefe4;color:var(--green)}.toast.info .toast-bar{background:#9cc5ae}.kn-confirm-body{margin-top:8px;color:var(--sub);font-size:13.5px;line-height:1.55;font-weight:600}.kn-confetti{position:fixed;inset:0;z-index:300;pointer-events:none}.kn-confetti{pointer-events:auto;background:0 0}.kn-reward-overlay{position:fixed;inset:0;z-index:290;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(23,63,53,.28);opacity:0;transition:opacity .2s}.kn-reward-overlay.open{opacity:1}.kn-reward{background:var(--tile);border-radius:26px;padding:30px 30px 26px;text-align:center;max-width:340px;width:100%;box-shadow:var(--shadow-lg);transform:scale(.9) translateY(12px);transition:transform .28s cubic-bezier(.34,1.4,.64,1)}.kn-reward-overlay.open .kn-reward{transform:none}.kn-medallion{width:74px;height:74px;margin:0 auto 14px;border-radius:50%;background:radial-gradient(circle at 32% 30%,#ffe9b0,#ffd98a 55%,#e9b44c);color:#7a5410;font-family:var(--font-display);font-weight:800;font-size:24px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(233,180,76,.45),inset 0 0 0 3px rgba(122,84,16,.18);animation:medalIn .5s cubic-bezier(.34,1.56,.64,1)}@keyframes medalIn{from{transform:scale(.4) rotate(-14deg);opacity:0}to{transform:none;opacity:1}}.kn-reward-title{font-family:var(--font-display);font-weight:800;font-size:21px}.kn-reward-line{color:var(--sub);font-size:14px;margin:7px 0 18px;line-height:1.55}@media (max-width:640px){#toast-wrap{top:10px;right:10px;left:10px;align-items:stretch}.toast-rich{min-width:0;max-width:none;width:100%}}.kds-card{touch-action:none;user-select:none;-webkit-user-select:none}.kds-card.drag-lift{box-shadow:0 18px 38px rgba(23,63,53,.35);z-index:60;position:relative;cursor:grabbing;transition:none}.kds-gap{border:2px dashed rgba(23,63,53,.35);border-radius:16px;background:rgba(255,217,138,.13);margin-bottom:12px}.nowrap{white-space:nowrap}.sup-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}table.data.stock-grid td{vertical-align:middle}table.data.stock-grid .act-cell{text-align:right}[hidden]{display:none!important}.row-menu-wrap{position:relative;display:inline-block}.row-menu-btn{font-weight:800;letter-spacing:1px;line-height:1}.row-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:80;background:var(--tile);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:6px;min-width:168px;display:flex;flex-direction:column;gap:2px;text-align:left}.row-menu[hidden]{display:none}.row-menu a,.row-menu button{display:flex;align-items:center;gap:8px;padding:9px 11px;border:none;background:0 0;border-radius:9px;font-family:var(--font);font-weight:700;font-size:13.5px;color:var(--ink);cursor:pointer;text-decoration:none;transition:background .15s}.row-menu a:hover,.row-menu button:hover{background:var(--canvas)}.stock-backdrop{position:fixed;inset:0;background:rgba(23,63,53,.45);backdrop-filter:blur(3px);z-index:140;opacity:0;transition:opacity .22s}.stock-backdrop.open{opacity:1}.stock-panel{position:fixed;top:0;right:0;bottom:0;width:min(400px,94vw);background:var(--tile);z-index:150;box-shadow:-18px 0 44px rgba(23,63,53,.28);padding:22px;overflow-y:auto;transform:translateX(28px);opacity:0;transition:transform .24s cubic-bezier(.22,1,.36,1),opacity .24s}.stock-panel.open{transform:none;opacity:1}.stock-panel .sp-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px}.stock-panel .sp-head h3{font-size:18px}.stock-panel .field{margin-bottom:12px}.stock-panel .seg{margin-bottom:14px;flex-wrap:wrap}.stock-panel .seg button{flex:1 1 40%}@media (prefers-reduced-motion:reduce){.stock-backdrop,.stock-panel{transition:none}}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar .filter-bar{margin-bottom:0;flex:1;min-width:230px}.toolbar .spacer{flex:1}.kn-drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,94vw);background:var(--tile);z-index:150;box-shadow:-18px 0 44px rgba(23,63,53,.28);padding:22px;overflow-y:auto;transform:translateX(28px);opacity:0;transition:transform .24s cubic-bezier(.22,1,.36,1),opacity .24s}.kn-drawer.open{transform:none;opacity:1}.kn-drawer .drawer-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px}.kn-drawer .drawer-head h3{font-size:18px;flex:1;min-width:0}.kn-drawer .form-grid{grid-template-columns:1fr}.kn-drawer-backdrop{position:fixed;inset:0;background:rgba(23,63,53,.45);backdrop-filter:blur(3px);z-index:140;opacity:0;transition:opacity .22s}.kn-drawer-backdrop.open{opacity:1}@media (max-width:640px){.kn-drawer{width:100vw}}@media (prefers-reduced-motion:reduce){.kn-drawer,.kn-drawer-backdrop{transition:none}}tr.row-hl td{animation:rowHl 1.8s ease}div.row-hl{animation:rowHl 1.8s ease;border-radius:10px}@keyframes rowHl{0%{background:rgba(255,217,138,.55)}100%{background:rgba(255,217,138,0)}}table.data tbody tr{transition:background .15s}.kn-drawer .input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(23,63,53,.14);outline:0}.kn-drawer .input:user-invalid{border-color:#c0392b;box-shadow:0 0 0 3px rgba(192,57,43,.13)}.live-empty{padding:22px;text-align:center;color:var(--sub);font-weight:600}.search-wrap .input{width:100%}.att-strip{display:flex;align-items:center;gap:10px 22px;flex-wrap:wrap;padding:14px 20px;margin-bottom:16px}.att-count{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:13.5px}.att-count b{font-family:"Space Mono",monospace;font-size:16px}.att-count-unmarked{color:#9a6a00}.att-fine{margin-left:auto;font-weight:600;font-size:13.5px}.att-fine b{font-family:"Space Mono",monospace;font-size:16px}.att-complete-bar,.att-completed-bar{display:flex;align-items:center;gap:12px;padding:12px 18px;border-radius:16px;margin-bottom:16px;font-weight:700}.att-complete-bar{background:#173f35;color:#fff7e0}.att-complete-bar .btn{margin-left:auto}.att-completed-bar{background:#e7f2e4;color:#1f5c38}.att-list{padding:6px 10px}.att-row{display:flex;align-items:center;gap:14px;padding:13px 10px;border-bottom:1px solid var(--line);transition:background .18s}.att-row:last-child{border-bottom:none}.att-row:hover{background:#fbf7ec}.att-row.is-pending{background:#fbf3dc}.att-row.is-pending:hover{background:#f8edcb}.att-row.is-locked{opacity:.82}.att-avatar{width:42px;height:42px;border-radius:50%;background:#173f35;color:#ffd98a;display:flex;align-items:center;justify-content:center;font-family:Sora,sans-serif;font-weight:700;font-size:16px;flex:none}.att-main{flex:1;min-width:180px}.att-name{font-weight:700;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.att-sub{font-size:12.5px;margin-top:1px}.att-meta{font-size:12.5px;font-weight:600;color:#5c5546;margin-top:2px;font-variant-numeric:tabular-nums}.att-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.att-chips{display:inline-flex;gap:6px;flex-wrap:wrap}.att-chip{padding:8px 13px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font:inherit;font-size:12.5px;font-weight:700;color:#5c5546;cursor:pointer;transition:transform .13s,background .18s,color .18s,border-color .18s;min-height:38px}.att-chip:hover{border-color:#b9ae97;color:#23201a;transform:translateY(-1px)}.att-chip:active{transform:scale(.95)}.att-chip.on{color:#fff;border-color:transparent}.att-chip.chip-present.on{background:#1f7a4d}.att-chip.chip-late.on{background:#b97e10}.att-chip.chip-absent.on{background:#b3382e}.att-chip.chip-leave.on{background:#6b675c}.att-chip.chip-halfday.on{background:#0e7c86}.att-chip:disabled{opacity:.45;cursor:not-allowed;transform:none}.att-lock-note{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:#6b675c;background:#f1ecdd;padding:8px 12px;border-radius:999px}@media(max-width:820px){.att-row{flex-wrap:wrap}.att-actions{width:100%;justify-content:flex-start;padding-left:56px}.att-fine{margin-left:0}}.kiosk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:14px}.kiosk-tile{display:flex;flex-direction:column;align-items:center;gap:3px;padding:22px 10px 16px;background:#fffdf7;border:1.5px solid var(--line);border-radius:20px;font:inherit;cursor:pointer;transition:transform .15s,border-color .18s,box-shadow .18s}.kiosk-tile:hover{border-color:#b9ae97;transform:translateY(-2px);box-shadow:0 10px 22px rgba(35,32,26,.08)}.kiosk-tile:active{transform:scale(.97)}.kiosk-avatar{width:58px;height:58px;border-radius:50%;background:#173f35;color:#ffd98a;display:flex;align-items:center;justify-content:center;font-family:Sora,sans-serif;font-weight:700;font-size:22px}.kiosk-avatar.big{width:74px;height:74px;font-size:28px}.kiosk-name{font-weight:700;font-size:15px;text-align:center}.kiosk-role{font-size:12px}.kiosk-badge{font-size:12px;font-weight:700;color:#1f7a4d;min-height:16px}.kiosk-overlay{position:fixed;inset:0;background:rgba(23,20,14,.55);display:flex;align-items:center;justify-content:center;padding:18px;z-index:120;opacity:0;transition:opacity .2s}.kiosk-overlay.open{opacity:1}.kiosk-sheet{background:#fffdf7;border-radius:24px;padding:28px 28px 30px;width:min(400px,100%);position:relative;text-align:center;transform:scale(.94);transition:transform .22s cubic-bezier(.2,.9,.3,1.2)}.kiosk-overlay.open .kiosk-sheet{transform:scale(1)}.kiosk-close{position:absolute;top:12px;right:12px}.kiosk-face{display:flex;flex-direction:column;align-items:center;gap:6px}.pin-dots{display:flex;gap:10px;margin:14px 0 4px}.pin-dots span{width:15px;height:15px;border-radius:50%;border:2px solid #b9ae97;transition:background .15s,border-color .15s,transform .15s}.pin-dots span.on{background:#173f35;border-color:#173f35;transform:scale(1.12)}.kiosk-error{color:#b3382e;font-weight:700;font-size:13.5px;margin:4px 0 0}.pin-pad{display:grid;grid-template-columns:repeat(3,72px);gap:10px;justify-content:center;margin-top:16px}.pin-key{height:56px;border-radius:16px;border:1.5px solid var(--line);background:#fff;font:inherit;font-size:20px;font-weight:700;cursor:pointer;transition:transform .12s,background .15s}.pin-key:hover{background:#fbf7ec}.pin-key:active{transform:scale(.93)}.pin-key-fn{font-size:15px;color:#5c5546}.kiosk-success-ic{width:86px;height:86px;border-radius:50%;background:#1f7a4d;color:#fff;display:flex;align-items:center;justify-content:center;animation:attPop .45s cubic-bezier(.2,.9,.3,1.35)}.kiosk-success-line{font-family:Sora,sans-serif;font-size:20px;font-weight:700;margin:6px 0 0}@keyframes attPop{0%{transform:scale(.4);opacity:0}100%{transform:scale(1);opacity:1}}.roster-scroll{overflow-x:auto;margin:0 -6px;padding:0 6px}table.roster{border-collapse:separate;border-spacing:0;width:100%;min-width:880px}table.roster td,table.roster th{padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:middle}table.roster thead th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#5c5546;text-align:left}table.roster thead th.today{color:#173f35}table.roster thead th.today .r-day{background:#173f35;color:#ffd98a;border-radius:8px;padding:1px 7px}.roster-staff{min-width:150px}.roster-staff .rs-name{font-weight:700;display:flex;align-items:center;gap:8px}.roster-staff .rs-role{font-size:12px;color:#5c5546}.roster-cell{min-width:104px}.roster-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:10px;font-size:12px;font-weight:700;cursor:grab;user-select:none;touch-action:none;transition:transform .15s,box-shadow .18s,opacity .15s;max-width:100%}.roster-chip small{font-weight:600;opacity:.75;font-variant-numeric:tabular-nums}.roster-chip:active{cursor:grabbing}.roster-chip.morning{background:#ffe9b8;color:#6e5200}.roster-chip.evening{background:#d8eddc;color:#1f5c38}.roster-chip.other{background:#d5ebf5;color:#14506b}.roster-chip.off{background:0 0;border:1.5px dashed #c8bfa9;color:#8a8271;cursor:pointer;font-weight:600}.roster-chip.dragging{opacity:.85;transform:scale(1.05);box-shadow:0 12px 24px rgba(35,32,26,.22);z-index:60;position:relative}.roster-cell.drop-hint{outline:2px dashed #B9AE97;outline-offset:-4px;border-radius:10px}.roster-cell .leave-flag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:#9a6a00;background:#fbf3dc;border-radius:8px;padding:5px 8px}.roster-pop{position:fixed;z-index:130;background:#fffdf7;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px rgba(35,32,26,.18);padding:6px;min-width:190px;animation:popIn .16s ease}.roster-pop button{display:flex;width:100%;align-items:center;gap:8px;padding:9px 10px;border:none;background:0 0;font:inherit;font-size:13.5px;font-weight:600;border-radius:9px;cursor:pointer;text-align:left}.roster-pop button:hover{background:#fbf7ec}.roster-pop .rp-head{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8a8271;padding:6px 10px 2px;font-weight:700}.req-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.req-card{background:#fffdf7;border:1px solid var(--line);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:8px}.req-card .rc-head{display:flex;align-items:center;gap:10px}.req-card .rc-name{font-weight:700}.req-card .rc-meta{font-size:12.5px;color:#5c5546}.req-card .rc-actions{display:flex;gap:8px;margin-top:6px}.tl-list{display:flex;flex-direction:column}.tl-item{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.tl-item:last-child{border-bottom:none}.tl-dot{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:none}.tl-dot.in{background:#1f7a4d}.tl-dot.out{background:#b3382e}.tl-dot.neutral{background:#b9ae97}.tl-item .tl-main{flex:1}.tl-item .tl-amt{font-family:"Space Mono",monospace;font-weight:700}.adv-bal-card .ab-nums{display:flex;gap:22px;flex-wrap:wrap;margin-top:8px}.ab-nums .ab-num b{display:block;font-family:"Space Mono",monospace;font-size:17px}.ab-nums .ab-num span{font-size:12px;color:#5c5546;font-weight:600}.steps-bar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.step-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#fffdf7;border:1.5px solid var(--line);font-weight:700;font-size:13px;color:#5c5546}.step-pill .n{width:22px;height:22px;border-radius:50%;background:#efe9dc;display:flex;align-items:center;justify-content:center;font-size:12px}.step-pill.on{border-color:#173f35;color:#173f35}.step-pill.on .n{background:#173f35;color:#ffd98a}.step-pill.done .n{background:#1f7a4d;color:#fff}.anomaly-pill{display:inline-flex;align-items:center;gap:5px;background:#fbe3df;color:#8f2a20;font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 9px}.prof-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.ring-wrap{display:flex;align-items:center;gap:18px}.ring-num{font-family:Sora,sans-serif;font-size:26px;font-weight:800}.ring-legend{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:600}.sathi-msgs .msg-wrap{display:flex;flex-direction:column;width:100%}.sathi-msgs .msg-wrap.in{animation:sathiIn .28s cubic-bezier(.22,1,.36,1)}@keyframes sathiIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.msg-meta{display:flex;gap:10px;align-items:center;margin-top:3px;font-size:11px;color:var(--sub);padding:0 4px}.msg-meta.me{align-self:flex-end}.msg-meta .copy-btn{background:0 0;border:none;color:var(--sub);font-size:11px;font-weight:700;cursor:pointer;padding:2px 4px;border-radius:6px;font-family:var(--font);transition:color .15s,background .15s}.msg-meta .copy-btn:hover{color:var(--green);background:var(--tile)}.msg.rtl{direction:rtl;text-align:right}.msg.rtl .msg-num{text-align:right}.sathi-mode{font-size:11px;font-weight:800;letter-spacing:.4px;padding:4px 10px;border-radius:var(--radius-pill);white-space:nowrap}.sathi-mode.on{background:var(--gold);color:var(--gold-ink)}.sathi-mode.off{background:rgba(255,253,247,.16);color:var(--on-green)}.msg.think{display:flex;align-items:center;gap:10px}.think-dots{display:inline-flex;gap:4px}.think-dots i{width:7px;height:7px;border-radius:50%;background:var(--green);opacity:.35;animation:thinkPulse 1.1s infinite}.think-dots i:nth-child(2){animation-delay:.15s}.think-dots i:nth-child(3){animation-delay:.3s}@keyframes thinkPulse{0%,100%,60%{transform:translateY(0);opacity:.35}30%{transform:translateY(-4px);opacity:1}}.guide-card{align-self:flex-start;max-width:92%;background:var(--tile);box-shadow:var(--shadow);border-radius:16px;border-bottom-left-radius:6px;padding:13px 15px}.guide-card.rtl{direction:rtl;text-align:right;align-self:flex-end;border-bottom-left-radius:16px;border-bottom-right-radius:6px}.guide-title{font-weight:800;font-size:14.5px;margin-bottom:7px;color:var(--green)}.guide-steps{margin:0 0 11px;padding-left:20px;font-size:13.5px;line-height:1.55}.guide-card.rtl .guide-steps{padding-left:0;padding-right:20px}.guide-steps li{margin:3px 0}.guide-go{display:inline-flex}@keyframes stripIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@keyframes ptsPop{0%{transform:scale(.92)}55%{transform:scale(1.08)}100%{transform:scale(1)}}.cust-strip{background:var(--tile-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px;margin-bottom:10px;animation:stripIn .25s ease}.cust-strip .cs-name{font-family:var(--font-display);font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cust-strip .cs-meta{font-size:12.5px;color:var(--sub);margin-top:3px;line-height:1.5}.cust-strip .cs-meta b{color:var(--ink)}.pts-pill{display:inline-flex;align-items:center;gap:5px;background:var(--gold);color:var(--gold-ink);font-family:var(--font-display);font-weight:800;font-size:12.5px;padding:2px 10px;border-radius:var(--radius-pill);white-space:nowrap}.pts-pill.pop{animation:ptsPop .3s ease}.redeem-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-2)}.redeem-row .rr-note{font-size:12.5px;color:var(--sub);flex:1;min-width:140px}.qr-reward{background:var(--tile-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px 16px;text-align:left}.qr-reward .rw-head{display:flex;align-items:center;gap:8px}.qr-reward .rw-bal{font-family:var(--font-display);font-weight:800;font-size:26px;line-height:1.1}.reward-prog{height:8px;background:var(--canvas-2);border-radius:var(--radius-pill);overflow:hidden;margin-top:8px}.reward-prog i{display:block;height:100%;background:var(--amber);border-radius:var(--radius-pill);width:0;transition:width .8s cubic-bezier(.22,.8,.3,1)}.fb-panel{background:var(--tile-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px;margin-top:12px;animation:stripIn .25s ease;text-align:left}.fc-line{border-top:1px dashed rgba(255,253,247,.25);padding-top:8px;margin-top:2px}.camp-list{animation:stripIn .22s ease}.digest-stars .ds-row{display:flex;align-items:center;gap:8px;margin-bottom:5px;font-size:12.5px}.digest-stars .ds-row .progress{flex:1}
.great-panel{background:var(--tile-2);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px;margin-top:12px;animation:stripIn .25s ease;text-align:center}
.party-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.party-row label{margin:0}.tbl-picker{margin-top:2px}.tbl-hall{font-size:11px;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:var(--label);margin:10px 0 6px}.tbl-chips{display:flex;flex-wrap:wrap;gap:8px;animation:stripIn .22s ease}.tbl-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:88px;padding:9px 12px;border:1px solid var(--line-2);border-radius:var(--radius-md);background:var(--tile);cursor:pointer;font-family:var(--font);transition:transform .15s ease,background .18s,border-color .18s,opacity .18s;text-align:left}.tbl-chip:hover{transform:translateY(-1px);border-color:var(--amber)}.tbl-chip:active{transform:scale(.97)}.tbl-chip .tc-name{font-family:var(--font-display);font-weight:800;font-size:15px;display:flex;align-items:center;gap:6px}.tbl-chip .tc-meta{font-size:11.5px;color:var(--sub);display:flex;align-items:center;gap:5px}.tbl-chip.sel{background:var(--green);color:var(--on-green);border-color:var(--green)}.tbl-chip.sel .tc-meta{color:var(--on-green-dim)}.tbl-chip.dim{opacity:.48;cursor:not-allowed;background:var(--tile-2)}.tbl-chip.dim:hover{transform:none;border-color:var(--line-2)}.tc-badge{background:var(--gold);color:var(--gold-ink);font-size:10px;font-weight:800;padding:1px 7px;border-radius:var(--radius-pill);letter-spacing:.4px;text-transform:uppercase}.tbl-warn{display:flex;gap:8px;align-items:flex-start;background:var(--amber-soft);color:var(--ink);border-radius:var(--radius-sm);padding:9px 12px;font-size:13px;font-weight:600;margin-top:10px;animation:stripIn .25s ease}

/* ===== MOBILE WAVES 2+3+4 (2026-10-25) — identical to assets/css/mobile-waves.css ===== */
/* =====================================================================
   MOBILE WAVES 2+3+4 (2026-10-25) — app-feel back-office pass.
   Loaded by includes/header.php right after bundle.min.css, so these
   rules win ties against the bundle. The same block is appended to
   style.css (source of truth) and bundle.min.css (deploy safety).
   Wave 1 pages (POS / order view / kitchen / tables) load their own
   mobile-wave1.css AFTER this file, so their rules win on their pages.
   ===================================================================== */

/* ---------- shared tokens ---------- */
.tile-label{font-size:12.5px}
.appbar a{font-size:11.5px}

/* =====================================================================
   W2a · TOPBAR ≤820px — the page title must stay READABLE.
   "+ New Order" becomes a 44px icon button, bell/hamburger/language
   become real 44px targets, the date pill leaves, the title gets the
   freed width. Desktop topbar is untouched (all rules ≤820px).
   ===================================================================== */
@media (max-width:820px){
  .topbar{gap:6px;padding:10px}
  .topbar .hamburger{width:44px;height:44px;flex:0 0 auto}
  .topbar h1{font-size:17px;letter-spacing:-.01em;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.12}
  .topbar .topbar-sub{display:none}
  .topbar .pill-grey{display:none}
  .topbar-actions{gap:6px}
  .topbar .icon-btn{width:44px;height:44px;flex:0 0 auto}
  /* Language becomes a 44px globe button — the freed ~48px lets most
     titles stay on ONE line; the wrap above guarantees the rest
     (e.g. "Poori Report — Asal Munafa") stay fully readable instead
     of ellipsizing. Two title lines (~36px) fit inside the 44px
     button height, so the topbar never grows. */
  .topbar .lang-toggle{height:44px;width:44px;padding:0;justify-content:center;font-size:0;gap:0;flex:0 0 auto}
  .topbar .lang-toggle svg{width:20px;height:20px}
  .topbar a.topbar-neworder{width:44px;height:44px;min-height:44px;padding:0;justify-content:center;font-size:0;gap:0;flex:0 0 auto;border-radius:13px}
  .topbar a.topbar-neworder svg{width:20px;height:20px}
  .bell-drop{right:-6px}
}

/* =====================================================================
   W2b · INPUT FONT FLOOR + TAP-TARGET FLOOR (touch / small screens).
   Form controls render at 16px so iOS Safari never focus-zooms, and
   every small control reaches a 44px target. Applies at ≤820px wide
   OR on any coarse-pointer device.
   ===================================================================== */
@media (max-width:820px), (pointer:coarse){
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  select, textarea, .input, select.input, textarea.input{font-size:16px}
  .btn-sm{min-height:44px}
  .btn{min-height:44px}
  .tab, .cat-tab{min-height:44px;display:inline-flex;align-items:center}
  select.input{min-height:44px}
  .input{min-height:44px}
  .icon-btn{min-width:44px;min-height:44px}
  .switch{min-width:52px;min-height:44px;display:inline-flex;align-items:center}
  .chip-x{width:32px;height:32px}
  .sup-remove{min-height:44px;display:inline-flex;align-items:center}
  .row-menu button, .row-menu a{min-height:44px}
  .preset-bar .tab{min-height:44px}
  .sathi-chip{min-height:44px}
  .att-chip{min-height:44px}
  .live-chip{min-height:40px}
}
/* selects/inputs that live inside dense data tables keep 44 via min-height
   but their font floor still applies (stock move mini-form included). */

/* =====================================================================
   W2d · LABELLED ROWS — replaces the ≤767px card-flip for table.data.
   Every row becomes a card of label/value pairs; the label comes from
   the cell's data-label (set in the page PHP from its own header text),
   so no value ever floats without its meaning. First cell = card title.
   Ledger tables (2-col label/amount, class .ledger) keep ledger rows.
   ===================================================================== */
@media (max-width:767px){
  table.data:not(.pay-table){display:block;width:100%}
  table.data:not(.pay-table) colgroup{display:none}
  table.data:not(.pay-table) thead{display:none}
  table.data:not(.pay-table) tbody{display:block}
  table.data:not(.pay-table) tr{display:flex;flex-direction:column;background:var(--tile);border:1px solid var(--line);border-radius:18px;padding:13px 16px 9px;margin-bottom:12px;box-shadow:0 1px 2px rgba(35,32,26,.04)}
  table.data:not(.pay-table) td{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:5px 0;border:none;text-align:right!important;font-size:14px;min-height:28px}
  table.data:not(.pay-table) td::before{content:attr(data-label);flex:0 1 auto;text-align:left;font-size:12.5px;font-weight:700;color:var(--sub);letter-spacing:.01em}
  table.data:not(.pay-table) td:first-child{display:block;text-align:left!important;font-family:var(--font-display);font-weight:800;font-size:15.5px;color:var(--ink);padding:0 0 8px;margin-bottom:5px;border-bottom:1px solid var(--line)}
  table.data:not(.pay-table) td:first-child::before{content:none}
  /* A cell marked .td-title becomes the card title even when it is not
     the first cell (e.g. Sales-by-Dish, where the rank number leads). */
  table.data td.td-title{display:block;order:-1;text-align:left!important;font-family:var(--font-display);font-weight:800;font-size:15.5px;color:var(--ink);padding:0 0 8px;margin-bottom:5px;border-bottom:1px solid var(--line)}
  table.data td.td-title::before{content:none}
  /* When a row carries a .td-title, the first cell demotes to a normal
     labelled pair (it keeps its data-label). */
  table.data tr:has(> td.td-title) > td:first-child:not(.td-title){display:flex;font-family:var(--font);font-weight:600;font-size:14px;padding:5px 0;margin-bottom:0;border-bottom:none}
  table.data tr:has(> td.td-title) > td:first-child:not(.td-title)::before{content:attr(data-label)}
  table.data:not(.pay-table) td[colspan]{display:block;text-align:left!important}
  table.data:not(.pay-table) td[colspan]::before{content:none}
  table.data:not(.pay-table) td .btn{flex:0 0 auto}
  /* Action cells (buttons/kebabs): full-width row, no label, right-aligned */
  table.data td.cell-actions, table.data td.act-cell{justify-content:flex-end;padding-top:9px}
  table.data td.cell-actions::before, table.data td.act-cell::before{content:none}
  table.data:not(.pay-table) tfoot{display:block}
  table.data:not(.pay-table) tfoot tr{background:var(--green);color:#fff;border-color:var(--green)}  table.data:not(.pay-table) tfoot th{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:5px 0;border:none;text-align:right!important;font-size:14px;color:#fff}
  table.data:not(.pay-table) tfoot th::before{content:attr(data-label);text-align:left;font-size:12.5px;font-weight:700;color:var(--gold)}
  table.data:not(.pay-table) tfoot th:first-child{display:block;text-align:left!important;font-family:var(--font-display);font-weight:800;font-size:15px}
  table.data:not(.pay-table) tfoot th:first-child::before{content:none}
  table.data:not(.pay-table) tfoot th[colspan]{display:block;text-align:left!important}
  table.data:not(.pay-table) tfoot th[colspan]::before{content:none}
  table.data:not(.pay-table) tfoot th:empty{display:none}
  .table-wrap{overflow:visible}
  /* Ledger variant: the whole tbody is ONE card of label/amount lines —
     the label IS the first column, amounts stay right-aligned mono. */
  table.data.ledger tbody{background:var(--tile);border:1px solid var(--line);border-radius:18px;padding:8px 16px;box-shadow:0 1px 2px rgba(35,32,26,.04)}
  table.data.ledger tr{background:transparent;border:none;border-radius:0;box-shadow:none;padding:6px 0;margin:0;flex-direction:row;align-items:baseline;gap:12px}
  table.data.ledger td{border-bottom:1px solid var(--line)}
  table.data.ledger tr:last-child td{border-bottom:none}
  table.data.ledger td:first-child{display:flex;flex:1 1 auto;font-family:var(--font);font-weight:600;font-size:13.5px;color:var(--ink);padding:5px 0;margin:0;text-align:left!important}
  table.data.ledger td:last-child{padding-top:5px;white-space:nowrap}
}
/* Labelled rows also serve tablets in portrait-ish squeeze for the
   widest report tables only (10+ col staff table) — handled per page. */

/* Orders: status pills become ONE scrolling row (counts stay visible) */
@media (max-width:820px){
  .orders-pills{flex-wrap:nowrap;overflow-x:auto;padding-bottom:6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .orders-pills::-webkit-scrollbar{display:none}
  .orders-pills .cat-tab{flex:0 0 auto;white-space:nowrap}
  /* Filter bars wrap instead of overflowing (orders, money drawer, …) */
  .filter-bar{flex-wrap:wrap}
  .filter-bar form{flex-wrap:wrap;flex:1 1 100%}
  .filter-bar form .input{flex:1 1 130px;min-width:0}
}

/* =====================================================================
   W3 · COMPACT KPI STRIPS — bento-4 becomes a 2×2 mini-tile grid at
   phone (~104px tiles instead of ~230px), and KPI tiles inside .bento
   grids (inventory / reports hub / report pages) pair up the same way.
   Dashboard KPI tiles (.kpi-tile) and the Full Report hero (.tile-green)
   are excluded — they already have their own designed phone formats.
   ===================================================================== */
@media (max-width:820px){
  .bento-4{grid-template-columns:repeat(2,1fr);gap:12px}
  .bento-4>.tile{padding:14px 15px;border-radius:18px}
  .bento-4 .chip-ic{width:32px;height:32px;border-radius:10px}
  .bento-4 .chip-ic svg{width:17px;height:17px}
  .bento-4 .tile-value{font-size:26px}
  .bento-4 .kpi-num{font-size:23px}
  .bento-4 .kpi-sub, .bento-4 .tile-sub{font-size:12px;line-height:1.35}
  .bento>.tile:has(>.kpi-top):not(.kpi-tile):not(.tile-green.span-5):not(.span-5):not(.span-6):not(.span-7):not(.span-8):not(.span-12),
  .bento>.tile.kpi-mini{grid-column:span 6;padding:14px 15px;border-radius:18px}
  .bento>.tile:has(>.kpi-top) .chip-ic, .bento>.tile.kpi-mini .chip-ic{width:32px;height:32px;border-radius:10px}
  .bento>.tile:has(>.kpi-top) .chip-ic svg, .bento>.tile.kpi-mini .chip-ic svg{width:17px;height:17px}
  .bento>.tile:has(>.kpi-top) .tile-value, .bento>.tile.kpi-mini .tile-value{font-size:24px}
  .bento>.tile:has(>.kpi-top) .kpi-num, .bento>.tile.kpi-mini .kpi-num{font-size:22px}
  .bento>.tile:has(>.kpi-top) .kpi-sub, .bento>.tile.kpi-mini .tile-sub{font-size:12px;line-height:1.35}
}

/* =====================================================================
   W3 · REPORTS — the shared preset bar fits 390px: preset tabs become
   one scrolling row, the custom range drops to its own full-width line
   with flexible date fields. Nothing is amputated any more.
   ===================================================================== */
@media (max-width:820px){
  .preset-bar{flex-wrap:wrap;gap:10px}
  .preset-bar .tabs{flex-wrap:nowrap;overflow-x:auto;max-width:100%;scrollbar-width:none;-webkit-overflow-scrolling:touch;-webkit-mask-image:linear-gradient(90deg,#000 93%,transparent);mask-image:linear-gradient(90deg,#000 93%,transparent)}
  .preset-bar .tabs::-webkit-scrollbar{display:none}
  .preset-bar .tab{flex:0 0 auto;white-space:nowrap}
  .preset-bar form{margin-left:0!important;width:100%;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .preset-bar form input[type="date"]{flex:1 1 128px;min-width:0}
  .preset-bar form .btn{flex:1 1 100%}
  /* Reports hub: link rows are the content — keep them full tappable rows */
  .report-link{min-height:56px}
  /* Summary line stays one calm strip, never a wall */
  .summary-line{font-size:13.5px}
}

/* =====================================================================
   W2c · SATHI FAB DISCIPLINE — the FAB never sits on forms or money:
   it hides while its own panel is open, slides away on scroll-down
   (returns on scroll-up), and lifts clear of the bottom app bar.
   The hide classes are toggled from includes/sathi.php's script.
   ===================================================================== */
.sathi-fab{transition:transform .28s cubic-bezier(.2,.9,.3,1),opacity .22s ease}
.sathi-fab.fab-hidden{opacity:0;pointer-events:none;transform:translateY(14px) scale(.7)}
.sathi-fab.fab-scroll-hide{opacity:0;pointer-events:none;transform:translateY(30px) scale(.85)}
.sathi-fab.fab-guard-hide{opacity:0;pointer-events:none;transform:translateY(14px) scale(.7)}
/* Drawers/panels (z 140–150) already render above the FAB (z 120), so an
   open drawer or stock panel always covers it — no extra rule needed. */
@media (max-width:820px){
  .sathi-fab{bottom:100px}
}

/* =====================================================================
   W4 · SATHI AS A BOTTOM SHEET on phone — 92dvh, rounded top, one-line
   compact header, suggestion chips on ONE horizontal scroll row.
   ===================================================================== */
@media (max-width:820px){
  .sathi-panel{left:0;right:0;bottom:0;width:auto;height:92dvh;max-height:92dvh;border-radius:22px 22px 0 0;border-bottom:none}
  .sathi-head{padding:12px 14px;gap:10px}
  .sathi-head .sh-sub{display:none}
  .sathi-chips{flex-wrap:nowrap;overflow-x:auto;padding:8px 14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .sathi-chips::-webkit-scrollbar{display:none}
  .sathi-chip{flex:0 0 auto;white-space:nowrap}
  .sathi-input{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}
  .sathi-input .input{min-height:48px}
}

/* =====================================================================
   W2b (cont.) · THE DRAWER — on phone the sidebar is a slide-in
   drawer; its rows join the 44px floor and its section eyebrows
   leave the sub-11px zone. Desktop rail is untouched.
   ===================================================================== */
@media (max-width:820px){
  .sidebar .nav-item{min-height:44px}
  .sidebar .nav-label{font-size:11px}
  .sidebar .logout-link{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
}

/* Inventory: stock level bar inside the Qty pair (phone cards only) */.lvl-bar{display:none}
@media (max-width:767px){
  .lvl-bar{display:block;position:relative;width:112px;height:6px;border-radius:99px;background:#EFE7D6;margin-top:6px;overflow:visible}
  .lvl-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:var(--green-2,#1F7A4D)}
  .lvl-bar.low i{background:var(--bad)}
  .lvl-bar em{position:absolute;top:-3px;width:2px;height:12px;background:var(--ink);opacity:.45;border-radius:2px}
  table.data td .qty-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:2px}
}
