/* Reset & Base */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; background: #f5f5f5; color: #333; line-height: 1.5; } /* Screen Management */ .screen { min-height: 100vh; } .screen.hidden { display: none; } /* Login Screen */ #login-screen { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } .login-box { background: white; padding: 2.5rem; border-radius: 12px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); width: 100%; max-width: 400px; } .login-box h1 { text-align: center; margin-bottom: 1.5rem; color: #333; font-size: 1.5rem; } .login-box input { width: 100%; padding: 0.75rem 1rem; margin-bottom: 1rem; border: 1px solid #ddd; border-radius: 6px; font-size: 1rem; } .login-box input:focus { outline: none; border-color: #667eea; } .login-box button { width: 100%; padding: 0.75rem; background: #667eea; color: white; border: none; border-radius: 6px; font-size: 1rem; cursor: pointer; transition: background 0.2s; } .login-box button:hover { background: #5a67d8; } .error { color: #dc2626; font-size: 0.875rem; margin-top: 0.5rem; } /* App Header */ .app-header { background: white; border-bottom: 1px solid #e5e7eb; padding: 1rem 2rem; display: flex; justify-content: space-between; align-items: center; } .app-header h1 { font-size: 1.25rem; color: #333; } .app-header nav { display: flex; gap: 0.5rem; } .nav-btn { padding: 0.5rem 1rem; border: none; background: transparent; color: #6b7280; cursor: pointer; border-radius: 6px; transition: all 0.2s; } .nav-btn:hover { background: #f3f4f6; } .nav-btn.active { background: #667eea; color: white; } #logout-btn { padding: 0.5rem 1rem; border: 1px solid #dc2626; background: transparent; color: #dc2626; cursor: pointer; border-radius: 6px; margin-left: 1rem; } #logout-btn:hover { background: #dc2626; color: white; } /* Main Content */ .app-main { padding: 2rem; max-width: 1400px; margin: 0 auto; } /* View Management */ .view { display: none; } .view.active { display: block; } /* Dashboard */ .dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; } .stat-card { background: white; padding: 1.5rem; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .stat-card h3 { font-size: 0.875rem; color: #6b7280; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; } .stat-value { font-size: 2.5rem; font-weight: 700; color: #333; } .stat-label { font-size: 0.875rem; color: #9ca3af; } .today-list { background: white; padding: 1.5rem; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .today-list h2 { margin-bottom: 1rem; font-size: 1.25rem; } .reservation-item { display: flex; justify-content: space-between; padding: 1rem; border-bottom: 1px solid #f3f4f6; } .reservation-item:last-child { border-bottom: none; } .reservation-time { font-weight: 600; color: #667eea; } .reservation-guests { color: #6b7280; } .reservation-name { font-weight: 500; } /* Floor Plan */ .floorplan-header { display: flex; gap: 1rem; margin-bottom: 1rem; align-items: center; } .floorplan-container { background: white; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); min-height: 500px; padding: 2rem; position: relative; } .floorplan-area { position: relative; width: 100%; height: 450px; background: #f9fafb; border: 2px dashed #d1d5db; border-radius: 8px; } .table { position: absolute; background: #22c55e; border: 2px solid #16a34a; border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s; color: white; font-weight: 600; user-select: none; } .table:hover { transform: scale(1.05); } .table.occupied { background: #ef4444; border-color: #dc2626; } .table.selected { background: #f59e0b; border-color: #d97706; } .table.merged { background: #8b5cf6; border-color: #7c3aed; } .table.circle { border-radius: 50%; } .floorplan-legend { display: flex; gap: 2rem; margin-top: 1rem; } .legend-item { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; } .legend-color { width: 20px; height: 20px; border-radius: 4px; } .legend-color.free { background: #22c55e; } .legend-color.occupied { background: #ef4444; } .legend-color.selected { background: #f59e0b; } /* Calendar */ .calendar-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .calendar-header button { padding: 0.5rem 1rem; background: white; border: 1px solid #d1d5db; border-radius: 6px; cursor: pointer; } .calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; background: #e5e7eb; border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden; } .calendar-day-header { background: #f9fafb; padding: 1rem; text-align: center; font-weight: 600; font-size: 0.875rem; } .calendar-day { background: white; min-height: 100px; padding: 0.5rem; cursor: pointer; transition: background 0.2s; } .calendar-day:hover { background: #f3f4f6; } .calendar-day.other-month { color: #9ca3af; background: #fafafa; } .calendar-day.today { background: #dbeafe; } .calendar-day.has-reservations::after { content: ''; display: block; width: 6px; height: 6px; background: #ef4444; border-radius: 50%; margin-top: 4px; } .day-number { font-weight: 500; font-size: 0.875rem; } .reservation-count { font-size: 0.75rem; color: #6b7280; margin-top: 0.25rem; } /* Reservations */ .reservations-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .reservations-list { background: white; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } /* Settings */ .settings-tabs { display: flex; gap: 0.5rem; margin-bottom: 1.5rem; border-bottom: 1px solid #e5e7eb; } .tab-btn { padding: 0.75rem 1.5rem; border: none; background: transparent; color: #6b7280; cursor: pointer; border-bottom: 2px solid transparent; } .tab-btn.active { color: #667eea; border-bottom-color: #667eea; } .tab-content { display: none; } .tab-content.active { display: block; } /* Forms */ .form-row { margin-bottom: 1rem; } .form-row label { display: block; margin-bottom: 0.25rem; font-weight: 500; font-size: 0.875rem; } .form-row input, .form-row select, .form-row textarea { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid #d1d5db; border-radius: 6px; font-size: 0.875rem; } .form-row input:focus, .form-row select:focus, .form-row textarea:focus { outline: none; border-color: #667eea; } /* Buttons */ .btn-primary { padding: 0.5rem 1rem; background: #667eea; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 0.875rem; transition: background 0.2s; } .btn-primary:hover { background: #5a67d8; } .btn-secondary { padding: 0.5rem 1rem; background: white; color: #374151; border: 1px solid #d1d5db; border-radius: 6px; cursor: pointer; font-size: 0.875rem; } .btn-secondary:hover { background: #f3f4f6; } /* Modal */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; } .modal-overlay.hidden { display: none; } .modal { background: white; border-radius: 12px; width: 100%; max-width: 500px; max-height: 90vh; overflow-y: auto; } .modal.hidden { display: none; } .modal-header { display: flex; justify-content: space-between; align-items: center; padding: 1.5rem; border-bottom: 1px solid #e5e7eb; } .modal-header h2 { font-size: 1.25rem; } .modal-close { background: none; border: none; font-size: 1.5rem; cursor: pointer; color: #6b7280; } .modal-close:hover { color: #333; } .modal form { padding: 1.5rem; } .modal-actions { display: flex; justify-content: flex-end; gap: 1rem; margin-top: 1.5rem; } /* Responsive */ @media (max-width: 768px) { .app-header { flex-direction: column; gap: 1rem; } .app-header nav { flex-wrap: wrap; justify-content: center; } .dashboard-grid { grid-template-columns: 1fr; } .floorplan-container { padding: 1rem; } }