:root{--color-primary: #FF5A36;--color-primary-dark: #E1431F;--color-primary-light: #FFE7DF;--color-accent: #2EB872;--color-accent-light: #E3F8EE;--color-warning: #F5A623;--color-warning-light: #FEF3DE;--color-danger: #E63946;--color-danger-light: #FCE6E8;--color-bg: #FBF7F3;--color-surface: #FFFFFF;--color-text: #2B2118;--color-text-muted: #8C8279;--color-border: #F0E7DE;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-pill: 999px;--shadow-sm: 0 1px 3px rgba(43, 33, 24, .06);--shadow-md: 0 4px 16px rgba(43, 33, 24, .08);--shadow-lg: 0 8px 30px rgba(43, 33, 24, .12);--font-display: "Outfit", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--header-h: 60px;--bottom-nav-h: 64px;--max-app-width: 480px}*{box-sizing:border-box}html,body{margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);margin:0;font-weight:700;letter-spacing:-.01em}p{margin:0}a{color:inherit;text-decoration:none}button{font-family:var(--font-body);cursor:pointer}img{max-width:100%;display:block}.app-root{min-height:100vh;background:var(--color-bg);display:flex;justify-content:center}.app-shell{width:100%;max-width:var(--max-app-width);min-height:100vh;background:var(--color-bg);position:relative;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}@media (min-width: 540px){.app-shell{margin:16px 0;min-height:calc(100vh - 32px);border-radius:var(--radius-lg);overflow:hidden}}.app-main{flex:1;padding-bottom:calc(var(--bottom-nav-h) + 16px)}.app-main.no-bottom-nav{padding-bottom:16px}.topbar{position:sticky;top:0;z-index:20;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.topbar h1{font-size:18px}.topbar-sub{font-size:12px;color:var(--color-text-muted);margin-top:2px}.brand{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:800;font-size:20px;color:var(--color-primary)}.brand-mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--color-primary),#FF8A5B);display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;flex-shrink:0}.icon-btn{width:38px;height:38px;border-radius:var(--radius-pill);border:1px solid var(--color-border);background:var(--color-surface);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--color-text);position:relative;flex-shrink:0}.icon-btn .badge-dot{position:absolute;top:-4px;right:-4px;background:var(--color-primary);color:#fff;font-size:10px;font-weight:700;border-radius:var(--radius-pill);min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid var(--color-surface)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--max-app-width);background:var(--color-surface);border-top:1px solid var(--color-border);display:flex;justify-content:space-around;align-items:center;height:var(--bottom-nav-h);padding-bottom:env(safe-area-inset-bottom);z-index:30}@media (min-width: 540px){.bottom-nav{border-radius:0 0 var(--radius-lg) var(--radius-lg)}}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;color:var(--color-text-muted);height:100%;transition:color .15s;background:none;border:none}.nav-item .nav-icon{font-size:20px;line-height:1;position:relative;display:inline-flex}.nav-item .nav-icon .badge-dot{position:absolute;top:-6px;right:-10px;background:var(--color-primary);color:#fff;font-size:10px;font-weight:700;border-radius:var(--radius-pill);min-width:16px;height:16px;display:flex;align-items:center;justify-content:center;padding:0 3px;border:2px solid var(--color-surface)}.nav-item.active{color:var(--color-primary)}.page{padding:16px}.page-header{margin-bottom:16px}.page-header h2{font-size:22px}.page-header p{color:var(--color-text-muted);font-size:13px;margin-top:4px}.section-title{font-size:15px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.section-title .link{font-size:12px;font-weight:600;color:var(--color-primary);background:none;border:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius-md);padding:12px 18px;font-size:14px;font-weight:700;font-family:var(--font-body);transition:transform .05s,opacity .15s,background .15s;white-space:nowrap}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-outline{background:transparent;border:1.5px solid var(--color-border);color:var(--color-text)}.btn-accent{background:var(--color-accent);color:#fff}.btn-danger{background:var(--color-danger-light);color:var(--color-danger)}.btn-danger-solid{background:var(--color-danger);color:#fff}.btn-ghost{background:var(--color-primary-light);color:var(--color-primary-dark)}.btn-sm{padding:8px 12px;font-size:12.5px;border-radius:var(--radius-sm)}.btn-block{width:100%}.btn-icon-only{padding:10px;border-radius:var(--radius-pill)}.form-group{margin-bottom:14px}.label{display:block;font-size:12.5px;font-weight:700;margin-bottom:6px;color:var(--color-text)}.input,.select,.textarea{width:100%;padding:12px 14px;border-radius:var(--radius-md);border:1.5px solid var(--color-border);background:var(--color-surface);font-size:14px;font-family:var(--font-body);color:var(--color-text)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary)}.textarea{resize:vertical;min-height:80px}.input-error{border-color:var(--color-danger)}.field-hint{font-size:11.5px;color:var(--color-text-muted);margin-top:4px}.field-error{font-size:12px;color:var(--color-danger);margin-top:4px;font-weight:600}.input-row{display:flex;gap:10px}.input-row>*{flex:1}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500}.chip-group{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:8px 14px;border-radius:var(--radius-pill);border:1.5px solid var(--color-border);font-size:12.5px;font-weight:600;background:var(--color-surface);color:var(--color-text-muted)}.chip.selected{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary-dark)}.alert{padding:12px 14px;border-radius:var(--radius-md);font-size:13px;font-weight:600;margin-bottom:14px;display:flex;align-items:flex-start;gap:8px}.alert-error{background:var(--color-danger-light);color:var(--color-danger)}.alert-success{background:var(--color-accent-light);color:#1a8c56}.alert-info{background:#eaf2fe;color:#2563eb}.alert-warning{background:var(--color-warning-light);color:#b5750c}.card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);padding:14px}.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.food-card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;display:flex;flex-direction:column;position:relative}.food-card-img{width:100%;height:110px;object-fit:cover;background:var(--color-border)}.food-card-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:4px;flex:1}.food-card-title{font-size:13.5px;font-weight:700;line-height:1.3}.food-card-price{font-size:14px;font-weight:800;color:var(--color-primary-dark)}.food-card-meta{font-size:11px;color:var(--color-text-muted)}.food-card-footer{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:6px}.food-row{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--color-border)}.food-row:last-child{border-bottom:none}.food-row-img{width:84px;height:84px;border-radius:var(--radius-md);object-fit:cover;flex-shrink:0;background:var(--color-border)}.food-row-content{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.food-row-title{font-size:14px;font-weight:700}.food-row-desc{font-size:12px;color:var(--color-text-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.food-row-footer{display:flex;align-items:center;justify-content:space-between;margin-top:4px}.kitchen-card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;display:flex;flex-direction:column;margin-bottom:12px}.kitchen-card-img{width:100%;height:130px;object-fit:cover;background:var(--color-border)}.kitchen-card-body{padding:12px 14px}.kitchen-card-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.kitchen-card-title{font-size:15px;font-weight:800}.kitchen-card-desc{font-size:12px;color:var(--color-text-muted);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kitchen-card-meta{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:12px;color:var(--color-text-muted)}.stepper{display:flex;align-items:center;gap:8px;background:var(--color-primary-light);border-radius:var(--radius-pill);padding:2px}.stepper button{width:26px;height:26px;border-radius:var(--radius-pill);border:none;background:var(--color-primary);color:#fff;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center}.stepper button:disabled{background:var(--color-border);color:var(--color-text-muted)}.stepper .qty{min-width:18px;text-align:center;font-weight:700;font-size:13px;color:var(--color-primary-dark)}.add-btn{background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-pill);padding:6px 16px;font-size:12px;font-weight:800}.add-btn:disabled{background:var(--color-border);color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:var(--radius-pill);text-transform:capitalize}.badge-success{background:var(--color-accent-light);color:#1a8c56}.badge-warning{background:var(--color-warning-light);color:#b5750c}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.badge-muted{background:var(--color-border);color:var(--color-text-muted)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary-dark)}.badge-info{background:#eaf2fe;color:#2563eb}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:14px}.stat-card .stat-value{font-size:22px;font-weight:800;font-family:var(--font-display)}.stat-card .stat-label{font-size:11.5px;color:var(--color-text-muted);font-weight:600;margin-top:2px}.bar-chart{display:flex;align-items:flex-end;gap:8px;height:140px;padding:10px 4px 0}.bar-chart-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}.bar-chart-bar{width:100%;max-width:28px;background:linear-gradient(180deg,var(--color-primary),#FF8A5B);border-radius:6px 6px 2px 2px;min-height:4px}.bar-chart-label{font-size:10.5px;color:var(--color-text-muted);font-weight:600}.order-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:14px;margin-bottom:12px}.order-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px}.order-card-title{font-size:14px;font-weight:800}.order-card-sub{font-size:11.5px;color:var(--color-text-muted);margin-top:2px}.order-items-list{font-size:12.5px;color:var(--color-text);margin:8px 0}.order-items-list .item-line{display:flex;justify-content:space-between;padding:3px 0}.order-items-list .item-line span:first-child{color:var(--color-text-muted)}.order-card-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--color-border);padding-top:8px;margin-top:4px}.order-actions{display:flex;gap:8px;margin-top:10px}.order-actions .btn{flex:1}.status-timeline{display:flex;flex-direction:column;gap:0}.timeline-step{display:flex;gap:12px;position:relative;padding-bottom:22px}.timeline-step:last-child{padding-bottom:0}.timeline-dot{width:22px;height:22px;border-radius:50%;background:var(--color-border);color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0;z-index:1}.timeline-step.done .timeline-dot{background:var(--color-accent);color:#fff}.timeline-step.current .timeline-dot{background:var(--color-primary);color:#fff}.timeline-line{position:absolute;left:11px;top:22px;bottom:0;width:2px;background:var(--color-border)}.timeline-step.done .timeline-line{background:var(--color-accent)}.timeline-content{padding-top:2px}.timeline-title{font-size:13px;font-weight:700}.timeline-time{font-size:11px;color:var(--color-text-muted)}.search-bar{display:flex;align-items:center;gap:10px;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-pill);padding:10px 16px}.search-bar input{border:none;outline:none;flex:1;font-size:14px;background:transparent;font-family:var(--font-body);color:var(--color-text)}.search-bar .search-icon{color:var(--color-text-muted)}.tabs{display:flex;gap:6px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:4px;margin-bottom:14px;overflow-x:auto}.tab{flex:1;text-align:center;padding:9px 12px;border-radius:var(--radius-pill);font-size:12.5px;font-weight:700;color:var(--color-text-muted);white-space:nowrap;background:none;border:none}.tab.active{background:var(--color-primary);color:#fff}.empty-state{text-align:center;padding:50px 20px;color:var(--color-text-muted)}.empty-state .emoji{font-size:42px;margin-bottom:10px}.empty-state h3{font-size:15px;margin-bottom:4px;color:var(--color-text)}.empty-state p{font-size:13px}.loader-wrap{display:flex;align-items:center;justify-content:center;padding:60px 0}.spinner{width:32px;height:32px;border:3px solid var(--color-primary-light);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.cart-floating-bar{position:fixed;bottom:calc(var(--bottom-nav-h) + 12px);left:50%;transform:translate(-50%);max-width:calc(var(--max-app-width) - 32px);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);padding:14px 16px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-lg);z-index:25;font-weight:700;font-size:13px;border:none;width:calc(100% - 32px)}.cart-floating-bar .cart-bar-cta{display:flex;align-items:center;gap:6px}.auth-page{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:32px 24px;background:linear-gradient(160deg,var(--color-primary) 0%,#FF8A5B 45%,var(--color-bg) 45%)}.auth-hero{text-align:center;color:#fff;margin-bottom:24px}.auth-hero .brand-mark{width:56px;height:56px;font-size:28px;margin:0 auto 12px;background:#fff3}.auth-hero h1{font-size:26px;color:#fff}.auth-hero p{font-size:13px;opacity:.9;margin-top:4px}.auth-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-lg)}.auth-card h2{font-size:19px;margin-bottom:4px}.auth-card .sub{font-size:13px;color:var(--color-text-muted);margin-bottom:18px}.auth-switch{text-align:center;font-size:13px;color:var(--color-text-muted);margin-top:16px}.auth-switch button.link-btn{color:var(--color-primary);font-weight:700;background:none;border:none;padding:0;font-size:13px}.role-select{display:flex;gap:8px;margin-bottom:18px}.role-select .role-option{flex:1;border:1.5px solid var(--color-border);border-radius:var(--radius-md);padding:12px 8px;text-align:center;font-size:12.5px;font-weight:700;color:var(--color-text-muted);background:var(--color-surface)}.role-select .role-option.selected{border-color:var(--color-primary);background:var(--color-primary-light);color:var(--color-primary-dark)}.role-select .role-option .role-icon{font-size:22px;display:block;margin-bottom:4px}.demo-hint{background:var(--color-accent-light);border-radius:var(--radius-md);padding:10px 12px;font-size:11.5px;color:#1a8c56;margin-top:14px;line-height:1.5}.stars{display:inline-flex;gap:2px;color:var(--color-warning);font-size:14px}.stars.interactive span{cursor:pointer;font-size:26px}.rating-pill{display:inline-flex;align-items:center;gap:4px;background:var(--color-accent-light);color:#1a8c56;font-weight:800;font-size:12px;padding:3px 8px;border-radius:var(--radius-pill)}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-row{display:flex;align-items:center;gap:8px}.muted{color:var(--color-text-muted)}.small{font-size:12px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-12{margin-bottom:12px}.divider{height:1px;background:var(--color-border);margin:14px 0}.avatar{width:44px;height:44px;border-radius:50%;background:var(--color-primary-light);color:var(--color-primary-dark);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;flex-shrink:0}.list-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--color-border)}.list-item:last-child{border-bottom:none}.toggle{position:relative;width:44px;height:26px;border-radius:var(--radius-pill);background:var(--color-border);border:none;flex-shrink:0;transition:background .2s}.toggle.on{background:var(--color-accent)}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s}.toggle.on:after{transform:translate(18px)}.upload-box{border:1.5px dashed var(--color-border);border-radius:var(--radius-md);padding:16px;text-align:center;color:var(--color-text-muted);font-size:12.5px;cursor:pointer;position:relative;overflow:hidden}.upload-box img{width:100%;height:120px;object-fit:cover;border-radius:var(--radius-sm);margin-bottom:8px}.upload-box input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}table{width:100%;border-collapse:collapse;font-size:12.5px}th,td{padding:10px 12px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--color-border)}th{background:var(--color-bg);font-weight:700;color:var(--color-text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:none}.text-right{text-align:right}.w-full{width:100%}
