*{box-sizing:border-box}:root{--bg:#f4f6f9;--ink:#17202b;--muted:#667085;--card:#fff;--line:#e4e7ec;--accent:#e5a10a;--dark:#151a23;--danger:#b42318;--success:#027a48}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit}.topbar{height:68px;background:var(--dark);color:white;display:flex;align-items:center;padding:0 22px;gap:28px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:800;letter-spacing:.5px}.brandmark,.logo-big{background:var(--accent);color:#111;border-radius:10px;display:inline-grid;place-items:center;font-weight:900}.brandmark{width:36px;height:36px}.logo-big{width:72px;height:72px;font-size:38px;margin:auto}.topbar nav{display:flex;gap:16px;flex:1}.topbar nav a,.userbox a{text-decoration:none;color:#e7eaf0}.userbox{display:flex;gap:14px;align-items:center}.container{max-width:1440px;margin:auto;padding:24px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.page-head h1{margin:0 0 4px}.page-head p{margin:0;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:0 2px 8px rgba(16,24,40,.04);margin-bottom:20px}.grid{display:grid;gap:18px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.span2{grid-column:span 2}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat{background:white;border:1px solid var(--line);border-radius:16px;padding:18px}.stat small{display:block;color:var(--muted);margin-bottom:10px}.stat strong{font-size:28px}.btn{display:inline-block;border:1px solid #cfd4dc;border-radius:10px;background:white;padding:10px 14px;text-decoration:none;cursor:pointer;font:inherit}.btn.primary{background:var(--dark);border-color:var(--dark);color:white}.btn.small{padding:6px 10px;font-size:13px}.btn.full{width:100%;text-align:center;margin-top:8px}label{display:block;font-size:14px;font-weight:600;margin-bottom:14px}input,select,textarea{width:100%;padding:11px 12px;border:1px solid #cfd4dc;border-radius:9px;background:white;font:inherit;margin-top:6px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:13px;color:var(--muted)}.badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#eef2f6;font-size:12px}.badge.active,.badge.paid,.badge.free{background:#ecfdf3;color:#027a48}.badge.suspended,.badge.overdue,.badge.occupied,.badge.late{background:#fef3f2;color:#b42318}.flash,.alert{max-width:1400px;margin:14px auto;padding:12px 16px;border-radius:10px}.flash.success,.alert.success{background:#ecfdf3;color:#027a48}.flash.danger,.alert.danger{background:#fef3f2;color:#b42318}.alert.info{background:#eff8ff;color:#175cd3}.auth-wrap,.installer{min-height:100vh;display:grid;place-items:center;padding:20px;background:#10151e}.auth-card,.install-card{width:min(520px,100%);background:white;padding:32px;border-radius:20px}.auth-card{text-align:center}.auth-card form{text-align:left}.module-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.module{background:white;border:1px solid var(--line);padding:20px;border-radius:16px;text-decoration:none}.module b{display:block;font-size:18px;margin-bottom:6px}.module span{color:var(--muted)}.table-cards,.floor-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.table-card{border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px}.floor-area{margin-bottom:28px}.touch-table{min-height:132px;border-radius:18px;padding:18px;text-decoration:none;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid #d0d5dd;background:white}.touch-table strong{font-size:23px}.touch-table span,.touch-table em{margin-top:6px;color:var(--muted);font-style:normal}.touch-table.occupied,.touch-table.bill_requested{border-color:#f79009;background:#fffaeb}.order-layout{display:grid;grid-template-columns:1fr 360px;gap:22px}.ticket{position:sticky;top:88px;height:max-content}.category-tabs{display:flex;gap:8px;overflow:auto;margin-bottom:16px}.catbtn{padding:10px 15px;border-radius:999px;border:1px solid var(--line);background:white;white-space:nowrap}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.product-btn{min-height:128px;background:white;border:1px solid var(--line);border-radius:15px;padding:15px;text-align:left;display:flex;flex-direction:column;justify-content:space-between}.product-btn b{font-size:17px}.product-btn span{font-weight:800}.product-btn small{color:var(--muted)}.ticket-line,.ticket-total{display:flex;justify-content:space-between;gap:12px;padding:8px 0}.ticket-total strong{font-size:25px}.kds-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:15px;align-items:start}.kds-station{background:#e8ebf0;border-radius:16px;padding:12px;min-height:300px}.kds-station h2{margin:4px 4px 12px}.kds-ticket{background:white;border-left:6px solid #12b76a;border-radius:12px;padding:14px;margin-bottom:12px}.kds-ticket.warn{border-left-color:#f79009}.kds-ticket.late{border-left-color:#d92d20}.kds-ticket header{display:flex;justify-content:space-between}.kds-ticket h3{margin:14px 0}.inline-form{display:grid;grid-template-columns:1fr 1fr 90px auto;gap:10px;align-items:end}.empty{text-align:center;color:var(--muted);padding:40px}.empty.small{padding:15px}.install-card{width:min(760px,100%)}hr{border:0;border-top:1px solid var(--line);margin:20px 0}@media(max-width:800px){.container{padding:14px}.topbar{height:auto;min-height:64px;flex-wrap:wrap;padding:10px 14px}.topbar nav{order:3;width:100%;overflow:auto}.userbox span{display:none}.grid.two,.stats,.module-grid,.order-layout{grid-template-columns:1fr}.span2{grid-column:auto}.ticket{position:static}.inline-form{grid-template-columns:1fr}.touch-table{min-height:110px}.product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-head.touch-head{align-items:flex-start}}