.layout{display:flex;min-height:100vh}.sidebar{width:var(--shell-sidebar-width);background:linear-gradient(180deg,var(--shell-sidebar-start) 0%,var(--shell-sidebar-end) 100%);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.logo{display:flex;align-items:center;gap:12px;padding:var(--space-6);border-bottom:1px solid rgba(255,255,255,.1)}.logo-image{width:40px;height:40px;object-fit:contain}.logo-text{font-size:22px;font-weight:600;color:#fff}.menu{flex:1;padding:16px 12px;overflow-y:auto}.menu .menu-item-wrapper{margin-bottom:2px}.menu .menu-item-wrapper .menu-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:12px 16px;color:#ffffffb3;text-decoration:none;border-radius:var(--radius-control);border:0;background:transparent;font:inherit;text-align:left;transition:background-color .2s,color .2s,box-shadow .2s;cursor:pointer;-webkit-user-select:none;user-select:none}.menu .menu-item-wrapper .menu-item:focus-visible{outline:2px solid var(--primary-light);outline-offset:2px}.menu .menu-item-wrapper .menu-item .menu-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.menu .menu-item-wrapper .menu-item .menu-label{flex:1;font-size:14px}.menu .menu-item-wrapper .menu-item .expand-icon{color:#ffffff80;transition:transform .2s}.menu .menu-item-wrapper .menu-item:hover{background:#ffffff1a;color:#fff}.menu .menu-item-wrapper .menu-item.active{background:linear-gradient(135deg,var(--primary-color),var(--primary-light));color:#fff;box-shadow:0 4px 12px #ff6b3542}.menu .menu-item-wrapper .sub-menu{overflow:hidden}.menu .menu-item-wrapper .sub-menu .menu-item{padding-left:48px;font-size:13px}.menu .menu-item-wrapper .sub-menu .sub-menu .menu-item{padding-left:64px}.sidebar-footer{padding:16px;border-top:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:space-between}.sidebar-footer .user-info{display:flex;align-items:center;gap:var(--space-3)}.sidebar-footer .user-info .avatar{width:40px;height:40px;background:linear-gradient(135deg,var(--primary-color),var(--primary-light));border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600}.sidebar-footer .user-info .info{display:flex;flex-direction:column}.sidebar-footer .user-info .info .username{font-size:14px;color:#fff;font-weight:500}.sidebar-footer .user-info .info .role{font-size:12px;color:#ffffff80}.sidebar-footer .logout-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:none;border-radius:var(--radius-control);color:#ffffffb3;cursor:pointer}.sidebar-footer .logout-btn:focus-visible{outline:2px solid var(--primary-light);outline-offset:2px}.sidebar-footer .logout-btn:hover{background:#fff3;color:#fff}.main{flex:1;margin-left:var(--shell-sidebar-width);width:calc(100% - var(--shell-sidebar-width));min-width:0;display:flex;flex-direction:column}.header{height:var(--shell-header-height);background:var(--color-surface);border-bottom:1px solid var(--color-line-subtle);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-6);position:sticky;top:0;z-index:50}.header .header-title{font-size:18px;font-weight:600;color:var(--color-ink)}.header .header-actions .current-time{font-size:14px;color:var(--color-text-muted)}.content{flex:1;min-width:0;padding:var(--space-6);background:var(--color-canvas)}.page-placeholder{display:flex;align-items:center;justify-content:center;min-height:400px;background:var(--color-surface);border-radius:var(--radius-card);color:var(--color-text-muted);font-size:16px;box-shadow:var(--shadow-card)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 78% 18%,rgba(255,142,83,.28),transparent 32%),linear-gradient(135deg,var(--shell-sidebar-end) 0%,var(--shell-sidebar-start) 62%,var(--primary-dark) 150%)}.login-container{width:400px;background:#fff;border:1px solid rgba(255,255,255,.5);border-radius:var(--radius-modal);padding:44px;box-shadow:var(--shadow-modal)}.login-header{text-align:center;margin-bottom:40px}.login-logo{width:60px;height:60px;object-fit:contain;margin-bottom:12px}.login-header h1{font-size:28px;font-weight:600;color:var(--color-ink);margin:0}.login-header p{font-size:14px;color:var(--color-text-muted);margin-top:8px}.login-form .form-group{margin-bottom:20px}.login-form .input-wrapper{display:flex;align-items:center;border:1px solid var(--color-line);border-radius:var(--radius-control);padding:0 16px;transition:border-color .2s}.login-form .input-wrapper:focus-within{border-color:var(--primary-color);box-shadow:0 0 0 3px var(--color-focus-ring)}.login-form .input-wrapper .input-icon{width:20px;height:20px;color:var(--color-text-muted)}.login-form .input-wrapper input{flex:1;height:52px;border:none;outline:none;font-size:15px;margin-left:12px}.login-form .input-wrapper input::placeholder{color:var(--color-text-placeholder)}.login-form .input-wrapper .toggle-password{background:none;border:none;padding:0;color:var(--color-text-muted);cursor:pointer}.login-form .input-wrapper .toggle-password:hover{color:var(--color-text-secondary)}.login-form .error-message{color:var(--color-danger);font-size:14px;margin-bottom:16px;text-align:center}.login-form .login-btn{width:100%;height:52px;background:linear-gradient(135deg,var(--primary-color),var(--primary-light));border:none;border-radius:var(--radius-control);color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .2s}.login-form .login-btn:hover{opacity:.9}.login-form .login-btn:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:32px;text-align:center}.login-footer p{font-size:13px;color:var(--color-text-muted);margin:0}@tailwind base;@tailwind components;@tailwind utilities;:root{--primary-color: #ff6b35;--primary-light: #ff8e53;--primary-dark: #e55a28;--accent: #ff3d68;--gold: #ffd93d;--color-canvas: #f5f5f5;--color-surface: #ffffff;--color-surface-subtle: #fafbfb;--color-ink: #2d3436;--color-text: #333333;--color-text-secondary: #636e72;--color-text-muted: #899194;--color-text-placeholder: #a7afb2;--color-line: #dfe4e6;--color-line-subtle: #edf0f1;--color-success: #4caf50;--color-warning: #ff9800;--color-danger: #f44336;--color-info: #2196f3;--color-primary-soft: #fff3ed;--color-focus-ring: rgba(255, 107, 53, .16);--shell-sidebar-start: #2d3436;--shell-sidebar-end: #1a1d1e;--shell-sidebar-width: 260px;--shell-header-height: 64px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-control: 10px;--radius-card: 12px;--radius-modal: 16px;--radius-pill: 999px;--shadow-card: 0 2px 8px rgba(29, 40, 43, .06);--shadow-menu: 0 16px 34px rgba(29, 40, 43, .18);--shadow-modal: 0 18px 54px rgba(29, 40, 43, .2);--dark: var(--color-ink);--gray: var(--color-text-secondary)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--color-canvas);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;margin:0}*{box-sizing:border-box}button,input,select,textarea{font-family:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}::selection{background:#ff6b3533;color:var(--color-ink)}.management-toolbar.management-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)!important;flex-wrap:wrap;margin-bottom:var(--space-5);padding:var(--space-4) var(--space-5)!important;border:1px solid var(--color-line-subtle);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card)}.management-toolbar__main,.management-toolbar__filters,.management-toolbar__actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.management-toolbar__main{flex:1 1 480px;min-width:0}.management-toolbar__filters{flex:1 1 auto;min-width:0}.management-toolbar__actions{margin-left:auto;justify-content:flex-end}.management-toolbar--actions-only.management-toolbar--actions-only{justify-content:flex-end}.management-toolbar .management-toolbar__main,.management-toolbar .management-toolbar__filters,.management-toolbar .management-toolbar__actions{gap:var(--space-2)!important;flex-wrap:wrap!important}.management-toolbar .management-toolbar__filters>button{height:42px;display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-4);border-radius:var(--radius-pill);white-space:nowrap}.management-toolbar .management-search.management-search{width:min(320px,100%);min-width:220px;height:42px!important;display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4)!important;border:1px solid var(--color-line)!important;border-radius:var(--radius-control)!important;background:var(--color-surface-subtle)!important;color:var(--color-text-muted);box-sizing:border-box}.management-toolbar .management-search:focus-within{border-color:var(--primary-color)!important;background:var(--color-surface)!important;box-shadow:0 0 0 3px var(--color-focus-ring)}.management-toolbar .management-search input{width:100%;min-width:0;height:100%;padding:0;border:0;outline:0;background:transparent;color:var(--color-ink);font-size:14px}.management-toolbar .management-search input::placeholder{color:var(--color-text-placeholder)}.management-toolbar__field{display:flex;flex-direction:column;gap:6px;min-width:220px;color:var(--color-text-secondary);font-size:13px}.management-toolbar__field input,.management-toolbar__field select{height:42px;padding:0 var(--space-3);border:1px solid var(--color-line);border-radius:var(--radius-control);outline:0;background:var(--color-surface);color:var(--color-ink);font-size:14px}.management-toolbar__field input:focus,.management-toolbar__field select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px var(--color-focus-ring)}.management-primary-button,.management-secondary-button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:0 17px!important;border-radius:var(--radius-pill)!important;font-size:14px;font-weight:500;white-space:nowrap;cursor:pointer;transition:border-color .2s,color .2s,background .2s,box-shadow .2s,transform .2s}.management-primary-button{border:1px solid var(--primary-color)!important;background:linear-gradient(135deg,var(--primary-color),var(--primary-light))!important;color:#fff!important;box-shadow:0 4px 12px #ff6b3538}.management-primary-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 16px #ff6b354d}.management-secondary-button{border:1px solid var(--color-line)!important;background:var(--color-surface)!important;color:#455054!important}.management-secondary-button:hover:not(:disabled){border-color:var(--primary-color)!important;color:var(--primary-dark)!important;background:#fff8f4!important}.management-primary-button:disabled,.management-secondary-button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:900px){.management-toolbar.management-toolbar{align-items:stretch}.management-toolbar__main,.management-toolbar__filters,.management-toolbar__actions{flex-basis:100%}.management-toolbar__actions{margin-left:0;justify-content:flex-start}.management-toolbar .management-search.management-search{width:100%}}.app-loading{min-height:100vh;display:grid;place-items:center;color:var(--color-text-secondary);background:var(--color-canvas)}.auth-load-error{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center;color:var(--color-text-secondary);background:var(--color-canvas)}.auth-load-error h1{margin:0;color:var(--color-ink);font-size:24px}.auth-load-error p{margin:0;max-width:520px}.auth-load-error button{border:0;border-radius:8px;padding:10px 18px;background:var(--primary-color);color:#fff;cursor:pointer}.result-page{min-height:460px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px;border:1px solid var(--color-line-subtle);border-radius:var(--radius-card);background:var(--color-surface);color:var(--color-text-secondary);box-shadow:var(--shadow-card)}.result-page svg{color:var(--primary-color)}.result-page h1{margin:12px 0 0;color:var(--color-ink);font-size:48px}.result-page h2{margin:4px 0 8px;color:var(--color-ink)}.result-page p{max-width:520px;line-height:1.7}.result-page a{margin-top:10px;border-radius:8px;padding:9px 16px;background:var(--primary-color);color:#fff;text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.pagination{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);border:1px solid var(--color-line-subtle);background:var(--color-surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card);margin-top:var(--space-5)}.pagination-info{color:var(--gray);font-size:14px}.pagination-info .page-size-select{margin:0 8px;padding:4px 8px;border:1px solid var(--color-line);border-radius:6px;background:var(--color-surface);color:var(--color-ink);font-size:14px;cursor:pointer}.pagination-info .page-size-select:hover{border-color:var(--primary-color)}.pagination-controls{display:flex;align-items:center;gap:12px}.pagination-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;border:1px solid var(--color-line);border-radius:8px;background:var(--color-surface);color:var(--color-ink);font-size:14px;cursor:pointer;transition:border-color .2s ease,color .2s ease,background-color .2s ease}.pagination-btn:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.pagination-btn:hover:not(:disabled){border-color:var(--primary-color);color:var(--primary-color);background:var(--color-primary-soft)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-page-info{color:var(--gray);font-size:14px;min-width:60px;text-align:center}@media(max-width:900px){.pagination{align-items:stretch;flex-wrap:wrap}.pagination-info,.pagination-controls{flex:1 1 100%}.pagination-controls{justify-content:space-between}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.merchant-page .table-container,.category-page .table-container,.menu-page .table-container,.admin-page .table-container,.role-page .table-container,.user-page .table-container,.dashboard .stat-card,.dashboard .chart-card,.dashboard .recent-card{border:1px solid var(--color-line-subtle);border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card)}.dashboard .stat-card .stat-value,.dashboard .chart-card h3,.dashboard .recent-card h3{color:var(--color-ink)}.dashboard .stat-card .stat-label,.dashboard .loading-state,.dashboard .empty-chart,.dashboard .empty-table{color:var(--color-text-muted)}.merchant-page .data-table th,.merchant-page .data-table td,.category-page .data-table th,.category-page .data-table td,.menu-page .data-table th,.menu-page .data-table td,.admin-page .data-table th,.admin-page .data-table td,.role-page .data-table th,.role-page .data-table td,.user-page .data-table th,.user-page .data-table td{border-color:var(--color-line-subtle)}.merchant-page .data-table th,.category-page .data-table th,.menu-page .data-table th,.admin-page .data-table th,.role-page .data-table th,.user-page .data-table th{background:var(--color-surface-subtle);color:var(--color-text-secondary);font-weight:600}.merchant-page .data-table tbody tr:hover,.category-page .data-table tbody tr:hover,.menu-page .data-table tbody tr:hover,.admin-page .data-table tbody tr:hover,.role-page .data-table tbody tr:hover,.user-page .data-table tbody tr:hover{background:#fffaf7}.merchant-page .action-btn,.category-page .action-btn,.menu-page .action-btn,.admin-page .action-btn,.role-page .action-btn,.user-page .action-btn{width:34px;height:34px;border-radius:8px;transition:border-color .2s,color .2s,background-color .2s,transform .2s}.merchant-page .action-btn:hover:not(:disabled),.category-page .action-btn:hover:not(:disabled),.menu-page .action-btn:hover:not(:disabled),.admin-page .action-btn:hover:not(:disabled),.role-page .action-btn:hover:not(:disabled),.user-page .action-btn:hover:not(:disabled){transform:translateY(-1px)}.category-page .modal-overlay,.merchant-page .modal-overlay,.menu-page .modal-overlay,.admin-page .modal-overlay,.role-page .modal-overlay,.user-page .modal-overlay{background:#181e208c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.category-page .modal-content,.merchant-page .modal-content,.menu-page .modal-content,.admin-page .modal-content,.role-page .modal-content,.user-page .modal-content{border:1px solid rgba(223,228,230,.9);border-radius:var(--radius-modal);box-shadow:var(--shadow-modal)}.category-page .modal-header,.merchant-page .modal-header,.menu-page .modal-header,.admin-page .modal-header,.role-page .modal-header,.user-page .modal-header{background:var(--color-surface);border-bottom-color:var(--color-line-subtle)}.category-page .modal-footer,.merchant-page .modal-footer,.menu-page .modal-footer,.admin-page .modal-footer,.role-page .modal-footer,.user-page .modal-footer{background:var(--color-surface-subtle);border-top-color:var(--color-line-subtle)}.category-page .modal-content input,.category-page .modal-content select,.category-page .modal-content textarea,.merchant-page .modal-content input,.merchant-page .modal-content select,.merchant-page .modal-content textarea,.menu-page .modal-content input,.menu-page .modal-content select,.menu-page .modal-content textarea,.admin-page .modal-content input,.admin-page .modal-content select,.admin-page .modal-content textarea,.role-page .modal-content input,.role-page .modal-content select,.role-page .modal-content textarea,.user-page .modal-content input,.user-page .modal-content select,.user-page .modal-content textarea{border-color:var(--color-line);border-radius:var(--radius-control);color:var(--color-ink)}.category-page .modal-content input:focus,.category-page .modal-content select:focus,.category-page .modal-content textarea:focus,.merchant-page .modal-content input:focus,.merchant-page .modal-content select:focus,.merchant-page .modal-content textarea:focus,.menu-page .modal-content input:focus,.menu-page .modal-content select:focus,.menu-page .modal-content textarea:focus,.admin-page .modal-content input:focus,.admin-page .modal-content select:focus,.admin-page .modal-content textarea:focus,.role-page .modal-content input:focus,.role-page .modal-content select:focus,.role-page .modal-content textarea:focus,.user-page .modal-content input:focus,.user-page .modal-content select:focus,.user-page .modal-content textarea:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px var(--color-focus-ring)}.category-page .btn-submit,.merchant-page .btn-submit,.menu-page .btn-submit,.admin-page .btn-submit,.role-page .btn-submit,.user-page .btn-submit{border-color:var(--primary-color);background:linear-gradient(135deg,var(--primary-color),var(--primary-light));border-radius:var(--radius-control)}.category-page .btn-cancel,.merchant-page .btn-cancel,.menu-page .btn-cancel,.admin-page .btn-cancel,.role-page .btn-cancel,.user-page .btn-cancel{border:1px solid var(--color-line);border-radius:var(--radius-control);background:var(--color-surface);color:var(--color-text-secondary)}@media(max-width:720px){.category-page .modal-overlay,.merchant-page .modal-overlay,.menu-page .modal-overlay,.admin-page .modal-overlay,.role-page .modal-overlay,.user-page .modal-overlay{align-items:flex-end;padding:12px}.category-page .modal-content,.merchant-page .modal-content,.menu-page .modal-content,.admin-page .modal-content,.role-page .modal-content,.user-page .modal-content{width:100%;max-width:100%;max-height:calc(100vh - 24px);border-radius:var(--radius-modal) var(--radius-modal) 10px 10px}}
